一个简单的微信小程序

这道题并不难,只要你会微信小程序解包即可。在一般情况下,打包后微信小程序的后缀名是.wxapkg. 以下是我推荐的一个微信小程序逆向工具的安装方法

哦,对,他叫wedecode.

步骤如下:

  1. 首先,下载node.js.此为下载地址,下载过程中默认写入环境变量。
  2. 重启(这个因人而异,我的电脑需要重启才可以使用新的环境变量)
  3. win+r 输入cmd之后再输入npm i wedecode -g

等待安装完成…

完成后可以直接在命令行使用,我比较喜欢用UI,直观

命令行输入 wedecode ui会弹出如下界面

访问得

把题目给的附件拖进去即可(记得补全后缀名),一般他会把结果放在C:\Users\acer\workspaces下一个乱码文件夹的OUTPUT里


pages/index/index.js分析

1
2
3
var e = require("../../@babel/runtime/helpers/regeneratorRuntime"),
t = require("../../@babel/runtime/helpers/asyncToGenerator"),
r = require("../../utils/validator.js");

它调用了validator.js,同时validator.js又复制了validator.wasm并加载

这可以说明flag相关在wasm文件中。通过wasm2c转换成c代码(一共近1000行,老多了)抽象出来与flag有关的核心代码如下

1
2
3
4
5
6
7
8
9
10
11
int validate(unsigned char *input) {
if (strlen(input) != 38) return 0;

for (int i = 0; i < 38; i++) {
if ((input[i] ^ 0x99) != data_segment[i])
return 0;
}
return 1;
}

static const data_segment[] = { 0xff, 0xf5, 0xf8, 0xfe, 0xe2, 0xff, 0xf8, 0xfc, 0xa9, 0xfb, 0xab, 0xae, 0xfa, 0xad, 0xac, 0xa8, 0xfa, 0xae, 0xab, 0xa1, 0xa1, 0xaf, 0xae, 0xf8, 0xac, 0xaf, 0xae, 0xfc, 0xa1, 0xfa, 0xa8, 0xfb, 0xfb, 0xad, 0xfc, 0xac, 0xaa, 0xe4, };

其实这就是对一个数组的数据的简单异或。

flag{fae0b27c451c728867a567e8c1bb4e53}