爬取小程序线上代码

爬取小程序线上代码

因为某种原因,丢失了部分小程序代码,不过程序在线上是正常运行的,于是找到了一款工具,可以爬取线上的代码,在自己慢慢的反编译回来

需要的工具

准备环境

  1. 安装夜神 (没啥好说的)
  2. 打开安卓模拟器,安装 微信,还有 RE文件浏览器
  3. 打开模拟器的 root 权限(方便 RE 文件浏览器到里面找文件)其实是默认开启的,自己确认下就好

在这里插入图片描述

  1. 登陆微信,打开对应的小程序(如果小程序有分包的话,要把分包给触发到才行,到处点点把)

获取 wxapkg

打开我们已经安装的 RE文件浏览器 。如果要root权限记得通过
wxappUnpacker 的说明已经很清楚了。不过有一点可能会蒙,那就是文件的目录文件!

原文: 需要的wxapkg文件 在 /data/data/com.tencent.mm/MicroMsg//appbrand/pkg/ 在这个目录下

:注意 MicroMsg//appbrand/。在MicroMsg 后面是双斜杠!那么里面的内容是不确定的。这句话怎么理解呢,看下面的图:

在这里插入图片描述

  • 我们要的文件在 6d98xxxxxb6 文件夹里面。而同级目录还有一个appbrand。这就很容易进了appbrand。发现找不到对应的文件
  • 其次,每个小程序对应的文件夹也不一样,所以你们根据文件夹修改时间自行判断把!
  • 还有就是为啥要 root 权限的问题:不给 root 权限,可能进来不了,或者进来了没得把文件拷贝走,所以 root 一开始记得给

2020/6/11 更新 为什么re文件管理器需要root权限。因为我们需要把所有的文件权限改为 7777 才可以,在 pkg 文件目录中,长按,修改权限,把所有的权限都勾上,有点linux基础的都知道777含义,如果不把权限选到777.文件拷走之后还是不能使用!

能理解这个目录结构后,继续下一步,找到我们的 wxapkg 文件
在这里插入图片描述

一个小程序可能有多个 wxapkg 。因为还有可能有分包嘛。

  • 回到 pkg 的文件夹,长按,压缩,
  • 然后找到压缩包的位置,长按,发送到微信。
  • 电脑端登陆微信,在文件传输助手把 pkg 压缩包发到电脑端

选择趁手的工具

下面的工具都需要 node 支持。如果一个开发电脑连 node 环境都没有那就说不过去了~安装 node 就跳过了。

文章一开始提到了 2 个库,其实都是基于同一个库做的封装
。原先的库已经不存在了,不过在 replace 还是可以下载到源码,感兴趣可以看下 https://github.com/qwerty472123/wxappUnpacker/releases

CrackMinApp

链接:https://github.com/Cherrison/CrackMinApp

优点:

  • 图形化界面
  • 完全脱离了命令行操作

缺点:

  • 无法解析分包
  • 必须放在 D 盘根目录才能使用(也不算缺点,就一点小瑕疵,初次使用还是稍微摸索了一下才知道)

下载后作者也说的很清楚了,把 pkg 里面的包放进去指定目录,然后打开图形界面,点击就能解析

因为包很多,解析和顺序没关系的,比如有 10 个包,哪个包先解析都 OK。可是他只能解析主包,分包解析不了。解析出来只有对应的目录结构和 .html 文件,没有我们要的 JS 和 wxss。wxml

but! 折腾了那么久,怎么可能就在这里就放弃了!接下来就是重点介绍的库 wxappUnpacker !

wxappUnpacker

链接:https://github.com/xuedingmiaojun/wxappUnpacker

优点:

  • 支持分包解析

缺点:

  • emmm。没有缺点!

在 github 下载后:
在这里插入图片描述

  • 安装 node 依赖
npm install
  • 把我们小程序的 pkg(这就是在夜神里面拿出来的包) 文件夹解压缩,然后放到这个库的根目录 pkg 中(其实放哪里都行,我只是方便自己找~)

  • 开始反编译
    在下载的库的目录下

./bingo.sh ./pkg/你的小程序代码包.wxapk -s=./
  1. ./pkg/你的小程序代码包.wxapk 这个是你的代码包的路径
  2. -s 是为了解析子包的,当然主包也可以解析,所以都加上把,-s 后面是说解析后的子包输出的路径,我让他输出到对应的目录下了

如果代码包很多,岂不是要弄到手软?记错了当前弄到第几个咋办!

Linux/Shell环境下,命令行天下第一!下面介绍批量解析!。前提是有 shell 环境,gitbash 也能凑合用

for wxpkg in ./pkg/*.wxapkg;do ./bingo.sh $wxpkg -s=./;done
  • for in 循环
  • 在 ./pkg 目录下的全部以 .wxapkg结尾的文件
  • 执行编译命令,$wxpkg 就是 for in 的变量名。
  • 老规矩解压到当前的包目录下
  • 执行后可能会有些报错,emmm 没去深究了

在这里插入图片描述

执行结果:
在这里插入图片描述

虽然是抛出了异常,不过我们代码还是生成了,看下目录:
在这里插入图片描述

进到某一个分包,也是 OK 滴
在这里插入图片描述

为啥对应目录的 json 文件没有了!

json 文件都在主包才解析了出来,因为 json 文件有可能配置了一些组件,可以在 pkg 目录下搜索下*.json 就会发现谁是主包了~

爬下来的代码能不能运行?

这个我还真没试过~。因为我也只是为了找回自己缺的一些代码。不过能确定的就是 wxml.wxss.json 文件都是原封不动的,其次就是 js 文件,JS 肯定是被打包压缩过了。也不能说看不懂,只是变量名被压缩了,根据目录结构复原后,对应资源引入成功,跑起来还是可以的

希望大家都不要丢代码把,毕竟压缩的 JS 看的真的难受啊~

猜你喜欢

转载自blog.csdn.net/Jioho_chen/article/details/105121377