微信小程序反编译的实现


Posted in Javascript onDecember 10, 2020

首先声明:本文章仅供学习之用,不可它用。

一、前言

       看到人家上线的小程序的效果,纯靠推测,部分效果在绞尽脑汁后能做出大致的实现,但是有些细节,费劲全力都没能做出来。很想一窥源码?查看究竟?看看大厂的前端大神们是如何规避了小程序的各种奇葩的坑?那么赶紧来试试吧

反编译,其实还是简单的,要想拿到微信小程序源码,找到源文件在手机存放的位置就行,源文件拿到,用反编译脚本跑一下,微信小程序代码包里的所有文件、所有资源就出来了(除了project.config.json小程序配置文件)。拿到源码后,跑起来是能跑,但登录、授权等涉及到appid的功能是不能用的,因为被反编译小程序的服务端appid和你本地添加的不一样,这就是为啥拉下来的源码没有project.config.json文件的原因,项目中appid是配置在这个文件里,这里一定程度上保护原小程序。

二、所需工具

nodejs运行环境,这是反编译脚本所需运行环境。

     nodejs下载与安装:

    (1)、nodejs下载链接:https://nodejs.org/zh-cn/download/ 或者 http://nodejs.cn/download/。安装的过程一路next就可以了,安装后将nodejs设置为环境变量。

    (2)、打开cmd,测试是否安装成功,在命令行输入node -v,如下: D:>node -v   结果:v12.11.1

微信小程序反编译的实现

     2.下载反编译脚本 最新下载地址:https://github.com/gudqs7/wxappUnpacker

用cd命令进入到你clone或者下载好的反编译脚本目录下,下载好后将wxappUnpacker.zip文件解压出来,这是GitHub上一位大神的杰作,找到了这个比较好用的,其他版本也可以。

    3.夜神模拟器,地址:夜神模拟器

用来找寻微信小程序源文件,真机当然也可以,但麻烦,又是root权限,又是越狱的,夜神模拟器方便,直接在设置里就可以设置超级用户权限,超级权限拿到,就可以为所欲为了,通过下面这个RE文件管理器看到微信小程序源文件。 

    4.RE文件管理器(在模拟器内搜索安装或自动下载后导入到摸拟器安装)用来找寻微信小程序源文件。

三、编译流程

1. 安装RE文件管理器

在模拟器内安装好RE文件管理器(可以在摸拟器上直接搜索“RE文件管理器”进行安装)。 

2. 获取超级用户权限

       打开手机设置->找到超级用户->右上角三个小点点击一下,设置->点击‘超级用户访问权限',选择‘仅限于应用',这样超级用户权限就拿到了。

或者在首次打开RE文件管理器进入data文件夹时,摸拟器会显示超级用户请求,选择“永久记住选择”—>点击“允许”,即可获取超级用户权限。

微信小程序反编译的实现

3.打开需要反编译的小程序 

       打开微信,没有的在应用市场下载就行,打开想反编译的微信小程序,小程序打开后,可以切换到RE文件管理器去找源文件了。

       这里有一个机制,当点开一个微信小程序,如果本地这个文件夹下找到即将运行的小程序,会从微信服务器下载到本地,在以后的某个时刻又运行这个小程序,运行时,微信服务器会通知有没有小程序新版本,如有新版本,会在后台静默下载,小程序继续运行,新版本要到下一次运行才会启用,这就是微信小程序的更新机制。

4.获取源文件

       打开RE文件管理器,从根目录开始。/data/data/com.tencent.mm/MicroMsg/.../appbrand/pkg/,路径中有一段...,这里表示不确定具体一个,一般是很长的数字和字母组成的文件(如下图所示)

微信小程序反编译的实现

反正就在这个MicroMsg下的其中一个文件夹,紧接着会看到appbrand文件夹,如果这样那就找到位置了。

找到源文件后,长按左键 -> 点击右上角三个小点,打开菜单,选择‘压缩所选文件'->完成后,点击查看->长按,还是右上角,将压缩包从模拟器发送出来到电脑上,方式多种,随意。下图是以QQ方式发送。

微信小程序反编译的实现

微信小程序反编译的实现

5. 下载反编译文件

       从GitHub下载反编译文件后,在桌面就有了这样的文件夹结构nimi-yuan这个文件夹下这里放的是微信小程序源文件

lib这个文件夹下放的是反编译脚本 

6. 安装依赖包

cmd在终端进入到你刚刚下载下来的脚本目录下,依次安装以下依赖,全部安装完。

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

安装好依赖之后,就是最后一步了,反编译 .wxapkg 文件

例如:我有一个需要反编译的文件 _163200311_32.wxapkg 已经解压到了D盘根目录下,那么就输出命令

node .\wuWxapkg.js D:\_163200311_32.wxapkg

微信小程序反编译的实现

