tx充值中心 web 和 h5的 save接口参数逆向;
仅供学习;
本次先学习 web_1.0.6的
目标网址:aHR0cHM6Ly9wYXkucXEuY29tLw== | q : NTQ3MzYzMTY2
web_1.0.6 encrypt_msg 基于 RSV8的补环境; ps:RSV8是 扯淡大佬封装的JS V8引擎!内置大部分浏览器环境!
正序分析:
1:以DNF为例
右键点击
去除地址中 https前面的字符 访问,在单独的窗口打开,这样方便我们调试;
首先看一下流程:
打开浏览器开发者调试工具 F12 谷歌浏览器 360急速都可以。
切换金额会再次触发请求,在调试工具的网络选项中 我们记录的请求 可以看到 web_save这个请求体;
gameBiz文件是jsvmp 这里我选择堆栈中的buy红圈部分进入查看,因为最开始的 jsvmp之前的栈是分发形式的,很绕;
进去后在此下断:
改变金额触发请求断到此处
t为 buy函数执行时传递的参数
this.store是jsvmp引出的函数,接下来我们跟栈追踪 this.store是怎么来的!
在堆栈中查看上一步
可以看到是this.buy()调用进去的。鼠标放在this上可以看到他是由构造来的,那么我们在控制台输入 this.constructor 定位构造函数点击进去 实际上就在this.buy上面几行就可以看到构造函数了。
在构造函数下断 刷新页面会断在此处;
可以发现在构造的时候 第一个参数就是我们需要的this.store 参数e 继续向上跟栈查看e的来源
规避作用域问题 在s = this下断并刷新页面 断到此处并继续向上跟栈;
继续在 n = this下断重复操作;
这样就上一个栈就是jsvmp了,继续向上走到非jsvmp的地方
可以看到是 执行了a.init后 a.init callback后执行到的a.render,这时我们需要进入a.init看看干了什么;
下断刷新:
单步进入
经分析 是根据不同类型进入不同分支,我们例子中是 i.GAME分支
t为 webpack加载器 进入t 拷贝 webpack加载器代码 导出加载器 并 如图书写 new o(e) e为构造时传递的参数 在 a.init地方过来的。
删除加载器代码中的 a(0) 的初始调用 并导出加载器
拷贝jsvmp或动态加载jsvmp的js文件 使用自定义的导出函数加载 jsvmp
执行报错
基本是缺少 webpack所用到的模块 加载了某个模块
在调试工具中 网络选项的js分类中观察 js加载顺序
依次加载
这个可以拷贝到本地后修改代码,用不到可以屏蔽部分代码,或者补齐环境,我这里发现屏蔽也是可以的。
接下来就通过hook 手动补一些RSV8欠缺的环境;
在html的源代码页面中也有部分webpack代码 其中加载器代码也是在这里,拷贝过来放在 加载器所在js文件内的下面即可;搜索webpackJsonp(定位
首页的代码补充
这里的参数 去上面 找
在搜索 xMidasToken的时候发现
所以我们还需要 找到 initXMidas的来源 并加载执行;
2022是验证码;也代表成功了;完结;如有版权问题私信联系;