exe文件地址:
链接:https://pan.baidu.com/s/1krtjBco_cDtnt9SGeOw0Bg
提取码:znh9
step1:先查壳。
拉到die里面。看到是32位的。
step2:再拉到IDA PRO里面查看。
一路点击ok,可以看到出现了下面这样的。
然后按F5查看类c代码。
再点条件判断的函数check可以发现这个flag长度为14。
注意:有个小经验。不要所有的函数都尝试点开去分析。记住我们只分析人写出来的代码。就像上面代码中的
这些函数就是我们编程时候用到的系统的库里面的函数。这些我们没必要去分析,只需要知道他的作用即可。
step3:阅读代码之后发现是一个基本的异或运算。用到了a=a^b^b这个公式。写个python即可解码。
分析程序:
,看到有个enflag的变量特别瞩目,双击查看。
他给我们定位到这条语句。这句话的意思再汇编里面就是将unk_406044处的双字型数据赋给enflag,因此我们只需要查看这个数据是什么即可,再次双击。
我们只取前七个数据, 发现都是二进制数据。
flag = 'moectf{'
str = b"moectf{" #由于异或运算是二进制层面,所以我们得先将其转换为二进制。
list = [0x28, 0x15, 0x3A, 0x1B, 0x44, 0x14, 0x6]
for i in range(len(list)):
flag += chr(str[i] ^ list[i])
print(flag)