1. 准备工作

2. 逆向流程

2.1. 找到微信小程序的运行时目录

打开 pc 微信窗口,然后打开任务管理器,右键【打开文件所在位置】

版本号就是【11205】

2.2. 需要逆向的文件拖入【ida pro】

打开拆解窗口

然后执行字符串化

有时候看不到紫色的引用跳转部分,可能是软件还在逆向交叉引用部分?我也不清楚,等一会就好了。

2.3. 搜索关键参数对应的参数

{
  "LaunchAppletBegin": "",
  "MenuItemDevToolsString": "",
  "SwitchVersion": "",
  "Version": 11205
}

2.3.1. 版本号_Version

就是文件路径中的数字部分【11205】

2.3.2. LaunchAppletBegin

搜索关键字WxWork isMiniGame, exit!

点击跳转;

找到特征行【SUB RSP 1D8H】

1428A070C 地址其实是先push上一个函数结束的地址后再call一下留出内存空间,最后还会pop保证堆栈平衡

去掉前面的14 第一个地址就是【0x28A070C】

{
  "LaunchAppletBegin": "0x28A070C",
  "MenuItemDevToolsString": "",
  "SwitchVersion": "",
  "Version": 11205
}

2.3.3. MenuItemDevToolsString

搜索关键字engineStart

特征位置就是 67h 0 下面这行,如果显示的是不可读的16进制字符串,按快捷键【A】进行转码

同理可得【0x28AE121】

{
  "LaunchAppletBegin": "0x28A070C",
  "MenuItemDevToolsString": "0x28AE121",
  "SwitchVersion": "",
  "Version": 11205
}

2.3.4. SwitchVersion

搜索关键字/devtools/wechat_%s.html

同理可得【0x26D1CE8】

{
  "LaunchAppletBegin": "0x28A070C",
  "MenuItemDevToolsString": "0x28AE121",
  "SwitchVersion": "0x26D1CE8",
  "Version": 11205
}

3. 项目代码修改

3.1. 新增配置

./config路径下新增新版本配置文件address_version_x64.json

{
  "LaunchAppletBegin": "0x28A070C",
  "MenuItemDevToolsString": "0x28AE121",
  "SwitchVersion": "0x26D1CE8",
  "Version": 11205
}

3.2. hook.js代码修改

这一步之前,你应该自己创建了虚拟环境

追加一个 switch_case

case 11205:
            Interceptor.attach(address.SwitchVersion, {
                onEnter(args) {
                    this.context.r8 = this.context.rax
                    sendMessage()
                }
            })
            break;

4. 然后运行项目即可

  • 创建虚拟环境:python -m venv .

  • 激活虚拟环境: .\Scripts\activate

  • 安装依赖:pip3 install -r requirements.txt

  • 执行启动命令:python main.py -x

后续只需要启动就可以了

5. 最近版本的配置记录:

{
  "LaunchAppletBegin": "0x28A070C",
  "MenuItemDevToolsString": "0x28AE121",
  "SwitchVersion": "0x26D1CE8",
  "Version": 11205
}

{
  "LaunchAppletBegin": "0x28A245C",
  "MenuItemDevToolsString": "0x28AFE71",
  "SwitchVersion": "0x26D3A38",
  "Version": 11253
}

{
  "LaunchAppletBegin": "0x28A255C",
  "MenuItemDevToolsString": "0x28AFF71",
  "SwitchVersion": "0x26D3B38",
  "Version": 11275
}

文章作者: Mark
版权声明: 本站所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 有限进步
脚本/工具 Python
喜欢就支持一下吧
打赏
微信 微信
支付宝 支付宝