利用微信电脑最新版 反编译微信小程序 无需root
一、前言
大家都知道编写一个微信小程序是非常漫长的,但是由于现阶段微信小程序存在反编译的可能,于是我去github上找到一个反编译工具(https://github.com/qwerty472123/wxappUnpacker)这个工具其实很早就出来了,但是这个工具需要提取微信小程序的wxapkg文件,就是微信小程序编译后的文件。最近发现电脑版微信可以打开微信小程序了,于是我去找了微信打开小程序后生成的wxapkg文件,没想到轻而易举的就拿到了wxapkg文件。下面为简单介绍下教程。
二、简单介绍下wxapkg
微信小程序一般是存在哪的?——毫无疑问当然是在云端。
微信如何运行小程序?——首先需要在云端下载xxx.wxapkg文件到本地,再利用本地的一套机制运行起来。
那么如何才能在手机里找到小程序的源文件包呢?
- 安卓具体目录位置直接给出:
- /data/data/com.tencent.mm/MicroMsg/{{user哈希值}}/appbrand/pkg/
- 在这个目录下,会发现一些 xxxxxxx.wxapkg 类型的文件,这些就是微信小程序的包
- 此目录是需要用户root后从根目录找出。
电脑运行小程序后具体目录:
C:\Users\{{电脑用户名}}\Documents\WeChat Files\Applet\{{小程序AppID}}\{{随机产生的数字}}\__APP__.wxapkg
注:微信电脑版需是可运行小程序的版本。
微信小程序的格式就是:xxx.wxapkg
- xxx.wxapkg是一个二进制文件,有着其自己的一套结构。
- 关于.wxapkg的详细内容可以参考lrdcq大神的博文:微信小程序源码阅读笔记
三、环境搭建
1. node.js运行环境 下载地址 如果没有安装nodejs,请先安装一下
2. 反编译的脚本。 下载地址这里提供一个Github上qwerty472123大神写的node.js版本的
3. 安卓模拟器(也可用真机需root)获取wxapkg请看4-5步, 新pc版微信(推荐此步骤),请看6步。
4. 安卓模拟器(要求自带root权限)下载地址自行百度
- 我使用的是
夜神模拟器,用来获取小程序源文件
5. RE管理器、MT管理器或者x-plore 赋予root权限下载地址自行百度 到时候要拖到模拟器中的,进入"/data/data/com.tencent.mm/MicroMsg/{{user哈希值}}/appbrand/pkg/"目录根据小程序第一次打开时间找到对应wxapkg
6. 我用的是微信2.7内测版,手机分享小程序给电脑版打开小程序,找到"C:\Users\{{电脑用户名}}\Documents\WeChat Files\Applet\{{小程序AppID}}\{{随机产生的数字}}\__APP__.wxapkg" 一般小程序和分包都会在。
四、详细过程(以pc版微信为例)
分享给电脑版微信小程序

点击打开

导出wxapkg

获取到wxapkg后
将其拷贝到某一路径下,在此路径下按住Shift键,同时鼠标点击右键选择在此处打开Powershell窗口如图

在node命令窗口中依次安装如下依赖:
npm install esprima
npm install css-tree
npm install cssbeautify
npm install vm2
npm install uglify-es
npm install js-beautify
npm install escodegen
安装完成之后会出现node_modules文件夹这是运行wxapkg反编译脚本的必备环境

下面输入命令node wuWxapkg.js <wxapkg目录>如下

运行后,如果不出现错误,基本就可以在微信开发者工具打开

反编译脚本就能一步将.wxapkg 文件还原为微信开发者工具能够运行的源文件,目录地址和你反编译的文件地址是一样的 然后在微信开发者工具新增导入项目即可打开
运行成功,源码获取完成

五、结束语
现阶段的wxapkg,即微信编译后的可执行文件,在我个人眼里,加密力度是不够的,虽然在对我们学生党来说是学习的交流的好手段,但是在社会上运作,还是存在着巨大的安全隐患,随着科技的发展,相信不久,这一方法将会失效,所以趁现在还有学习的机会,可以去搞。
上线的源代码能如此简单的被获取到,不得不说小程序的源码安全存在很大的隐患,这一点很多开发者应该也知道,所以发现有些小程序会将重要的js逻辑代码柔在一个js文件中,这样,即使被获取了源码,也不是很容易读懂,但是任然避免不了被窥视的问题。
实际上,小程序只是很简单的将图片、js和json文件压在一起,而压制的过程就是Wxml -> Html、 Wxml -> JS、Wxss -> Css,转换后文件二进制格式跟后缀名为wx二进制格式完全一致。
注明:此文章为Rakers原创文章,仅供学习交流,切勿用于违法行为
利用微信电脑最新版 反编译微信小程序 无需root的更多相关文章
- 反编译微信小程序
最近看了个微信小程序古诗词全集,想知道他的前后端是怎么实现的,所以就想到了反编译.小程序安装后会有个wxapkg格式的文件存在/data/data/com.tencent.mm/MicroMsg/** ...
- 如何反编译微信小程序👻
如何反编译微信小程序 准备工具: 夜神模拟器(或者你可以自己准备一个安卓模拟器,有root权限.) RE文件管理器(下载地址:https://soft.ucbug.com/uploads/shouji ...
- 挑战App Store,微信通过“跳一跳”秀了一下“小程序”的肌肉
2017年即将结束的时候,微信放了一个大招.随着最新的微信v6.6.1版本更新,基于小程序的"小游戏"板块正式上线.微信上首发的这款"小游戏"叫"跳一 ...
- 反编译工具 使用.NET JustDecompile来反编译你的程序代码
原文地址:http://www.it165.net/pro/html/201310/7383.html 前言 在项目的进行中有时会碰到需要去了解由第三方所开发的程序代码或者因为年久已经遗失原始码的程序 ...
- 使用.NET JustDecompile来反编译你的程序代码
前言 在项目的进行中有时会碰到需要去了解由第三方所开发的程序代码或者因为年久已经遗失原始码的程序,由于因为是别人写的所以我们并没有原始码可以直接阅读,碰到这种情况我们就需要去反编译这些程序及 DLL ...
- 使用ILSpy软件反编译.Net应用程序的方法及注意事项
今天遇到之前同事写的代码没有源码了,但是客户要在原来的基础上修改程序!好在没有做加壳处理,所以就用了ILSpy软件进行反编译!下面把步骤及遇到的问题写下来: 1.打开ILSpy软件,点击File , ...
- JAVA版开源微信管家—JeeWx捷微3.1小程序版本发布,支持微信公众号,微信企业号,支付窗
支持小程序,JeeWx捷微3.1小程序版本发布^_^ JeeWx捷微V3.1--多触点小程序版本管理平台(支持微信公众号,微信企业号,支付窗) JeeWx捷微V3.1.0版本紧跟微信小程序更新,在原有 ...
- 【C#】反编译C#应用程序
下面的使用的使用是笔者使用的一个简单的程序,就是弹出一个消息框. 这里通过 ildasm 反编译 应用程序得到 il 文件,然后对 il 文件进行修改,修改内容后,再通过ilasm编译为应用程序.il ...
- 用 dnSpy 反编译调试 .NET 程序
dnSpy 官网下载:https://github.com/0xd4d/dnSpy/releases 运行需要 .NET Framework 4 环境:https://dotnet.microsoft ...
随机推荐
- Service 使用详解
极力推荐文章:欢迎收藏 Android 干货分享 阅读五分钟,每日十点,和您一起终身学习,这里是程序员Android 本篇文章主要介绍 Android 开发中的部分知识点,通过阅读本篇文章,您将收获以 ...
- java虚拟机学习笔记(五)---运行时的数据区域
Java虚拟机所管理的内存包括以下几个运行时的数据区域:方法区,堆,虚拟机栈,本地方法栈,程序计数器.下面对其进行介绍: 程序计数器 它是一块较小的内存空间,可以看做当前线程做执行的字节码的信号指示器 ...
- (十二)c#Winform自定义控件-分页控件
前提 入行已经7,8年了,一直想做一套漂亮点的自定义控件,于是就有了本系列文章. 开源地址:https://gitee.com/kwwwvagaa/net_winform_custom_control ...
- 走进JavaWeb技术世界5:初探Tomcat的HTTP请求过程
初探Tomcat的HTTP请求过程 前言:1.作为Java开发人员,大多都对Tomcat不陌生,由Apache基金会提供技术支持与维护,因为其免费开源且易用,作为Web服务器深受市场欢迎,所以有必要对 ...
- java并发系列 - 第28天:实战篇,微服务日志的伤痛,一并帮你解决掉
这是java高并发系列第28篇文章. 环境:jdk1.8. 本文内容 日志有什么用? 日志存在的痛点? 构建日志系统 日志有什么用? 系统出现故障的时候,可以通过日志信息快速定位问题,修复bug,恢复 ...
- js全选与取消全选
实现全选与取消全选的效果 要求1(将军影响士兵):点击全选按钮,下面的复选框全部选中,取消全选按钮,下面的复选框全部取消 思路:复选框是否被选中,取决于check属性,将全选按钮的check属性值赋值 ...
- zabbix利用自带模板-监控mysql性能
环境: zabbix3.4.4 mariadb 5.5.56 要求: 利用zabbix 自带的模板 监控mariadb 上的 并发连接数,慢查询数量,增删改查.请求流量带宽,mysql响应流量带宽等 ...
- Linux网络问题排错
前言 作为一名软件工程师,Linux相关的知识是一个不可或缺的技能点,而网络问题往往是初学者接触Linux时最先碰到的一只拦路虎,本篇博客将系统的讲解一个解决Linux网络问题的通用方法论,一个科学的 ...
- maven项目编译通过,测试用例卡住,断点也用不了
maven项目编译通过,测试用例卡住,断点也用不了.如下图 maven的tomcat插件可以运行没报错,但是网页访问一直转圈 原因: 最后发现是typeAliasesPackage这里设置了别名,所以 ...
- application.yml 增加数据库连接,重启日志卡死
SpringBoot引入JPA,application.ymlapplication.yml增加数据库链接参数,启动卡死,日志没有动,如下图 折腾好久,后面发现用 Maven的package 过程中 ...