小程序反编译

推荐基佬点:https://github.com/Cherrison/CrackMinApp

下载解包脚本

本教程会使用一套由qwerty472123大神提供的一套解包开源脚本,脚本git地址为:

点击去下载脚本

此套脚本为最基础的脚本,解包微信之前的版本小程序没什么问题,但是随着微信版本的更新迭代,微信对小程序防破解能力也一步步提高,我们会在此套脚本上做相应的修改调整。

下载脚本后,直接解压就可以用了。


准备设备

首先我们要从微信程序里面把小程序pkg包拉出来,可以选择一个root过的安卓手机或者在电脑上安装一个安卓模拟器,我使用的是模拟器,因为更加方便一些,推荐夜神模拟器,因为默认就是root权限。

夜神模拟器官网


环境变量

安装好模拟器后,我们需要用adb连接上模拟器,如果电脑上没有adb,点击去下载,下载完成先解压,并将解压后的路径加入环境变量PATH后面,参考如下图:

环境变量设置


连接设备

配置好环境变量后我们就可以用adb连上模拟器了,注意:夜神模拟器的adb端口为62001,但是有时候62001被占用的时候就会变成52001,所以我们使用如下命令连接模拟器,打开电脑上的终端,输入一下命令:

    adb connect 127.0.0.1:62001

如果终端上显示 connected to 127.0.0.1:62001,说明就已经连接成功了,如果提示连接失败,试试52001端口,直到提示连接上,此过程参考图如下

adb连接模拟器

注意:连接步骤只是模拟器需要,如果使用的是ROOT的安卓手机不需要。


进入设备

连接上模拟器后,我们可以使用 adb devices 命令查看adb连上的设备,如图

adb查看设备

这里会列出所有的adb设备,我们使用 adb shell 命令进入到设备的shell命令模式,如图

adb进入设备

这时候我们就已经进入到设备内部了,而且是ROOT模式,也就是说我们可以在设备上想干啥就干啥了,当然我们的目的只是找到小程序包然后下载到我们的电脑上。


找小程序包

要下载小程序,那手机上就必须有小程序包,所以我们在模拟器上安装微信,然后在微信里面打开我们要拉取的小程序,本教程还原的例子我们采用微信官方的例子  小程序示例,如果要还原其他的小程序,过程跟这里是一模一样的,安装微信和打开小程序示例过程在此省略。

打开过小程序后,小程序包就已经被下载到我们的设备里面了,具体怎么找到包参考如下:

先用命令 cd /data/data/com.tencent.mm/MicroMsg  进入到微信程序文件夹,然后用 ls 命令查看此文件夹下内容,如图

进入微信程序文件夹

这里会列出此文件夹下所有内容,我们重要关注那些32位长度的文件夹,因为这个代表用户,此设备登陆过几个微信就会几个这样的文件夹,因为我模拟器就登陆过我的微信,所以只有一个,如图

找到用户

接着我们用命令进入到用户的小程序包文件夹 cd {{你的用户}}/appbrand/pkg ,记得将{{你的用户}}替换为你自己的用户id,并用ls -l查看文件夹下所有内容,如图

进入小程序目录并列出所有的小程序

这些内容就是我们设备上所有的小程序包,画横线的地方就是下载这个小程序的时间,根据这个时间就知道是什么程序,这个时间是我打开小程序示例这个小程序的时间,所以这个小程序的包就是_820332684_40.wxapkg,接下来我们就要把包下载到我们的电脑上


下载小程序pkg包到电脑

我们重新再打开一个终端,使用命令进入到桌面  cd Desktop,然后使用命令adb pull /data/data/com.tencent.mm/MicroMsg/{{你的用户}}/appbrand/pkg/_820332684_40.wxapkg  将小程序包下载到桌面上,记得将{{你的用户}}替换为你自己的用户id,如图

下载小程序到电脑

这时候小程序包就已经下载到电脑桌面上了,图

小程序包


还原小程序

接下来我们就可以使用之前下载的解包脚本还原小程序了,在终端里面使用命令cd /d {{你电脑上的解包脚本文件夹路径}},如图:

然后执行下面命令解包小程序

node wuWxapkg.js {{你小程序pkg的路径}},如图:

解包小程序

这样这个小程序就已经还原好了,在桌面上会生成一个同名的文件夹,这个文件夹就是此小程序的工程包,可以导入到微信开发工具里面跑起来了,如图:

还原好的小程序工程

导入工程

导入开发工具

在开发工具里面正常跑起来了,这样就可以参照学习此小程序了,当然这只是最基础的解包,文章开头也说了微信对小程序的保护力度越来越高,破解的方法也越来越复杂,需要针对不同的包做各种不同的方法应对,比如目前反应会报的错误有:

__vd_version_info__ is not defined

__mainPageFrameReady__ is not defined

__wxAppCode__ is not defined 

setCssToHead is not defined 

$gwx is not defined 

$gwx0 is not defined 

$gwx1 is not defined 

$gwx2 is not defined

var _C= 错误

define( 错误

plugin 错误

等等类似这样各种各样的错误,这些错误都有办法解决,但是不同错误解决方法都不一样,所以没有通用的办法,还有就是小程序可能会使用了插件,这样上面的流程就没办法一下解包出来,还需要做另外的调整,同样如果小程序还使用了分包,另外还需要做分包的解包流程,还有个问题就是小程序服务器可能会对登陆code验证,这样我们在开发工具里面就看不到数据,这里也有办法绕过去,总之需要静下心来慢慢分析,推荐的办法就是使用vscode调试那些脚本,一步步分析具体的原因,总能找出办法破解,目前市面上95%以上的小程序都可以还原出来学习

点赞

发表评论