最新‘微信小程序’反编译最新教程(如何找回微信小程序源码手把手教程)
前言:
简单聊一下xxxxx.wxapkg
先来想想一个很简单的问题,小程序的源文件存放在哪?
当然是在微信的服务器上。
但是在微信服务器上,普通用户想要获取到,肯定是十分困难的,有没有别的办法呢?
简单思考一下我们使用小程序的场景就会明白,当我们点开一个微信小程序的时候,其实是微信已经将它的从服务器上下载到了手机,然后再来运行的。
所以我们应该可以从手机本地找到到已经下载过的小程序文件
那么如何才能在手机里找到小程序的源文件包呢?
这里只以安卓手机为例
具体目录位置直接给出:
根目录/data/data/com.tencent.mm/MicroMsg/{一串16进制字符}/appbrand/pkg/
在这个目录下,会发现一些 xxxxxxx.wxapkg 类型的文件,这些就是微信小程序的包
微信小程序的格式就是:.wxapkg
这里重要声明一下:虽然微信小程序的包后缀是.wxapkg,但有一些包的依赖后缀也是.wxapkg,真正的小程序包大小1M左右,而依赖包大小2、3M甚至更多。所以一股脑的反编译.wxapkg 类型的文件可能会报错: Error: This Package is unrecognizable, please decrypted every type of file by hand.,遇见这个问题的小伙伴请自知,你可能没找
对包哦!
.wxapkg是一个二进制文件,有其自己的一套结构。
微信小程序源码阅读笔记lrdcq大神的这篇博文有对.wxapkg的详细介绍,当然你也不可以不看
但是这里有个坑,想要进入到上面这个目录的话,用手机自带的文件管理器肯定是不行的,安卓或者iPhone都要要用到第三方的文件管理器,比如:RE文件管理器,并且安卓需要取得root权限,而苹果手机肯定是要越狱的,且iphone的越狱难度>>安卓获取root,不管越狱还是root,这都太费劲,当然有能力的同学可以直接从手机上来操作,但是这里不推荐从真机上获取。
下面我们来讲讲具体的操作步骤:
一、准备材料
1.node.js运行环境
如果没有安装nodejs,请先安装一下
下载地址:https://nodejs.org/en/
2.反编译的脚本
这里提供一个Github上qwerty472123大神写的node.js版本的,当然也有其它版本的,例如python版本,这里我只是简单地用node.js版本举例
地址:https://github.com/nieyangyang712/wxApp-Unpacker
3.安卓模拟器(要求自带root权限)
我使用的是夜神模拟器,下载地址:https://www.yeshen.com/cn/download/fullPackage
你也可以自选 或者:
网易 Mumu 模拟器安装
- 下载地址: http://mumu.163.com/360/
- 下载完安装包后直接安装
- 打开模拟器
- 安装 微信、RE文件管理器
- 设置Root 权限
- 打开 RE文件管理器,提示请求超级用户访问权限,选择允许
详细步骤
使用安卓模拟器获取到.wxapkg文件
不用越狱,不用root,使用电脑端的安卓模拟器来获取是一个非常简单快捷的获取方式,具体步骤如下:
1.打开安装好的安卓模拟器,并在模拟器中安装QQ、微信、RE管理器
QQ、微信在模拟器自带的应用商店里搜索下载安装即可
RE管理器的下载地址:https://pan.baidu.com/s/1PPBx08rNutXxhlMMJbuTpQ
提示一下:RE管理器在模拟器的应用商店一般也能搜到!!可以直接下载
下载好后直接拖拽进打开的模拟器窗口就会自动安装
2.设置一下模拟器
以我个人认为比较好用的夜神模拟器举例
首先到模拟器内部设置超级用户权限
先找到设置:
然后找到超级用户:
这些操作的目的都是为了能让RE管理器顺利的获取到ROOT权限
3.接下来在模拟器里打开微信,然后在微信中运行你想要获取的下程序(这其实是让微信把小程序的源文件包从服务器下载到了本地了)
就以我说的这款共享单车的小程序举例
在模拟器微信中运行一下后,直接切回模拟器桌面,运行RE浏览器 来到目录
根目录/data/data/com.tencent.mm/MicroMsg/{一串16进制字符}/appbrand/pkg/
就抵达了目的文件夹 :
或者直接在搜索框内搜索:/data/data/com.tencent.mm/MicroMsg/... 找到wxapkg的文件就是你要找的
打开文件管理器,找到/data/data/com.tencent.mm/MicroMsg 目录 ,然后找到一个很长的用户随机码,
继续找到/appbrand/pkg/xxx,接下来会出现小程序A的wxapkg包
压缩apkg包,然后长按发送到QQ,微信。接收到后存在本地就行了
然后:到此我们获取到了小程序的包 ,打开node.js , 路径切换到我们下载的反编译脚本的目录,
我这里是visual code 编辑器,github 上的 脚本源码,如图:
提示: ( 路径不要包含中文名称,否则反编译时可能因编码不对 造成异常 )
4 切换到反编译脚本的目录后 ,在node命令窗口中依次安装以下依赖:
npm install esprima --save
npm install css-tree --save
npm install cssbeautify --save
npm install vm2 --save
npm install uglify-es --save
npm install js-beautify --save
npm install escodegen --save
npm install cheerio --save
下面讲解需要更改的源码和操作步骤:
这时可能会报一个错误、【找不到escodegen模块】、莫紧张 , 否则容易秃头......
运行如下命令:npm i --save-dev escodegen
然后再输入命令:node .\wuWxapkg.js D:\2019\709\1\_497193109_61.wxapkg
在本地文件夹查看:
打开小程序的编辑器开启项目:
如果运行出现了点问题:
1、可以试试,点击开发者工具详情去掉 es6转es5的勾,勾上不校验安全域名
2、 勾选了还是无法运行?那么请在详情里把基础版本库调低至1.5左右,再试试
3、出现找不到某些文件的情况怎么办?我只能告诉:删!删!删! app.json
里面,提示找不到那个文件,就将pages下注册的该页面语句暂时删除掉。删
到可以运行为止
4、还是无法运行?那就自己想办法吧!
问题一:反编译微信小程序错误: $gwx is not defined和__vd_version_info__ is not defined 已解决
修改wxappUnpacker文件中的 wuWxss.js
function runVM(name, code) {// let wxAppCode = {}, handle = {cssFile: name};// let vm = new VM({// sandbox: Object.assign(new GwxCfg(), {// __wxAppCode__: wxAppCode,// setCssToHead: cssRebuild.bind(handle)// })// });// vm.run(code);// for (let name in wxAppCode) if (name.endsWith(".wxss")) {// handle.cssFile = path.resolve(frameName, "..", name);// wxAppCode[name]();// }let wxAppCode = {};let handle = {cssFile: name};let gg = new GwxCfg();let tsandbox = {$gwx: GwxCfg.prototype["$gwx"],__mainPageFrameReady__: GwxCfg.prototype["$gwx"], //解决 $gwx is not defined__vd_version_info__: GwxCfg.prototype["$gwx"], //解决 __vd_version_info__ is not defined__wxAppCode__: wxAppCode,setCssToHead: cssRebuild.bind(handle)}let vm = new VM({sandbox: tsandbox});vm.run(code);for (let name in wxAppCode) {if (name.endsWith(".wxss")) {handle.cssFile = path.resolve(frameName, "..", name);wxAppCode[name]();}}}
问题二:Cannot find module 'uglify-es'
npm install esprima --save
npm install css-tree --save
npm install cssbeautify --save
npm install vm2 --save
npm install uglify-es --save
npm install js-beautify --save
npm install escodegen --save
问题三:$gwx is not defined
__vd_version_info__ is not defined
修改wxappUnpacker文件中的 wuWxss.js
function runVM(name, code) {//let wxAppCode={},handle={cssFile:name};//let vm=new VM({sandbox:Object.assign(new GwxCfg(),{__wxAppCode__:wxAppCode,setCssToHead:cssRebuild.bind(handle)})});//vm.run(code);//for(let name in wxAppCode)if(name.endsWith(".wxss")){//handle.cssFile=path.resolve(frameName,"..",name);//wxAppCode[name]();//}let wxAppCode = {};let handle = {cssFile: name};let gg = new GwxCfg();let tsandbox = {$gwx: GwxCfg.prototype["$gwx"],__mainPageFrameReady__: GwxCfg.prototype["$gwx"], //解决 $gwx is not defined__vd_version_info__: GwxCfg.prototype["$gwx"], //解决 __vd_version_info__ is not defined__wxAppCode__: wxAppCode,setCssToHead: cssRebuild.bind(handle)}let vm = new VM({sandbox: tsandbox});vm.run(code);for (let name in wxAppCode) {if (name.endsWith(".wxss")) {handle.cssFile = path.resolve(frameName, "..", name);wxAppCode[name]();}}}
问题四、报错
vm.js:3612
return function(env,dd,global){$gwxc=0;var root={"tag":"wx-page"};root.children=[]
^^^^^^
SyntaxError: Illegal return statement
SyntaxError: Illegal return statement出现类似错误在网上找了很久,发现有一篇文章原文链接:wxappUnpacker 微信小程序反编译 2019 9月使用问题总结 讲到一位大佬给出了解决方案,larack8他提出了https://github.com/qwerty472123/wxappUnpacker/issues/215然后github地址https://github.com/larack8/wxappUnpacker但是这里面有几个问题 Cannot find module 'uglify-es',本来都装好了,但是还报这个错误??Error: Cannot find module 'uglify-es'at Function.Module._resolveFilename (module.js:547:15)at Function.Module._load (module.js:474:25)at Module.require (module.js:596:17)at require (internal/module.js:11:18)at Object.<anonymous> (/home/wq57885/wxappUnpacker2/wuJs.js:3:18)at Module._compile (module.js:652:30)at Object.Module._extensions..js (module.js:663:10)at Module.load (module.js:565:32)at tryModuleLoad (module.js:505:12)at Function.Module._load (module.js:497:3)后来找到一个大佬的解决思路,需要升级到最新的nodejs,再重新安装库,这边仅供参考npm install -g nn latestnpm update -g此时依然报错Cannot find module 'uglify-es',同时把 Error: Cannot find module 'cheerio'一起解决了npm install uglify-es --savenpm install esprima --savenpm install css-tree --savenpm install cssbeautify --savenpm install vm2 --savenpm install uglify-es --savenpm install js-beautify --savenpm install escodegen --savenpm install cheerio --save再次完美执行,久违的界面
或者选择dev分支的这个新的版本吧:
最近老有粉丝问我反编译失败了:
Illegal return statement
【问题说明】反编译其他的包可以,但是反编译这个包就报错了
【解决】我觉得可能是 wxappUnpacker 不支持反编译新开发的小程序;去gitub上查找最新的 wxappUnpacker,重新安装依赖,就可以避免这个问题。
gitub地址:https://github.com/nieyangyang712/wxappUnpacker
最后为了方便大家的沟通与交流请加QQ群: 625787746
请进QQ群交流:【IT博客技术分享群①】:https://jq.qq.com/?_wv=1027&k=DceI0140
最新‘微信小程序’反编译最新教程(如何找回微信小程序源码手把手教程)相关推荐
- 微信小程序反编译wxss文件缺失_如何找回微信小程序源码?2020年微信小程序反编译最新教程 小宇子李...
前言:在网上看了找回微信小程序源码很多教程,都没法正常使用.微信版本升级后,会遇到各种报错, 以及无法获取到wxss的问题.查阅各种资料,最终解决,于是贴上完整的微信小程序反编译方案与教程. 本文章仅 ...
- 如何找回微信小程序源码?2020年微信小程序反编译最新教程
前言:在网上看了找回微信小程序源码很多教程,都没法正常使用.微信版本升级后,会遇到各种报错, 以及无法获取到wxss的问题.查阅各种资料,最终解决,于是贴上完整的微信小程序反编译方案与教程. 本文章仅 ...
- 微信小程序反编译wxss文件缺失_如何找回微信小程序源码?2019年微信小程序反编译最新教程...
前言:在网上看了找回微信小程序源码很多教程,都没法正常使用.微信版本升级后,会遇到各种报错, 以及无法获取到wxss的问题.查阅各种资料,最终解决,于是贴上完整的微信小程序反编译方案与教程. 本文章仅 ...
- 使用java反编译查看java生成的exe文件的源码
第一次写博客,也些有些问题. 上网下载一个java反编译软件,我使用的是jd-gui这款软件. 在编译时,不能直接用编译软件打开exe执行文件,有些软件是可以打开的,不过显示的是汇编代码. 首先打开e ...
- 微信小程序反编译得到的是html,微信小程序“反编译”实战(一):解包
本实践教程将一步步告诉你如何"反编译"获得其它小程序的源代码,包括"解包"和"源码还原"两篇,主要参考了看雪论坛.V2EX.GitHub 等 ...
- 微信小程序反编译wxss文件缺失_微信小程序反编译~2020年
摘要 安装wxappUnpacker小程序反编译工具并使用(2020.03) 关键词: 微信小程序反编译 wxss 介绍 上次分享了web前端爬取工具 ,那么这次也同样讲讲微信小程序反编译吧,对于像博 ...
- 后端开发工具:反编译工具、VS插件、.NET Framework源码地址
再学习.工作中,开发免不了要使用第三方工具.今天介绍2款反编译工具 一.dnspy 免安装.免费.可调试.可修改重新编译dll 开源项目地址:https://github.com/0xd4d/dnSp ...
- Java--使用反编译工具,打开jar包,查看源码
操作系统:Windows 1.反编译工具: 链接:https://pan.baidu.com/s/1GwglWXc_lj5Q60g1t16lTA 提取码:tf5l 2.下载好后,解压至自己存放的路径 ...
- ajax资料收集-Ajax文章(教程和实例)---Ajax资源下载(源码和教程)---Ajax规范标准
CSDN Blog Ajax文章搜索: http://search.csdn.net/search/ajax/1/blog/ 专题:Ajax技术应用开发 http://www.51cto.com/ht ...
最新文章
- java request get json数据_Java中,获取request中json数据
- linux7 yum安装rabbitmq,CentOS7linux下yum安装RabbitMQ以及使用顶
- densenet论文_DRCN论文解读
- EasyVS 0.3版本发布 -- 给力变换vs编辑器主题
- html中如何实现选择存储路径的功能_16687.VSM006分解03_如何打开HTML内嵌图像存储位置...
- ASP.NET中的OutOfMemoryException
- 【分享】一套非常简单的企业即时通讯
- shell编程追加1
- 【报告分享】GitHub 2020数字洞察报告.pdf(附下载链接)
- 地面控制点的作用_地下室人防预留预埋施工要点及控制点
- amCharts使用方式
- vue 不同权限显示不同页面
- w10计算机怎么恢复出厂设置路由器,win10无线路由器设置步骤图_win10重置路由器后怎么设置...
- word文件点击打印没反应
- 图像的形态学处理总结
- 独家报道|配音工具大放送|这么好听的声音居然……(教程篇)
- 小程序-实现左右菜单联动功能
- 计算机网络之七层网络模型
- Python爬虫爬取某小说网的教程(含全代码)#大佬勿喷
- Java实现 蓝桥杯VIP 算法提高 阮小二买彩票