
unwxapkg 微信小程序解包从编译到读源码的最短路径【免费下载链接】unwxapkgWeChat applet .wxapkg decoding tool项目地址: https://gitcode.com/gh_mirrors/un/unwxapkgunwxapkg 是一个用 Go 写的微信小程序解包工具负责把.wxapkg格式的压缩包还原成可读的目录结构——页面 JS、WXML 模板、样式和图片资源都能完整落盘。它只有两个参数、核心解包逻辑约 170 行是理解 wxapkg 二进制格式最轻量的入口。为什么 wxapkg 不能直接解压.wxapkg不是 zip也不是 tar而是微信自定的私有容器格式固定 14 字节文件头 一段文件清单 裸数据区清单里记录每个文件在数据区中的偏移和长度。系统自带的解压工具不认这个格式所以直接unzip只会得到乱码。unwxapkg 做的事情就是按这个格式把每个文件按偏移量拷出来。它的能力边界也很清晰只做解包不做重打包不做代码美化不处理加密。仓库自带的dest/102.wxapkg约 714KB是个真实小程序包拿来验证环境最合适。三步跑通编译与首次解包环境要求只有一条Go 1.14 及以上go.mod里声明的版本。克隆后直接编译git clone https://gitcode.com/gh_mirrors/un/unwxapkg cd unwxapkg go build -o unwxapkg ./cmd预期得到可执行文件unwxapkg。入口只有 33 行见 cmd/unwxapkg.go它解析参数后把路径塞给UnWxapkg结构体出错直接 panic。用仓库自带的样例跑第一次解包./unwxapkg -f dest/102.wxapkg这是整个流程的高光时刻终端会先回显解析出的文件头信息再逐行打印每个被写出的文件CompressedFile: dest/102.wxapkg HeaderLength: 14 InfoListLength: 3696 DataLength: 727721 {/images/icon-816-red.png 26607 997} {/images/error-no-auth.png 27604 8718} ...共 95 个文件当前目录下会多出102/文件夹文件名去扩展名打开能看到images/等子目录里的完整资源。-f指定输入文件-o指定输出根目录默认就是当前目录.。去哪里拿真实的 wxapkg 文件样例跑通后要解自己的小程序包得先拿到文件。项目 README 给出的路径是网易 MuMu 模拟器装好微信、打开目标小程序后用 RE 文件管理器进入/data/data/com.tencent.mm/MicroMsg/{十六进制字符串文件夹}/appbrand/pkg/把.wxapkg文件拷出来放进项目任意目录比如dest/然后./unwxapkg -f dest/你的包名.wxapkg -o ./out预期结果和解样例时一样回显文件头 逐文件打印解包目录建在./out/你的包名/下。这里提醒一句解包对象请限于自己有权限研究的应用遵守微信小程序平台规则。读懂那 14 字节文件头工具的核心全在 pkg/wxapkg.go解析分三步ReadHeader读头、GenFileList读清单、writeFile落盘。文件布局是解一切报错的基础偏移长度含义01起始魔数固定0xbe5–84文件清单长度大端 uint329–124数据区长度大端 uint32131结尾魔数固定0xed清单紧跟在 14 字节头之后前 4 字节是文件总数之后每个条目依次是nameLen(4字节) 文件名 数据区偏移(4字节) 文件大小(4字节)全部大端。以样例包为例头里声明 95 个文件清单长 3696 字节14 3696 727721恰好等于文件总大小可以自校验。这里有个值得注意的实现细节写文件用的是ReadAt(buf, item.Start)偏移是相对文件起点的绝对位置工具不需要边读边跳过。另外 writeFile 里对已存在的目标文件是直接跳过的——同一路径重复解包不会覆盖想强制刷新得先清掉输出目录。参数调整与报错对照常用调参就一条-o改输出位置。./unwxapkg -f dest/102.wxapkg -o ~/tmp/wx解包结果落在~/tmp/wx/102/。其余情况基本是输入文件的问题对照表如下现象原因panic: open xxx: no such file or directory-f路径写错main 里出错直接 panicmagic number is not correct文件首字节不是0xbe拿到的不是合法 wxapkg读到头就 EOF文件被截断或压缩传输时损坏重新提取一份测试用例 pkg/unwxapkg_test.go 基本就是照着这几类错误写的包括空文件、单字节文件、非法输出路径想加自己的边界 case 可以照着抄。下一步想改行为最短的切入点是给UnWxapkg结构体加字段比如跳过指定目录改动范围不超过 pkg/wxapkg.go 一个文件想扩展成解包 美化 JS的流水线则把writeFile的落盘动作替换成自定义处理器即可。先拿dest/102.wxapkg反复试参确认go test ./pkg全绿再动格式解析。【免费下载链接】unwxapkgWeChat applet .wxapkg decoding tool项目地址: https://gitcode.com/gh_mirrors/un/unwxapkg创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考