[BugkuCTF] 入门逆向

题目链接:入门逆向

解题方法:

1、拖入 IDA 中,定位 main 函数,发现有许多 mov 指令,66H 是 'f',6CH 是 'l',推测这就是 flag 的 ASCII 码值。

[BugkuCTF] 入门逆向

 

2、有空的同学可以直接翻 ASCII 码表,翻译出 flag,懒的同学可以继续看。

3、不想查表的话也可以直接到系统栈里面去看,这就需要用到 OD。先下一个断点,然后单步运行,看看栈中的变化。

例如,我就找个 0x00401475 的地址。

[BugkuCTF] 入门逆向

4、在 OD 中,Ctrl+G,搜索地址。找到指令之后按 F2 下断点。

[BugkuCTF] 入门逆向

5、按 F9 运行程序,他会在刚才的断点地方卡住,这个时候我们就能按 F8 单步运行了;

6、flag 值是从 ESP+0x2F 开始,可以用计算器算一下,ESP 是 0x61FEF0,加 0x2F 就是 0x61FF1F,按照这个地址去栈中看。

[BugkuCTF] 入门逆向

单步运行了 4 次之后,这里可以看到 flag 的反向字符串,然后继续执行到最后一条 mov,完整的 flag 就出来了。

[BugkuCTF] 入门逆向

手动反转一下,就是:flag{Re_1s_S0_C0OL}

虽然 'L' 后面是一个中文,但是看 ASCII 码的话他是 0x7D,也就是'}',只不过跟后面的 0xBB 放在一起,OD就翻译成一个中文了。