新手一枚,如有错误(不足)请指正,谢谢!!
<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
提交后显示正确。