OD之多线程调试

0x01引言

今天做一道逆向的题时,使用od打开exe文件后,按F8一直单步执行到最后结束了也没输出任何东西
OD之多线程调试_第1张图片
然而正常执行exe文件是这个样子的
OD之多线程调试_第2张图片
琢磨了好久....然后注意到这是一个多线程程序。由于od同时只能跑一个线程,一个线程在调试的时候,其它线程是暂停的。所以我一直f8的时候子线程根本没有运行就跑完了...
image.png

0x02思路

我们的目标是输入正确的flag,所以只要把断点下在判断flag是否正确的汇编代码行就ok了。

0x03步骤

1:将文件拖入od,我们发现已经有两个线程,一个主线程,一个子线程
image.png

2:点击调试->运行线程(F11)直到出现输入flag的字样
OD之多线程调试_第3张图片

3、打开ida,查看判断flag处的汇编代码,并记下关键汇编代码行,在od中进行搜索(ctrl+f)并下断(F2)
OD之多线程调试_第4张图片
OD之多线程调试_第5张图片

4、下好断点后随便输入flag并运行(F9)到断点处后,单步执行(F8),即可看到真实flag
OD之多线程调试_第6张图片

0x04 tips

点击设置->设置(O)中设置有新线程时暂停
OD之多线程调试_第7张图片

你可能感兴趣的:(安全ctf)