7.反编译完成

       用node wuWxapkg.js filepath执行成功后,查看反编译成功后的文件夹,源码中除了project.config.json这个配置文件,其他的都有。导入项目后就可以看到效果了,期间可能会出现一些问题,需要调试一下。下图是编译成功后的截图。

微信小程序反编译的实现

四、结语

       至此微信小程序的反编译过程就结束了,仅供学习之用,不可它用。由此可见微信小程序源码的安全性不好,过不久估计就不能这么干了,漏洞终究会被填补的。

到此这篇关于微信小程序反编译的实现的文章就介绍到这了,更多相关微信小程序反编译内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
Jquery实战_读书笔记2 选择器
Jan 22 Javascript
Jquery升级新版本后选择器的语法问题
Jun 02 Javascript
JS延迟加载加快页面打开速度示例代码
Dec 30 Javascript
5款JavaScript代码压缩工具推荐
Jul 07 Javascript
js判断某个方法是否存在实例代码
Jan 10 Javascript
JavaScript编写Chrome扩展实现与浏览器的交互及时间通知
May 16 Javascript
浅谈js和css内联外联注意事项
Jun 30 Javascript
AngularJS入门教程之数据绑定原理详解
Nov 02 Javascript
Vue.js实现一个todo-list的上移下移删除功能
Jun 26 Javascript
angular4模块中给标签添加背景图的实现方法
Sep 15 Javascript
Three.js实现浏览器变动时进行自适应的方法
Sep 26 Javascript
js自定义trim函数实现删除两端空格功能
Feb 09 Javascript
微信小程序用户登录和登录态维护的实现
Dec 10 #Javascript
关于小程序优化的一些建议(小结)
Dec 10 #Javascript
详解vue-cli项目在IE浏览器打开报错解决方法
Dec 10 #Vue.js
echarts柱状图背景重叠组合而非并列的实现代码
Dec 10 #Javascript
javascript实现放大镜功能
Dec 09 #Javascript
Javascript实现单选框效果
Dec 09 #Javascript
javascript实现移动端轮播图
Dec 09 #Javascript
You might like
PHP预定义变量9大超全局数组用法详解
2016/04/23 PHP
PHP迭代器接口Iterator用法分析
2017/12/28 PHP
Javascript 篱式条件判断
2008/08/22 Javascript
js获取php变量的实现代码
2013/08/10 Javascript
JavaScript 实现简单的倒计时弹窗DEMO附图
2014/03/05 Javascript
Eclipse引入jquery报错如何解决
2015/12/01 Javascript
[原创]JQuery 在表单提交之前修改 提交的值
2016/04/14 Javascript
Javascript打印局部页面实例
2016/06/21 Javascript
JavaScript模仿Pinterest实现图片预加载功能
2016/10/25 Javascript
探讨跨域请求资源的几种方式(总结)
2016/12/02 Javascript
Vue.js使用v-show和v-if的注意事项
2016/12/13 Javascript
vue2.0使用Sortable.js实现的拖拽功能示例
2017/02/21 Javascript
javascript 判断用户有没有操作页面
2017/10/17 Javascript
Vue封装Swiper实现图片轮播效果
2018/02/06 Javascript
vue 标签属性数据绑定和拼接的实现方法
2018/05/17 Javascript
cdn模式下vue的基本用法详解
2018/10/07 Javascript
JS监听事件的叠加和移除功能
2018/11/19 Javascript
详解如何在vscode里面调试js和node.js的方法步骤
2018/12/24 Javascript
vue语法自动转typescript(解放双手)
2019/09/18 Javascript
JS实现导航栏楼层特效
2020/01/01 Javascript
uniapp实现横向滚动选择日期
2020/10/21 Javascript
[01:45]2014DOTA2 TI预选赛预选赛 大神专访第二弹!
2014/05/20 DOTA
[45:38]DOTA2上海特级锦标赛主赛事日 - 1 胜者组第一轮#1Liquid VS Alliance第一局
2016/03/02 DOTA
TensorFlow 合并/连接数组的方法
2018/07/27 Python
Python使用pyautogui模块实现自动化鼠标和键盘操作示例
2018/09/04 Python
Python加密模块的hashlib,hmac模块使用解析
2020/01/02 Python
css3的图形3d翻转效果应用示例
2014/04/08 HTML / CSS
HTML5组件Canvas实现图像灰度化(步骤+实例效果)
2013/04/22 HTML / CSS
阿拉伯时尚购物网站:Nisnass
2021/02/07 全球购物
运动会广播稿400字
2014/01/25 职场文书
法学个人求职信范文
2014/01/27 职场文书
应届中专生自荐书范文
2014/02/13 职场文书
煤矿开采专业求职信
2014/07/08 职场文书
交通运输局四风问题对照检查材料思想汇报
2014/10/09 职场文书
2014年保洁工作总结
2014/11/24 职场文书
如何撰写出一份完美的商业计划书?
2019/07/12 职场文书