首页
社区
课程
招聘
[原创]签到题 拜师学艺 WriteUp
发表于: 2021-5-10 16:59 2666

[原创]签到题 拜师学艺 WriteUp

2021-5-10 16:59
2666
  1. 定位程序Main(脱到IDA)

  2. sub_401470是SMC的解密部分,动态调试步过

  3. 检测flag是否以“flag{”开头

  4. 对flag进行解密,检测是否与“Zmxhz3tryw54dw”相等


解密算法如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
char* table = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
 
char* table_index = new char[0x400];
memset(table_index, 0xFF, 0x400);
for (int result = 0; result < 0x40; ++result)
    table_index[table[result]] = result;
 
char* src = "ZmxhZ3trYW54dWV9";
char res[13] = { 0 };
 
auto lambdaK = [table_index](auto src, auto res) {
    char c1 = table_index[src[0]];
    char c2 = table_index[src[1]];
    char c3 = table_index[src[2]];
    char c4 = table_index[src[3]];
 
    unsigned int rs = c4 + (c3 << 6) + (c2 << 0xc) + (c1 << 0x12);
 
    res[0] = *((char*)&rs + 2);
    res[1] = *((char*)&rs + 1);
    res[2] = *((char*)&rs + 0);
};
 
for (int i = 0; i < 4; i++) {
    lambdaK(src + i * 4, res + i * 3);
}
 
printf("%s", res);



[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回

账号登录
验证码登录

忘记密码?
没有账号?立即免费注册