先用IDA打开,无main函数,查字符串
先进入个关键词
解码:
发现是干扰项
进入第二个关键词所在函数
在汇编界面,找到v12
逆向运算得到v15
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
int main(){
char v15[]={0x49,
0x6F,
0x64,
0x6C,
0x3E,
0x51,
0x6E,
0x62,
0x28,
0x6F,
0x63,
0x79,
0x7F,
0x79,
0x2E,
0x69,
0x7F,
0x64,
0x60,
0x33,
0x77,
0x7D,
0x77,
0x65,
0x6B,
0x39,
0x7B,
0x69,
0x79,
0x3D,
0x7E,
0x79,
0x4C,
0x40,
0x45,
0x43};
int i;
char result[strlen(v15)];
for ( i = 0; i < strlen(v15); ++i ){
result[i] =v15[i] ^ i;
}
printf("%s",result);
}
得到
到这里后没什么线索了,就在能再去找了
发现可疑字符串
进入函数
根据前面的提示,前4个字符是flag,猜测这个函数大概的意思就是v1分别和byte_6CC0A0和byte_6CC0A3的前四个字符异或是flag,就进行第二个循环,先可以编写解题脚本了
1 | #include<stdio.h> |
1 | flag{Act1ve_Defen5e_Test} |