新手一枚,如有错误(不足)请指正,谢谢!!
<mark>个人博客:点击进入</mark>
题目链接:攻防世界-re-csaw2013reversing2
题目下载:点击下载


既然运行就能拿到flag,就直接载入OD动态调试吧

F8一点点单步向下,来找到确切弹窗的位置
发现执行到这里的时候出现了弹窗,在这个位置下断点,重新载入

然后F9直接运行到此地址,F7进入call
然后F8单步,来到这里,jnz跳转未实现,je跳转实现

执行了第二个messagebox函数出现乱码

既然程序执行的是错误的路径,那我们就把跳转改掉,在此call段首下断,然后删除之前的断点,重载程序F9运行
然后F8单步来到这里

修改Z标志位让他跳转实现(毕竟下面是检测是否有调试器的函数)执行了检测调试器的函数后就没再执行下面的inc
将z标志位修改为0,F8单步

当执行到int3的时候程序会退出,重载程序,nop掉他
执行到这里的时候,发现jmp会跳向程序退出,nop掉jmp

第一个弹窗什么也没输出,关闭弹窗后继续f8

这里jmp跳转后没有输出的东西了,所以将其nop掉

执行到这里的时候出现了flag

数据地址存储在eax寄存器里,在eax寄存器右键→数据窗口中跟随

然后在数据窗口复制字符串

继续运行弹窗弹出flag

提交后显示正确。