获取WeChatAppEx位置
打开任意小程序后,调出任务管理器
单机鼠标右键,选择打开文件位置,即可跳转至WeChatAppEx.exe目录
%USERPROFILE%\AppData\Roaming\Tencent\WeChat\XPlugin\Plugins\RadiumWMPF
WeChatOpenDevTools工具地址:
https://github.com/JaveleyQAQ/WeChatOpenDevTools-Python
下载后,在WeChatOpenDevTools-Python-main\configs创建address_11177_x64.json文件,文件内容如下:
{ "LaunchAppletBegin": "0x289F94C", "MenuItemDevToolsString":"0x28AD361", "SwitchVersion":"0x26D10A8", "Version":11177 }
并修改WeChatOpenDevTools-Python-main\scripts\hook.js文件
增加
case 11177: Interceptor.attach(address.SwitchVersion, { onEnter(args) { this.context.r8 = this.context.rax sendMessage() } }) break;
使用ida pro查看WeChatAppEx文件
本次需要找三个地址,首先搜索“WxWork isMiniGame, exit!” 字符串,(快捷键shift+f12)
双击鼠标左键即可进入
按一下 fn+x或者双击sub_14289F940+142↑o 直接跳转
跳转过去函数位置如下图所示
直接向上滑,找到上一个函数结束的位置
14289F94C 地址其实是先push上一个函数结束的地址后再call一下留出内存空间,最后还会pop保证堆栈平衡(大佬是这么说的)
去掉前面的14 第一个地址就是
{
"LaunchAppletBegin": "0x289F94C",
"MenuItemDevToolsString":"",
"SwitchVersion":"",
"Version":11177
}
接着,在IDA里面搜索 engineStart
在该位置的上面就是Devtools字符串,若是显示的是十六进制的,可以按A进行转码
跳转到sub_1428AD0B0地址
得到第二个地址1428AD361 ,那么就是0x28AD361
{
"LaunchAppletBegin": "0x289F94C",
"MenuItemDevToolsString":"0x28AD361",
"SwitchVersion":"",
"Version":11177
}
继续搜索 字串"/devtools/wechat_%s.html" 在其上方 cmovnz 指令处即为SwitchVersion处的地址
跳转到sub_1426D0FD0地址
找到上面的cmovnz 指令处即为SwitchVersion处的地址
1426D10A8 地址为0x26D10A8
{
"LaunchAppletBegin": "0x289F94C",
"MenuItemDevToolsString":"0x28AD361",
"SwitchVersion":"0x26D10A8",
"Version":11177
}
最后就是
保存后,执行脚本
打开小程序