介绍一下背景,楼主是一个骨灰级梦幻西游玩家,最近发现了一款微信小程序,可以模拟梦幻中的一些狗托操作,比如打书啦,挖宝啦什么的。同时楼主也是小程序开发初学者,对这种鉴定装备内部实现的逻辑很好奇,抱着学习的态度,在网上苦苦找了几天方法并经历了整整四天(资质愚钝不要笑话我),实践尝试与踩坑,终于成功获得了源文件。下面专门介绍一下适合类似我这样的小白的获取方法!(只要你知道什么是小程序就可以!)
�要把大象装冰箱,拢共分几步?
第一步:把冰箱门打开;
第二步:把大象装进去;
第三步:把冰箱门带上。
要获取小程序文件包拢共分几步?
第一步:把小程序打开;
第二步:把小程序文件(.wxapkg)拿下来;
第三步:把文件还原。
正经的,完整的获取流程为:①获得小程序.wxapkg文件;②对.wxapkg进行反编译获得源文件包
为阅读方便,提供本文目录如下:
不卖关子,直接入正题
关于如何把.wxapkg文件拿到电脑上,这里提供两个方法:
方法一:使用电脑上的安卓模拟器;方法二:使用手机;下面分别进行介绍:
方法一:
·电脑下载任何一款安卓模拟器;(目前楼主亲测的几款模拟器如天天模拟器,夜神模拟器,雷电模拟器,包括腾讯手游助手在打开小程序时都会出现闪退或无法打开的现象,不过问题不大,不影响后面)
·下载微信、QQ(可在模拟器直接搜索下载),RE文件管理器(下载地址https://pan.baidu.com/s/13c8Oefg9FVzkT7-_xh6J6g,下载好后直接拖拽进打开的模拟器窗口就会自动安装)
·搜索你想获取源码的小程序,如楼主搜索“”,点击进入
·进入时可能出现异常,如腾讯手游助手会一直转圈,或提示运行环境加载失败,天天模拟器则直接闪退,不过都无所谓,不影响后面操作;
经过上一步后,打开RE文件管理器,
过程中会询问用户权限,点击允许就好了,该操作目的是为了能让RE管理器顺利的获取到ROOT权限
·打开RE文件管理器后,按照该目录/data/data/com.tencent.mm/MicroMsg/{{一串32位的16进制字符串文件夹}}/appbrand/pkg/寻找,根据时间,判断自己想要的那个小程序。
依次点击:
最后根据使用时间选择判断,没错就是他啦:
·鼠标左键长按该文件,弹出操作选项,点击右上角的三个点,向下滚动鼠标滚轮,选择压缩所选文件。压缩完后点击查看,通过QQ发送到我的电脑。(直接发送未压缩的.wxapkg文件会提示无效,因此采用压缩后发送再解压的方式。)
·解压到当前文件夹,将解压出来的.wxapkg文件随便放在一个位置,楼主直接放在D盘了
方法二:通过手机获取.wxapkg文件,这里直接给百度经验xyytwz作者的方法,通过备份微信APP,再在电脑上索引相关目录
原文https://jingyan.baidu.com/article/6d704a13529ab728da51ca4f.html
两种方法大同小异,文字虽多,操作起来很简单,目的就是为了把目标小程序的.wxapkg文件放到电脑上,以便于后面的反编译操作。
②对.wxapkg反编译获取源文件包:
此步比较难,也是楼主花费了90%时间的地方,坑也比较多,不过大家不用担心,该踩的坑我都踩了,楼主尽量讲的详细,争取让大家一次成功。
准备工作:
·node.js运行环境。首先下载一个node,下可以去官网nodejs.org/en/,楼主下载的是左边这个10.16.3LTS。
一路nxet直至finish……
参考的网上好多大神提到的需要设置环境变量,但是本人运行时没有设置环境变量也能正常运行,不过为了保险起见,还是设置一下吧~
右键我的电脑,或在文件管理器中邮件此电脑(window10),点击高级系统设置,
高级→环境变量→系统变量栏新建→输入变量名(任意取名)和变量值(楼主的NODE安装在了D盘Program Files文件夹下,各位可根据实际情况输入,但最终指向node_modules文件夹)
·打开命令提示符,分别输入node -v,npm -v,结果为版本号,说明安装成功(npm已经集成到node里不需要额外安装)
·下载反编译脚本
这里提供一个Github上 qwerty472123 大神写的node.js版本的,当然也有其它版本的,这里我只是简单地用node.js版本举例
地址:https://github.com/qwerty472123/wxappUnpacker
Clone or download→ Downliad ZIP
将下载下来的ZIP解压,解压位置里不要有汉字不要有空格(如Program Files)!否则在后面反编译时会报出莫名其妙的错误!!~楼主直接将wxappUpacker-master放在了D盘!
正戏,划重点了!
·打开node.js命令窗口,注意不是NODE.JS!好多小白容易在这里卡壳,感兴趣的可以去了解了解NODE.JS,在此不赘述。
·cd到反编译脚本目录下
本小白曾经在这又卡壳了,哭泣
其实cd是命令提示符的一个命令,可以实现不同目录的切换,更多详细用法可以百度CMD中cd命令用法。本步骤只需要在Node.js命令提示窗口中输入cd/d D:\wxappUnpacker-master
本人反编译脚本wxappUnpacker-master文件夹直接放在了D盘,若您解压到了其他路径,按照实际情况修改cd命令即可。
·在node窗口中使用npm安装7个依赖。逐条执行命令
npm install esprima;
npm install css-tree;
npm install cssbeautify;
npm install vm2;
npm install uglify-es;
npm install js-beautify;
npm install escodegen;
例如使用npm install命令安装esprima,输入后回车,会提示added 1package from……表示安装好了,其中黄色的WARN提示可不理会。
·最后一步,反编译。输入
Node wuWxapkg.js -d
file是你的.wxapkg文件的地址。例如,楼主把该文件放在了D盘,就输入
node wuWxapkg.js -d D:\_-120314697_33.wxapkg,然后回车。
最后去找和.wxapkg文件相同路径下的同名文件夹,get
如果以上操作全部正确,是可以还原出文件包的!
BONUS:
楼主在这里列出了自己这几天犯下的错误,供各位参考
坑1:cannot find module ‘escodegen’,这里的’escodegen’可以是任何7个依赖之一,例如,cannot find mudule ‘uglify-es’、cannot find mudule‘cssbeautify’、cannot find mudule‘css-tree’、等。造成这种错误的原因一般是缺少对应的依赖或者依赖安装位置不正确,重新安装即可。
坑2:SyntaxError: Invalid or unexpected token,一般是格式错误,检查语法格式。
坑3:提示语法错误,或者Microsoft JScript编译错误,这种就是因为路径中存在空格(这个也太坑了,哈哈)
坑n:破解过程中可能出现各种各样的坑和错误,自己解决不了的请联系楼主!
下篇文章分析分析这个小程序的学习成果!请期待
以下为参考大神的原文:
http://www.wxapp-union.com/portal.php?mod=view&aid=4104
http://lrdcq.com/me/read.php/66.htm