动态调试练习
题目来源:xctf的gametime
分析流程:
先运行程序,发现是一个游戏,按照要求分别按空格、x、m键,挺考验手速的
最后可以玩出来flag,但是出现flag的画面一闪而过,来不及截屏
所以我就录屏
开玩笑,要用逆向的方法解出来才行
载入od
载入od中,f9到程序输出
的地方,定位输出s和失败的函数,下断点
重新载入程序,f7 进入函数查看,
调试到这里时发现:若在该处不进行跳转则程序会跑到输出失败的函数,所以在这里将jne改为jmp
重新运行(记得再修改一下,重新运行会丢失修改效果,可能可以设置为不丢失,但我不会)
发现果然没有失败的提示了
但是运行到游戏的第二部分时,又会有失败提示
推断应该和刚才的情况一样
于是再追踪到输出错误的地方f7进入
调试到和刚才一样不跳转就输出错误的地方
jne改为jmp
再次运行即可得到正确flag