反编译
使用模拟器连接微信找到小程序包并解压太麻烦。 这里推荐两种方法
MAC电脑 微信
采用第一种提到的使用现有工具的解密方法()
首先你需要安装
更新点
-m 点 --pip
安装
点3
安装-
点3-
检查是否安装成功
然后就可以按照步骤开始解密小程序包了。 小程序包的根路径
//你的用户// /..///
首先删除原来的小程序包文件夹,然后在mac pc上使用微信打开小程序。 将重新生成包文件夹以便于识别。
这时用PC打开需要反编译的小程序,就会看到该目录下生成了小程序包文件夹,顺着它找到包的绝对路径。
//用户// /..////打开小程序生成的文件夹/////4.
复制绝对路径并修改.js中的两个路径
然后开始解密,挂上小程序就可以看到进程中对应的pid
任何一个都可以。 运行后,会在.js自定义文件中生成解密后的小程序包。 接下来就是正常的拆包操作了。
电脑版微信
有高手已经写了一个解密小程序包的工具()找到微信小程序包的根路径
C:\WeChat Files\Applet\
这里我修改了虚拟机微信的文件路径。 您应该可以在设置中检查微信文件路径。
删除wx字符串开头的文件夹,方便后续定位需要反编译的小程序包路径。 然后打开小程序文件夹,生成小程序文件夹。
按照文件夹获取加密小程序包(APP.),复制绝对路径,使用工具解密。 wxid 是上一个小程序文件夹的名称。 解密成功后,会在工具同级目录下生成dec。
最后使用正常拆包
调试和解决错误
大师反编译后,得到了这样一个压缩包。 可以看到微信小程序的完整结构在
下载安装后,选择导入项目
到目前为止,一切都非常简单。 然后我看到有错误消息,所以我就修复了它们。
让我们看一下几个错误: 'e' has been 。 说明变量已经创建了,反编译时可能出现问题。
打开对应的js文件,ctrl+g输入行号快速跳转
这部分与我们需要调试的代码没有直接关系,注释掉即可。
我们再看一下下面的错误报告。 可以看到is not错误报告在es6-.js中? [sm]:196,表明该变量没有定义。
找到并查看该函数。 应该是VM2的错误信息。 我们也直接注释掉。
修改后保存点击编译
排除错误后,小程序可以正常打开请求。 基本上,如果遇到错误注释或者引入对应的库,改个名字就可以了。
调试签名
这次要解决的问题是
通过搜索代码,可以找到疑似计算签名的一段。
我们在调试器中找到代码位置,选择并单击
点击行号设置断点,再尝试一下是否会在此处暂停。
可以看到正常的断点已经到了这个位置。
第一个按钮(F8):断点间调试 第二个按钮(F10):单步调试 第三个按钮(F11):进入函数 第四个按钮(+F11):退出函数 第五个按钮(ctrl+F8) :取消所有断点
我们选择进入该函数,看看它调用了什么
当断点到达相应位置时,可以输入方法信息进行查看。 将鼠标移动到对应的变量上,就可以看到对应的值。 从这段代码的调试可以看到,等待信息是通过添加变量名和值然后拼接而成的。 ,最后添加一些其他参数md5。 这时就可以根据具体功能编写脚本进行调试。 建议直接使用js。 复制粘贴代码直接自动运行。 比如这个复杂的js场景,使用直接调用js代码分析
结合起来,还可以写相应的算法脚本,运行一下爆炸,放个js调用案例
import execjs ctx = execjs.compile(""" function add(x, y) { return x + y; } """\) print(ctx.call("add", 1, 2))