反编译小程序记录
时间:2022-07-22
本文章向大家介绍反编译小程序记录,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
前言
因为一些需求,需要我们把上线的小程序反编译成源码。并查看源码。
环境
macOS Catalina 10.15.5
MUMU模拟器 1.9.21(20200720)
node 8.11.3
在MUMU模拟器设置中开启共享文件夹以及root权限,然后下载
微信
和RE文件管理器
搭建反编译环境
下载反编译工具
最开始作者的(随后作者移除了该项目) ①,wxappUnpacker
分支出来同步更新的反编译工具 ②,wxappUnpacker
该教程使用的版本工具 ③,wxappUnpacker
克隆项目到本地然后执行
npm i
安装项目依赖
获取小程序要反编译的代码包
1.使用自己手机上的微信打开"人堆"小程序,可以添加到"我的小程序" 2.打开模拟器的微信并登录 3.在模拟器微信的下拉小程序最近使用历史中打开"人堆",如果历史记录中没有就在我的小程序中找一找 4.打开小程序等待加载之后就可以去找源码包了 5.打开RE文件管理器,进入到以下路径查找源码包(可以根据下载时间区分出你想要的源码包)
/data/data/com.tencent.mm/MicroMsg/4c8188dbf07eec893d0ac90974657aeb/appbrand/pkg
长按_1123949441_403.wxapkg
文件把该文件在模拟器中复制到模拟器中的共享文件夹中
反编译小程序源码
node wuWxapkg.js <path/to/rendui.wxapkg>
image.png
导出的文件目录结构
.
├── components
│ └── RefreshView
├── images
├── pages
│ ├── auth
│ ├── charts
│ │ ├── area
│ │ ├── column
│ │ ├── line
│ │ ├── line_full_screen
│ │ ├── pastArticle
│ │ ├── pastMarket
│ │ ├── pie
│ │ ├── radar
│ │ ├── ring
│ │ ├── scrollline
│ │ ├── spec_line
│ │ └── todayMarket
│ ├── index
│ ├── info
│ ├── login
│ ├── markets
│ │ ├── cart
│ │ ├── index
│ │ └── vender
│ ├── prices
│ │ ├── add
│ │ ├── freight
│ │ ├── groups
│ │ └── list
│ ├── repassword
│ ├── user
│ │ ├── aboutUs
│ │ ├── addArticle
│ │ ├── addresses
│ │ │ └── operation
│ │ ├── authorize
│ │ ├── buyRecord
│ │ ├── checkArticle
│ │ ├── drivers
│ │ │ └── operation
│ │ ├── editArticle
│ │ ├── feedback
│ │ ├── feedbackRet
│ │ ├── incomeDetail
│ │ ├── myArticle
│ │ ├── myFans
│ │ ├── orders
│ │ ├── paySuccess
│ │ ├── promoter
│ │ ├── upgrade
│ │ ├── venders
│ │ │ └── operation
│ │ └── vipDesc
│ └── vender
│ ├── contacts
│ │ └── operation
│ ├── main
│ ├── origin
│ │ └── operation
│ ├── product
│ │ └── operation
│ ├── productInfo
│ │ ├── operation
│ │ └── volumes
│ │ └── volume
│ ├── salesmain
│ ├── salesmen
│ │ └── operation
│ ├── settings
│ └── stock
│ └── operation
└── utils
如果想单独执行config、js、wxml、wxss的反编译可以在解包时加-o参数不做后续操作
工具用法
node wuConfig.js <files...> 将 app-config.json 中的内容拆分到各个文件对应的 .json 和 app.json , 并通过搜索 app-config.json 所在文件夹下的所有文件尝试将 iconData 还原为 iconPath 。
node wuJs.js <files...> 将 app-service.js (或小游戏中的 game.js ) 拆分成一系列原先独立的 javascript 文件,并使用 Uglify-ES 美化,从而尽可能还原编译前的情况。
node wuWxml.js [-m] <files...> 将编译/混合到 page-frame.html ( 或 app-wxss.js ) 中的 wxml 和 wxs 文件还原为独立的、未编译的文件。如果加上-m指令,就会阻止block块自动省略,可能帮助解决一些相关过程的 bug 。
node wuWxss.js <dirs...> 通过获取文件夹下的 page-frame.html ( 或 app-wxss.js ) 和其他 html 文件的内容,还原出编译前 wxss 文件的内容。
node wuWxapkg.js [-o] [-d] [-s=<Main Dir>] <files...> 将 wxapkg 文件解包,并将包中上述命令中所提的被编译/混合的文件自动地恢复原状。如果加上-o指令,表示仅解包,不做后续操作。如果加上-d指令,就会保留编译/混合后所生成的新文件,否则会自动删去这些文件。同时,前面命令中的指令也可直接加在这一命令上。而如果需要解压分包,请先解压主包,然后执行node wuWxapkg.js [-d] -s=<Main Dir> <subPackages...>,其中Main Dir为主包解压地址。除-d与-s外,这些指令两两共存的后果是未定义的(当然,是不会有危险的)。
总结
至此小程序反编译完成。并可以在微信开发者工具中打开使用。使用需要勾选不校验合法域名
和勾掉e6转es5
有的小程序没用使用ES6语法的话就不用
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- why哥被一道基础面试题给干懵了,一气之下写出万字长文。
- 结构与算法(03):单向链表和双向链表
- 有赞crash平台符号化实践
- 什么是时间分片(Time Slicing)?
- 逐行分析鸿蒙系统的 JavaScript 框架
- 48张小图带你领略Flex 布局之美
- 怎样设计一个 JavaScript 插件系统
- 一道 React 面试题:在浏览器、组件和元素中都渲染了些什么?
- 「新手入门福利」一张脑图带你掌握Git命令
- LeetCode | 58.最后一个单词的长度
- 模拟面试,解锁大厂 ——从Android的事件分发说起
- scRepertoire||单细胞免疫组库分析:R语言应用(一)
- Docker体验(二) - 自建Image
- 小程序代码复用 - template
- 五. Spring Security 权限管理