微信小程序反编译的实现


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 相关文章推荐
JS IE和FF兼容性问题汇总
Feb 09 Javascript
用JS控制回车事件的代码
Feb 20 Javascript
setInterval与clearInterval的使用示例代码
Jan 28 Javascript
Json实现异步请求提交评论无需跳转其他页面
Oct 11 Javascript
Node.js + Redis Sorted Set实现任务队列
Sep 19 Javascript
AngularJS中的按需加载ocLazyLoad示例
Jan 11 Javascript
JS实现多物体运动的方法详解
Jan 23 Javascript
ejsExcel模板在Vue.js项目中的实际运用
Jan 27 Javascript
一文读懂ES7中的javascript修饰器
May 06 Javascript
Vue.js递归组件实现组织架构树和选人功能案例分析
Jul 03 Javascript
JS正则表达式验证端口范围(0-65535)
Jan 06 Javascript
vue实现Toast组件轻提示
Apr 10 Vue.js
微信小程序用户登录和登录态维护的实现
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实现智能文件类型检测的实现代码
2011/08/02 PHP
PHP接收App端发送文件流的方法
2016/09/23 PHP
PHP 扩展Memcached命令用法实例总结
2020/06/04 PHP
PHP哈希表实现算法原理解析
2020/12/11 PHP
让广告代码不再影响你的网页加载速度
2006/07/07 Javascript
JavaScript 错误处理与调试经验总结
2010/08/10 Javascript
jQueryUI写一个调整分类的拖放效果实现代码
2012/05/10 Javascript
JavaScript代码复用模式实例分析
2012/12/02 Javascript
jquery获取自定义属性(attr和prop)实例介绍
2013/04/21 Javascript
解释&&和||在javascript中的另类用法
2014/07/28 Javascript
JS 面向对象之继承---多种组合继承详解
2016/07/10 Javascript
[js高手之路]HTML标签解释成DOM节点的实现方法
2017/08/31 Javascript
基于jQuery解决ios10以上版本缩放问题
2017/11/03 jQuery
vue-router路由懒加载和权限控制详解
2017/12/13 Javascript
AngularJs分页插件使用详解
2018/06/30 Javascript
微信小程序地图实现展示线路
2020/07/29 Javascript
通过实例解析JavaScript常用排序算法
2020/09/02 Javascript
[05:06]TI4西雅图DOTA2前线报道 海涛密探LGD训练
2014/07/09 DOTA
Python爬取网易云音乐上评论火爆的歌曲
2017/01/19 Python
浅谈Python中的私有变量
2018/02/28 Python
Python的numpy库中将矩阵转换为列表等函数的方法
2018/04/04 Python
Python在for循环中更改list值的方法【推荐】
2018/08/17 Python
Python装饰器限制函数运行时间超时则退出执行
2019/04/09 Python
python rsync服务器之间文件夹同步脚本
2019/08/29 Python
Python通过Manager方式实现多个无关联进程共享数据的实现
2019/11/07 Python
Python2手动安装更新pip过程实例解析
2020/07/16 Python
Python实现小黑屋游戏的完整实例
2021/01/06 Python
HTML5公共页面提取作为公用代码的方法
2020/06/30 HTML / CSS
蔻驰西班牙官网:COACH西班牙
2019/01/16 全球购物
护士岗位求职应聘自荐书范文
2014/02/12 职场文书
十八届三中全会感言
2014/03/10 职场文书
铲车司机岗位职责
2014/03/15 职场文书
无传销社区工作方案
2014/05/13 职场文书
企业2014年度工作总结
2014/12/10 职场文书
MySQL 主从复制数据不一致的解决方法
2022/03/18 MySQL
Dubbo+zookeeper搭配分布式服务的过程详解
2022/04/03 Java/Android