Lazy loaded image
逆向学习
Lazy loaded image小程序mac反编译最详细教程
Words 800Read Time≈ 3 min
2024-4-25
2024-5-6
type
Post
status
Published
date
Apr 25, 2024
slug
reverse
summary
tags
开发
逆向
category
逆向学习
icon
password

step1:先找到目标小程序的APPID

在手机打开小程序(电脑版的小程序没有),查看小程序【更多资料】,这里的AppID是:wxb6bbc….2564
notion image
 

step2:在mac系统中找到小程序对应的wxapkg包

小程序有分包会有多个wxapkg包,上述案例中的小程序就存在分包

情况一:mac微信版本3.4.0~3.8.0(不包括3.8.0)

小程序wxapkg路径在:
notion image
notion image

情况二:mac微信版本 > 3.8.0

小程序wxapkg路径在:

step3:解密wxapkg包

情况一:mac微信版本3.4.0~3.8.0(不包括3.8.0)

3.4.0~3.8.0微信版本的wxapkg包是加密,需要用到解工具先解密,否则无法解包
  1. 下载解密工具:git clone https://github.com/TinyNiko/mac_wxapkg_decrypt
  1. 进入到mac_wxapkg_decrypt目录,这里我们采用解密工具的way 2方式解密,修改_agent.js两个变量值
    1. 打开任意一个微信小程序, 通过ps -ef | grep Mini 找到小程序的 pid, 这里会出现2个小程序,随便选一个就行
      1. notion image
    1. 安装frida命令,这里自行谷歌百度安装
    1. 执行命令:frida 46861 -l _agent.js,显示write file done则表示解密成功,这时候会在路径 /Users/ewingyangs/Downloads/wxb6bbbc1a3caa2564_decrypt.wxapkg 生成一个解密后的wxapkg文件
      1. notion image

    情况二:mac微信版本 > 3.8.0

    3.8.0 开始采用了新的架构,wxapkg 未加密,不需要进行解密操作,直接用wxappUnpacker解包__APP__.wxapkg就行。
     

    step4:解包wxapkg(反编译)wxappUnpacker VS unveiler

    情况一:只有单个wxapkg包

    notion image
    反编译工具:
    https://github.com/larack8/wxappUnpacker (基于wxappUnpacker,封装了wuWxapkg.js命令,使用更加方便)
    1. 下载反编译工具:git clone https://github.com/geilige/wxappUnpacker
    1. 进入到wxappUnpacker目录,按照github指引安装依赖
    1. 执行命令:
      1. 成功在/Users/ewingyangs/Downloads目录生成反编译后的文件夹
      notion image
       

      情况二:有多个wxapkg包(主包、子包)

      notion image
      子包解包:如果有多个wxapkg子包,执行node wuWxapkg.js xxx_a.wxapkg可能会报错May be this package is a subPackage which should be unpacked with -s,因为这个包可能是子包
      (如果子包不全,可以多触发一下mac上小程的功能,让小程序加载到全部子包)
      notion image
      主包解包:随机找到主包后执行解包命令node wuWxapkg.js xxx_a.wxapkg,同样会另外的错误:SyntaxError: Unexpected end of input ,原因应该是对于大部分新的小程序,wuWxapkg.js这个解包工具已经过时无法使用了。
      这种情况下推荐使用unveiler 工具(https://github.com/r3x5ur/unveilr?tab=readme-ov-file#readme)但是貌似是收费的,我都是需要的时候按天购买。
       

      unveiler解包

      解压单个包:unveiler wx "/Users/ewingyangs/Downloads/225_2386.wxapkg”
      解压多个包:unveiler wx "/Users/ewingyangs/Downloads/test_package” (需要把主包和子包解密后的wxapkg放在同个目录)
       
      解包后用微信小程序工具打开后效果:
      notion image
      上一篇
      高可用架构设计要点
      下一篇
      Notion 剪藏Skill+Cli,一行命令把任意链接存进 Notion