美团团购web端 mtgsig分析
2026/6/2 21:01:15 网站建设 项目流程

声明:
本文章中所有内容仅供学习交流使用,不用于其他任何目的,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关!
有相关问题请第一时间头像私信联系我删除博客!

逆向分析

部分补环境代码

!(() => { "use strict"; const $toString = Function.toString; const myFunction_toString_symbol = Symbol('('.concat('', ')_', (Math.random() + '').toString(36))); const myToString = function () { return typeof this == 'function' && this[myFunction_toString_symbol] || $toString.call(this); }; function set_native(func, key, value) { Object.defineProperty(func, key, { "enumerable": false, "configurable": true, "writable": true, "value": value }) }; delete Function.prototype['toString']; //删除原型链上的toString set_native(Function.prototype, "toString", myToString); //自己定义个getter方法 set_native(Function.prototype.toString, myFunction_toString_symbol, "function toString() { [native code] }"); //套个娃 保护一下我们定义的toString 否则就暴露了 this.func_set_natvie = (func) => { set_native(func, myFunction_toString_symbol, `function ${myFunction_toString_symbol, func.name || ''}() { [native code] }`); }; //导出函数到globalThis }).call(this); cl=console.log appkey = "" XMLHttpRequest=function(){} Window = function Window() { throw new TypeError('Illegal constructor') }; this.func_set_natvie(Window); Window.prototype.PERSISTENT = 1 Window.prototype.TEMPORARY = 0 Navigator = function Navigator() { throw new TypeError('Illegal constructor') }; this.func_set_natvie(Navigator); this.func_set_natvie(atob); this.func_set_natvie(btoa); window = global Object.defineProperties(Window.prototype, { [Symbol.toStringTag]: { value: 'Window', configurable: true } }) Object.defineProperties(Navigator.prototype, { [Symbol.toStringTag]: { value: 'Navigator', configurable: true } }) window.__proto__ = Window.prototype window.Notification = function Notification() { console.log('window.Notification', arguments) };

结果

总结

1.出于安全考虑,本章未提供完整流程,调试环节省略较多,只提供大致思路,具体细节要你自己还原,相信你也能调试出来。

侵权首页联系删除博客

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询