当前位置: 首页 > news >正文

反编译解包微信小程序

做湾区杯时也是遇到了,记录一下

小程序的后缀应为.wxapg

使用 npm i wedecode -g安装工具

运行

命令行直接输入 wedecode 即可运行, 全程自动引导

wedecode

命令行直接指定参数

# 手动指定一个包wedecode ./name.wxapkg
# 或者  编译当前命令行所在文件夹内的所有包wedecode ./
# 或者  编译当前命令行所在文件夹下名为 dirname 文件夹的所有包wedecode ./dirname
# 或者: 将编译结果输出到指定目录 --out 为输出目录wedecode ./  --out ./output_path
# 你也可以预设任意命令行参数, 在交互时将不会向您提问, 例如wedecode --out output_path --clear --open-dir

使用源码运行

git clone https://github.com/biggerstar/wedecodenpm install  # 如果 npm 安装很慢, 可以使用右侧命令换国内的淘宝源  npm config set registry https://registry.npmmirror.comnpm run start

解包后获得一个名为:
default的文件夹

这里面有一些重要的文件:
这些文件定义了小程序的全局逻辑、配置和样式。

  1. app.js - 应用程序主逻辑脚本(核心入口!)
    • 作用:这是小程序的主函数(Main函数) 所在地。它必须包含一个 App()函数,用于注册小程序应用实例。
    • 逆向重点:这是你分析的第一站。在这里你可以找到:
      • onLaunch:小程序初始化时执行,可能包含初始化的关键逻辑。
      • onShow:小程序启动或从后台进入前台时触发。
      • globalData:全局数据对象,可能存储着关键变量或状态。
  1. app.json - 全局配置文件
    • 作用:对小程序进行全局配置,包括:
      • pages数组的第一项就是小程序的初始页面,这是重要的入口信息。
      • window:定义窗口的背景色、导航栏标题等。
      • 其他组件和插件配置。
    • 逆向重点:查看 pages字段,了解小程序有哪些页面,并确定首页是哪个,从而找到下一个分析目标。
  1. app.wxss - 全局样式表
    • 作用:定义小程序所有页面的公共样式(类似 CSS)。
    • 逆向重点:通常与核心逻辑关系不大,主要用于美化。逆向时可以暂时忽略。
  1. app-config.json
    • 作用:这通常是微信开发者工具或第三方框架(如uni-app)生成的额外配置文件,用于指定一些编译或项目设置。其内容可能与 app.json部分重叠或补充。
    • 逆向重点:可以快速浏览,了解项目使用的基础库版本等信息,但通常不包含核心业务逻辑。

我们一般是通过页面互动,所以先看app.json的pages

提示入口点在index/index.js

经常分析index.js,得知逻辑在一个 .wasm后缀的文件里

wasm是 WebAssembly 的缩写。

wasm 并不是传统意义上汇编语言(Assembly),而是一种中间编译的字节码,可以在浏览器上运行非 JavaScript 语言,只要它能被编译成 wasm。

IDA并不能反汇编,可以JEB反汇编

int c(char* param0) {char* ptr0;int v0;int* ptr1;int v1;char* ptr2;char* ptr3;char* ptr4 = param0;if((int*)((int)param0 & 0x3) == 0) {loc_50000039:do {ptr2 = param0;param0 += 4;v1 = *(int*)ptr2;}while((((0x1010100 - v1) | v1) & 0x80808080) == 0x80808080);do {param0 = ptr2;++ptr2;}while(*param0);loc_50000079:ptr1 = param0 - ptr4;}else if(*param0 != 0) {do {++param0;if((int*)((int)param0 & 0x3) == 0) {goto loc_50000039;}}while(*param0);goto loc_50000079;}if(ptr1 != 38) {return 0;}do {v0 = (unsigned int)*(ptr3 + 0x400) ^ (int)*(ptr3 + ptr4);if(v0 != 0x99) {break;}ptr0 = ptr3 + 1;++ptr3;}while(ptr0 != 38);return (int)(unsigned int)(v0 == 0x99);
}

得知要让所有的东西和key xor ==0x99,直接将里面数据异或可得

http://www.hskmm.com/?act=detail&tid=39494

相关文章:

  • 浅谈C++中的作用域
  • 2025年摩托车厂家权威推荐榜:覆盖街车、跑车、巡航车及越野车型的全方位选购指南与实力解析
  • 解包魔改pyinstaller
  • 2025年锡条厂家推荐排行榜,高温抗氧化锡条,焊接专用锡条,电子行业锡条,工业级锡条公司精选
  • 类和对象project3
  • 2025年透声膜厂家推荐排行榜,防水透声膜,防水透气透声膜,手表透气透声膜,耳机透气透声膜,智能手环透声膜公司推荐
  • 2025年冠晶石厂家推荐排行榜,外墙冠晶石,内墙冠晶石,防霉冠晶石,水包水冠晶石,水包砂冠晶石,耐污冠晶石,自洁冠晶石公司推荐
  • 安装配置 Claude Code Router 备忘录
  • 2025年包装机厂家权威推荐榜单:全自动包装机,真空包装机,食品包装机,立式包装机源头厂家综合实力解析
  • 2025年自动包装机厂家推荐排行榜:食品包装机,药品包装机,五金配件包装机,全自动包装设备公司精选
  • 2025 年 10 月系统门窗厂商榜单揭晓,专业智造实力与品牌保障口碑优选
  • 2025年环境试验设备厂家推荐排行榜,冷热冲击/高低温/快速温变试验箱,氙灯/紫外耐候气候环境试验箱,步入式/恒温恒湿试验箱,高压加速老化/HAST/PCT试验箱,机械环境/淋雨/砂尘试验箱公司推荐
  • OI 笑传 #23
  • 2025年半自动包装机厂家权威推荐榜:食品/医药/化工行业专用机型精选,高效稳定与性价比之选
  • [ java 锁 - 04 - Integer o = 1 作为 锁的问题]
  • 2025年提升机厂家权威推荐榜:自动提升机、垂直提升机、斗式提升机、物料提升设备源头厂家精选
  • 2025年自动提升机厂家权威推荐榜单:专业制造与高效解决方案深度解析
  • [java 锁 - 03 重入写法 ]
  • 2025年包装机厂家权威推荐榜:自动包装机,半自动包装机,高效包装设备源头厂家精选与选购指南
  • golang: gin项目常用第三方库
  • ssh: 连接报错
  • python3: ubuntu上安装时报错: No module named zlib
  • OI 笑传 #22
  • 实用指南:Golang 中的字符串:常见错误和最佳实践
  • 2025年自动上料机厂家推荐排行榜:螺旋上料机,真空上料机,粉末上料机,颗粒上料机专业制造商精选指南
  • 接口幂等性
  • 20232315 2025-2026-1 《网络与系统攻防技术》实验三实验报告
  • 2025长沙1024程序员日:为开发者职业发展插上腾飞之翼
  • 2067C cf1500
  • 兼职日志-mysqlpython出图