补充:IDA里面十六进制转字符的快捷键:R
方法一
第一步PEID,这里可以看出程序是32位的
查壳:(无壳)
拖进IDA32分析:
先查看伪码:F5
找到main函数
发现有许多 mov 指令,66H 是 ‘f’,6CH 是 ‘l’,推测这就是 flag 的 ASCII 码值。
得到flag:flag{Re_1s_S0_C0OL}
方法二
也可以用动态调试的方法。
动态调试这就需要用到 OD。先下一个断点,然后单步运行,看看栈里的变化。
例如,我就找个 0x00401475 的地址。
在 OD 里,Ctrl+G,搜索地址。找到指令之后按 F2 下断点。
5、按 F9 运行程序,他会在刚才的断点地方卡住,这个时候我们就能按 F8 单步运行了;
6、flag 值是从 ESP+0x2F 开始,可以用计算器算一下,ESP 是 0x61FEF0,加 0x2F 就是 0x61FF1F,按照这个地址去栈内看。
单步运行了 4 次之后,这里可以看到 flag 的反向字符串,然后继续执行到最后一条 mov,完整的 flag 就出来了。
手动反转一下,就是:flag{Re_1s_S0_C0OL}