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

一、前言

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

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

二、所需工具

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

nodejs下载与安装:

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

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

2.下载反编译脚本 最新下载地址: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这个配置文件,其他的都有。导入项目后就可以看到效果了,期间可能会出现一些问题,需要调试一下。下图是编译成功后的截图。

四、结语

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

学海无涯,欢迎一起交流学习,共同进步,不懂也可以转发小程序给我,帮你反编译。同时对于常见问题及操作流程整理了相关视频教程,可供大家学习,一学就会。

如果有什么不懂可以质询我。

https://u.wechat.com/MM8ISCrDrt0B_Q7Y8uzoFfw (二维码自动识别)

wxapkg反编译后的数据_反编译微信小程序相关推荐

  1. 微信小程序反编译wxss文件缺失_如何找回微信小程序源码?2020年微信小程序反编译最新教程 小宇子李...

    前言:在网上看了找回微信小程序源码很多教程,都没法正常使用.微信版本升级后,会遇到各种报错, 以及无法获取到wxss的问题.查阅各种资料,最终解决,于是贴上完整的微信小程序反编译方案与教程. 本文章仅 ...

  2. 微信小程序反编译wxss文件缺失_如何找回微信小程序源码?2019年微信小程序反编译最新教程...

    前言:在网上看了找回微信小程序源码很多教程,都没法正常使用.微信版本升级后,会遇到各种报错, 以及无法获取到wxss的问题.查阅各种资料,最终解决,于是贴上完整的微信小程序反编译方案与教程. 本文章仅 ...

  3. 微信小程序如何反编译,如何获取线上任何微信小程序源码

    原文地址:https://www.yii666.com/learning/developers/19.html 准备工作 下载并安装 nodejs,本次版本为 v6.10.0 下载 反编译脚本 下载地 ...

  4. python实现宿舍管理系统_基于PYTHON微信小程序的病历管理系统的设计与实现

    好程序设计擅长JAVA(SSM,SSH,SPRINGBOOT).PYTHON(DJANGO/FLASK).THINKPHP.C#.安卓.微信小程序.MYSQL.SQLSERVER等,欢迎咨询 今天记录 ...

  5. 微信小程序如何将数据存储到服务器,微信小程序关于数据存储的一些坑

    微信小程序存储方式官方文档说得很清楚,同步和异步.保存数据有以下两种方式: wx.setStorage 异步保存 wx.setStorageSync同步保存 获取数据也是两种: wx.getStora ...

  6. echarts异步数据加载MySQL_微信小程序 Echarts 异步数据更新

    微信小程序 Echarts 异步数据更新的练习,被坑了很多次,特作记录. 作者:罗兵 地址:https://www.cnblogs.com/hhh5460/p/9989805.html 0.效果图 1 ...

  7. python小程序设计每天定时微信发消息_定时发送微信小程序订阅消息

    微信小程序的消息推送从之前的模板消息更新到了现在的订阅消息,本篇文章就教你怎么使用小程序订阅消息,文后会附上使用python写的定时发送订阅消息的代码. 1.首先要添加一个订阅消息模板 登陆上微信小程 ...

  8. node.js 微信小程序 部署服务器_自行部署微信小程序生产环境(node.js)—腾讯云服务器...

    一.前期准备 购买域名 + (云)服务器 购买https证书 二.解决方案 在一台(云)服务器上,安装好运行环境(nodejs+mysql+pm2+nginx),然后通过pm2运行小程序后端项目,并在 ...

  9. 企业微信小程序可用存储空间不足_如何用微信“小程序商城+企业微信”,搭建企业智慧新零售系统?...

    许多企业或是个体商家,都做了微信小程序商城,或者是正打算做小程序商城,但是对于小程序商城开发制作好之后的运营却是一头雾水,不知道怎么运营.今天我们说一说"微信小程序商城+企业微信" ...

最新文章

  1. 辞职的时候才知道上司的工资是我的10倍,这些道理都在这些公众号中!
  2. LeetCode 426. Convert Binary Search Tree to Sorted Doubly Linked List--转换二叉树为双向链表--Java,C++,Python解法
  3. TCP/IP学习入门笔记
  4. 使用MySQL Workbench远程管理工具进行远程管理Mysql的错误及解决办法
  5. boost::iterator::permutation_iterator用法的测试程序
  6. 由浅到浅入门批量渲染(一)
  7. 万丰科技机器人排名_机器人系统集成“7宗最”
  8. 清空运行中的jar 日志_Java日志体系权威总结
  9. 七牛云删除图片接口_Thinkphp连接七牛云存储空间删除图片
  10. Webx MVC分析
  11. 网络层QoS分类和标记字段详解
  12. 手动实现一维离散数据小波分解与重构
  13. oracle11g broker,张欣橙Oracle11g配置DGbroker
  14. python爬虫获取数据失败请稍后访问_Python爬取微博评论数据,竟被反爬封号了!...
  15. Oracle GoldenGate for MySQL部署踩的坑
  16. Android 设备Id 唯一不重复,Redmi
  17. Java插件自动保存浏览器书签_EverSync插件,浏览器书签同步插件,支持Chrome和Firefox书签同步...
  18. MATLAB 判断字符串中是否含有特定的字符
  19. 中国股市最惊险的一次豪赌
  20. Android 蓝牙 主从关系,【实用】蓝牙主从一体模块SPP+BLE测试流程(XY-MBD07A为例)...

热门文章

  1. 两种TL431的恒流源电路 分析
  2. guzzlehttp/guzzle 包设置超时
  3. 初识C语言(一)常见变量的含义、所能存储数据的范围、及其所占内存大小。
  4. RHEL---http服务解读和搭建
  5. 极速办公(excel)如何隔行求和
  6. 如何设置从U盘启动win7系统的方法
  7. 浙大教授:如何规划自己的博士五年生活?
  8. python atm银行取款系统_银行 ATM 系统项目
  9. 有没有识别图片文字的软件?这几款就很不错
  10. XML与JSON(超级详解)