首页 > 编程知识 正文

小程序解包工具,apk可以反编译成源码吗

时间:2023-05-05 10:44:35 阅读:129340 作者:494

本教程将逐步介绍如何“反向编译”其他applet的源代码,包括“解压缩”和“源代码恢复”。 主要参见雪论坛、V2EX、GitHub等网站上的帖子、教程和工具。 在此表示感谢。 参考链接在文章的底部,还添加了我自己的理解和总结。

小知识是团队的公众号,每周共享原创文章,我们的文章将以公众号首先发布。 请注意看更多的内容。

使用微信开发者工具开发applet后,单击“上传”按钮,微信开发者工具进行“编译”,对JS代码进行压缩混淆,将wxml、wxss、资源文件等作为一个

所以要“反向编译”小程序,首先要得到与小程序对应的. wxapkg包。

以前,在V2EX上有一篇名为https://www.v2ex.com/t/419056的文章,介绍如何从一个URL直接下载每个小程序的. wxapkg,但很快就被微信阻止了。

因此,只能从手机端开始,通过手机找到微信客户端下载本地存储的小软件包。

获取小程序的. wxapkg文件工具:越狱的iPhone手机或根安卓手机

本文以iPhone 4S、iOS 8.4.1为例,对微信版本v6.6.6。

在越狱的iPhone上打开Cydia,搜索并安装iFile和Filza等文件以浏览App,打开iFile和Filza,然后在本地App安装目录:/var/mobile/containing 这个时候,这个

“微信”目录(297286 ce-9055-400 a-99fa-d2d7c 0735 DCF文件夹支持我的手机) ),然后单击访问此ippa iOS开发人员可以在此目录当前微信“沙箱”目录中搜索wxapkg关键字,以在当前iPhone上找到微信下载的小程序,如下图所示。

发现所有找到的. wxapkg文件名都是以数字命名的。 图中的2.wxapkg和25.wxapkg,它们的命名有什么规则? 放在哪里了? 我们接下来往下看。

经过简要分析,我们发现微信下载的软件包存储在以下目录中:

/path/to/weichatsandbox/library/wechatprivate/{userid}/weapp/local cache/release /复制代码其中{ userid }

/var/mobile/containers/data/application/297286 ce-9055-400 a-99fa-d2d7c 0735 DCF/library/wechatprivate/c1115

目录中有一系列以wx .开头的文件夹。 这些wx .的18位字符串是与每个applet对应的AppId,每个wx .文件夹都包含与当前applet对应的. wxapkg包。 这是以数字命名的,与数字代表着当前包为开发者第几次发布的不同。 例如,我们的“小知识”小程序共有两个版本,因此wx48.85db文件包含2.wxapkg文件。

此外,在iOS中,我们还发现微信也为每个小程序分配Sandbox文件夹,以管理小程序本地存储的数据和文件。 图:

路径如下。

/path/to/weichatsandbox/library/wechatprivate/{ userid }/weapp/sandbox/wx .(小程序AppId )代码By The Way,aye,ay

将/data/data/com.Tencent.mm/micro msg/{ userid }/app brand/pkg /代码副本. wxapkg文件复制到电脑中通过上述分析,对小程序的压力

用iPhone打开Cydia搜索并安装OpenSSH后,用iPhone

设置 > 无线局域网中查看你当前手机连接的 WiFi,并记录 IP 地址,例如我的为:192.168.1.17,然后在你的 Mac 电脑上打开终端(与 iPhone 连接同一 WiFi),就可以通过 SSH 登录到你的手机上了(具体的细节详见 Cydia 上 OpenSSH 下载页面的使用说明):

ssh root@192.168.1.17复制代码

接下来我们就可以通过 scp 命令从 iPhone 上拷贝文件到我们的电脑上了,例如,在我的 Mac 上的命令行里执行(不需要 ssh 登录到 iPhone 上,直接在 Mac 的终端上执行):

scp root@192.168.1.17:/var/mobile/Containers/Data/Application/297286CE-9055-400A-99FA-D2D7C0735DCF/Library/WechatPrivate/c15d9cced65acecd30d2d6522df2f973/WeApp/LocalCache/release/wx48...85db/2.wxapkg /Users/Zubin/Desktop/WeApp/复制代码

就可以把“知识小集”小程序的包 2.wxapkg 拷贝到我 Mac 桌面上的 WeApp 文件夹中了。

当然,如果你的电脑有安装 iTool 或者 PP助手 之类的工具,当连接已越狱的 iPhone 好像可以直接访问手机上的目录和文件,可能就不用这么麻烦了(未验证)。

.wxapkg 解包

上述费了很大周折我们终于拿到每个小程序的 .wxapkg 包,接下来我们可以对它进行分析了。首先 .wxapkg 文件到底是什么呢?你可能会认为它就是类似 Android 的 .apk 或者 iOS 的 .ipa 安装包,本质上是一个 .zip 压缩包?其实不是的!,它是一个二进制文件,实际的文件结构如下图:

图片取自文章 微信小程序源码阅读笔记,同时此文章的作者也提供了解包的脚本(各种语言的)放在了 GitHub 上:

我下载了 Python 2 的解包脚本,与 .wxapkg 文件放在一个目录,然后在命令行里执行如下命名即可得到解包后的文件:

python unwxapkg.py 2.wxapkg复制代码

以“知识小集”小程序为例,解包后得到的文件目录如下(已经基本与我开发“知识小集”小程序的工程目录一致了):

每个小程序解包后的文件都大同小异,主要包含如下文件:

app-service.js: 小程序工程中所有 JS 文件的汇总,已被混淆;app-config.json: 小程序工程 app.json 以及各个页面的 JSON 配置文件汇总,可直接查看;page-frame.html: 所有页面的 .wxml 和 app.wxss 样式文件的汇总,可读性差,需要还原;*.html: 包含每个页面对应的 .wxss 信息,可读性较好;资源文件: 各类图片、音频等资源文件 总结

本文主要介绍了如何获取小程序的 .wxapkg 包文件,以及如何解包获得小程序“编译”混淆后的代码和资源文件。在下一篇文章《微信小程序“反编译”实战(二):源码还原》将介绍如何将 .wxapkg 包内内容还原为"编译"前的内容。

参考链接 看雪论坛V2EXGitHub

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。