赞
踩
-
- /*
- pc微信hook加密小程序函数
- 1. frida -p ${pid of WeChat.exe: root process}
- 2. 复制以下脚本 hook 函数 WeChatAppHost.dll:EncryptBufToFile
- 3. pc 微信界面, 左下角, 打开某个小程序, 触发 加密函数 WeChatAppHost.dll:EncryptBufToFile
- pc微信版本: 微信 3.2.1.156
- */
-
- var baseAddr = Module.findBaseAddress('WeChatAppHost.dll');
- console.log('WeChatAppHost.dll baseAddr: ' + baseAddr);
-
-
- var EncryptBufToFile = Module.findExportByName('WeChatAppHost.dll','EncryptBufToFile');
-
- if (EncryptBufToFile) {
-
- // EncryptBufToFile函数偏移地址, 从DLL中查看
- // var EncryptBufToFile = baseAddr.add(0x1800F);
- console.log('EncryptBufToFile 函数地址: ' + EncryptBufToFile);
-
- // HOOK函数, 监听参数
- Interceptor.attach(EncryptBufToFile, {
- onEnter: function (args) {
- console.log(`${args[0]},${args[1]},${args[2]},${args[3]}`);
- // 微信小程序AppId
- this.appId = ptr(args[0]).readPointer().readAnsiString();
- // 微信小程序本地缓存文件路径
- this.apkgFilePath = ptr(args[1]).readPointer().readAnsiString();
- // 小程序代码原始内容(未加密)
- this.originalData = Memory.readByteArray(args[2], args[3].toInt32());
- },
- onLeave: function (retval) {
- console.log('文件解密成功', this.apkgFilePath);
-
- // 将文件替换为未加密的wxapkg包
- var f = new File(this.apkgFilePath, 'wb');
- f.write(this.originalData);
- f.flush();
- f.close();
-
- // 释放内存
- delete this.appId;
- delete this.apkgFilePath;
- delete this.originalData;
- }
- });
-
- } else {
- console.log('WeChatAppHost.dll 模块未加载, 请先打开界面中的小程序面板');
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。