前提:略微有些编程基础。目的:C#实现小程序包wxapkg文件解密算法。
工具:vs2015+百度 .net版本选择2.0(环境依赖低)
备注:热乎的,昨晚刚完成。已知有python版本,有点重复造轮子。但exe的不用其它依赖,双击打开就能用岂不美哉!
首先我们通过GitHub大神获得小程序包已知加密算法:
提示:鉴于有网友回复不知道干什么用的,因此有必要重新修改一次,写上完整的使用说明,说白了就是获取线上小程序源码的辅助工具,电脑端访问微信小程序会在C:\Users\用户\Documents\WeChat Files\Applet(即【我的文档 】下寻找WeChat Files 目录)目录以wx开头生成小程序包,不过是加密的,因此我们用此程序解密,配合小程序解包工具获取源码,比如wuWxapkg.js获取小程序源码。
一般的小程序反编译教程就是手机root然后在XXX目录下寻找wxapkg包,或者安装模拟器然后在寻找,其实可以更简单:登录电脑端微信,访问你想解包的小程序,小程序包会在:我的文档\WeChat Files\Applet下生成wx开头的文件夹,里面包含__APP__.wxapkg文件,这个文件就是小程序包(不要复制出来)。
PC端微信把wxapkg给加密,加密后的文件的起始为V1MMWX。
加密方法为:
首先pbkdf2生成AES的key。利用微信小程序id字符串为pass,salt为saltiest 迭代次数为1000。调用pbkdf2生成一个32位的key
取原始的wxapkg的包得前1023个字节通过AES通过1生成的key和iv(the iv: 16 bytes),进行加密
接着利用微信小程序id字符串的倒数第2个字符为xor key,依次异或1023字节后的所有数据,如果微信小程序id小于2位,则xorkey 为 0x66
把AES加密后的数据(1024字节)和xor后的数据一起写入文件,并在文件头部添加V1MMWX标识
一 准备工具
1 node.js 运行环境
下载地址:https://nodejs.org/en/
2 反编译的脚本
https://github.com/xuedingmiaojun/wxappUnpacker
3 小程序包解密工具【C#版原创】
https://share.weiyun.com/uMqNGOXv
二 开始反编译
1 获取小程序pkg包:
登录电脑端微信,访问你想解包的小程序,小程序包会在:我的文档\WeChat Files\Applet下生成wx开头的文件夹,里面包含__APP__.wxapkg文件,这个文件就是小程序包(不要复制出来)。
我们用解密工具解密:
下载地址:https://share.weiyun.com/uMqNGOXv
核心代码移步:https://www.52pojie.cn/thread-1336342-1-1.html
解密后的小程序包就在程序的 wxpack目录下以小程序ID命名。
2 安装脚本依赖
利用cmd cd到你刚刚下载下来的脚本目录下,执行npm install安装依赖
3 执行脚本命令
复制小程序pkg的路径执行bingo.bat d:\wxpack\wx1e4eb0f8a10e5177.wxapkg
三 反编译成功