反编译微信小程序

前言

最近有一个任务,就是让我试下反编译微信小程序,搞起。事先说明,写这篇博客,只是为了记录过程,不建议大家都去反编译,毕竟都是别人的劳动成果。然后反编译的这个事例,也打了码。如果贵公司的人发现了,希望及早更新处理下,以免接口的泄露。

准备工具

1、node.js环境,https://nodejs.org/en/
2、反编译脚本,https://github.com/qwerty472123/wxappUnpacker
3、夜神模拟器,https://www.yeshen.com/ 主要是用来登录微信,运行小程序,然后再拿到小程序的安装包 wxapkg

1、获取小程序的安装包

1、我试了小米手机是拿不了小程序的安装包的,即使是root了也不行,目录是空的。所以,用夜神模拟器吧。打开夜神模拟器,里面有个应用中心,直接搜索微信下载安装吧。安装好微信后,登录微信,打开你想要反编译的小程序。ok,打开后,回到桌面,打开桌面的“ES文件浏览器”:


打开ES文件浏览器

打开root开关

打开根目录

然后找到这个路径:/data/data/com.tencent.mm/MicroMsg/1bd6b8205e3a41715b8e2cca72bc50f0/appbrand/pkg/
里面有你运行过的小程序安装包,把它复制到主目录,然后再通过微信发到你的电脑吧,然后就拿到了小程序的安装包。


2、下载反编译脚本到本地,并安装相关配置

脚本目录

打开命令窗口,cd到上面这个目录,然后输入以下:

npm install esprima 
npm install css-tree 
npm install cssbeautify 
npm install vm2 
npm install uglify-es 
npm install js-beautify 
npm install escodegen 

完了后,就到最后一步,输入:node wuWxapkg.js +空格+安装包目录,如下图


然后就会自动反编译,在安装包目录生成一个文件夹:


3、打开项目编译

打开微信开发工具,自己在后台创建一个小程序,拿到appid,并填进去。



点击确定后,就能进去页面了,这个时候,会提示以下错误:



这个是因为小程序的请求域名,都需要在后台配置的。所以,你需要把这个域名,在你创建的那个小程序开发设置那里,填上。填上后,重新启动开发者工具,这时,应该就正常了。如下图:

然后,我们可以看到里面的代码,都非常的清晰。



连接口都能看出来,这样别人就能直接调用这个接口了。

总结

局限(包括但可能不限于以下内容)
1、实现中很多功能基于特定的版本(wcc-v0.6vv_20180111_fbi, 且不考虑面向低版本适配)和字符串搜索,所以不能很好的适应各种特殊情况。
2、wxml 文件拥有不同于 xml 和 html 文件的字符转义规则,且尚未公开(并非"没有"),因此未能很好的还原相关内容。
3、js 文件被压缩后会丢失原始变量名等信息内容无法还原;wxss 文件压缩后的注释也会丢失。
4、wxs 文件会将所有的变量如 Math 改为 nv_Math ,这里仅通过字符串替换去除。
5、一些被引用 wxss 文件本身的源文件丢失,因此无法恢复原始目录。
6、有些项目开启了难以复原的es6转es5选项,检验本项目结果是否正确时需要关闭项目中的es6转es5选项。
7、wxml 中一些无法找到相对应 的正向语句的内容无法还原。
8、json 中components项丢失,仅会标注被其他包引用的自定义组件。

最后说两句

大家可以利用这个工具,试试自己的小程序,是否能被反编译出来,然后采取一些混淆措施等等。
尽量别动坏心机,造成商业犯罪就不好了。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,270评论 19 139
  • linux资料总章2.1 1.0写的不好抱歉 但是2.0已经改了很多 但是错误还是无法避免 以后资料会慢慢更新 大...
    数据革命阅读 14,406评论 2 33
  • Ubuntu的发音 Ubuntu,源于非洲祖鲁人和科萨人的语言,发作 oo-boon-too 的音。了解发音是有意...
    萤火虫de梦阅读 100,251评论 9 468
  • 时光静静的想念,我在顿河边等待,也许是真的你不会来,但是我会一直一直一个人默守,许多事情不要说,一个眼神交流就够了...
    不留心阅读 3,499评论 2 6
  • 首先推荐睡前蒸桑拿,网购的桑拿浴箱,简单好用,睡前蒸蒸,到头顶微微冒汗的状态,基本上躺下就能睡着,好眠无梦。 其次...
    赢莹_51fd阅读 1,490评论 1 2

友情链接更多精彩内容