0x01引言
今天做一道逆向的题时,使用od打开exe文件后,按F8一直单步执行到最后结束了也没输出任何东西
然而正常执行exe文件是这个样子的
琢磨了好久....然后注意到这是一个多线程程序。由于od同时只能跑一个线程,一个线程在调试的时候,其它线程是暂停的。所以我一直f8的时候子线程根本没有运行就跑完了...
0x02思路
我们的目标是输入正确的flag,所以只要把断点下在判断flag是否正确的汇编代码行就ok了。
0x03步骤
1:将文件拖入od,我们发现已经有两个线程,一个主线程,一个子线程2:点击调试->运行线程(F11)直到出现输入flag的字样
3、打开ida,查看判断flag处的汇编代码,并记下关键汇编代码行,在od中进行搜索(ctrl+f)并下断(F2)
4、下好断点后随便输入flag并运行(F9)到断点处后,单步执行(F8),即可看到真实flag
0x04 tips
点击设置->设置(O)中设置有新线程时暂停
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。