mac端小程序获取源码

3,928 阅读3分钟

前言

以往反编译小程序源码都是要从移动端获取,现在pc端(mac和win)都支持了小程序,从pc端获取显然是更方便的,由于本人使用的的macbook,本篇文章将会讨论如何从mac端获取小程序源码。

准备

工具获取

  1. 解密的脚本:github.com/TinyNiko/ma…
  2. 反编译的脚本:gitee.com/ksd/wxappUn…

系统设置

关闭macos的sip,关闭方法参考:zhuanlan.zhihu.com/p/360711896

注意参考方式是m1版本mac的关闭方式

解密

获取小程序

运行一下要反编译的包,在macos最新路径(/Users/xxx/Library/Containers/com.tencent.xinWeChat/Data/.wxapplet/packages/ )下,根据小程序appid找到要反编译的包,一般老说比较的的是主包(x x x记得替换成自己的用户名)

获取密钥

pc端的小程序都是加密的,mac平台和win平台的加密方式不一样,这里是mac平台密钥的获取方式,获取密钥这里有两种方式,这里具体讲其中一种,也是我使用的一种,注意两种获取密钥的方式都需要关闭sip,与其说是两种方方法倒不如说是两种不同的工具

方法一(LLDB)

关于lldb安装自行查找资料

  1. 先把mac os的SIP做一个disable or enable SIP,否则lldb不能attach到wechat进程上。
  2. 打开wechat,但是不登录。
  3. lldb -p wechat的pid。
  4. br set -n sqlite3_key,断点设置好后,c继续运行。
  5. 微信登录后,会break到断点上,输入memory read --size 1 --format x --count 32 $x1(这个值你们的可能不一样,注意替换)
  6. 前16位即是你本机的wechat小程序加密的密钥,而完整的32位则是本机微信聊天记录sqlite db的密钥。(总共用32位16进制的密码,使用的时候记得去掉0x,只取前面的16位)

截屏2023-03-30 17.30.36

方法二(frida)

这种方式这里就不展开说明了,可以参考 github.com/TinyNiko/ma…

解密相关包

这里要用到解密脚本decpkg.py,修改脚本里的密钥,然后运行脚本把获取到包一个个解密,建议把未解密的包还有脚本什么的放在同一个文件夹,方便处理

python3 decpkg.py input out
//input就是你要解密包,out输出包
//下面是例子
python3 decpkg.py 6b2ab5ab4fa7620c3eebfc06272ddabf.wxapkg  wx.wxapkg
//wx.wxapkg这个是解密后的包,可以随意命名
//按照这个方式解密所有的包

反编译

利用反编译脚本进行获取源码,详细的使用方法在工具下载的链接里也有,这里进行简单说明

//进入反编译的脚本里面,建议将解好密的包也放进来
//可以先解主包,一般是较大的包,运行命令前记得安装好依赖,根据工具下载里的说明安装就好
./bingo.sh wx.wxapkg
//上面的命令是当个包解出来的,下面的一般是用来解子包
 ./bingo.sh wx1.wxapkg -s=../wx

总结

总体来说获取小程序的源码不难,相关的密钥获取等也是建立在前人的基础上,有机会还会继续学习关于key获取原理等知识,探索一下密钥的生成规则,本文仅限学习交流使用

参考链接

bbs.kanxue.com/thread-2764…

cn-sec.com/archives/11…