1.还是一样,拿到文件,习惯查壳
收集信息,无壳,32位程序
2.拖入ida中
F5转伪代码的时候,显示出错,翻译一下英文
发现不能正常反编译
百度一下原因,可能有两个
1、IDA无法识别出正确的调用约定。
2、IDA无法识别出正确的参数个数。
观察call调用的函数
发现就只需调用一个参数,所以是参数问题,去掉后面的一个参数就可以了
鼠标选中该函数,然后按y键,去掉后面的那个参数(可能显示不一样,我第一次做的时候显示是..., 但是现在写的时候右显示char),然后点OK,就可以正常F5了
3.进入主函数
发现就是一个简单的异或
接下来就是抠数据,然后写脚本
tmp=[0x4D,0x53, 0x41, 0x57, 0x42, 0x7E, 0x46, 0x58, 0x5A, 0x3A,0x4A,0x3A, 0x60, 0x74, 0x51, 0x4A, 0x22, 0x4E, 0x40, 0x20,0x62, 0x70, 0x64, 0x64, 0x7D, 0x38, 0x67]
flag=“”
for i in range(27):
flag[i]=i^tmp[i]
print(flag)
最后得出flag为MRCTF{@_R3@1ly_E2_R3verse!}
拿到网站进行验证
正确!!!!!