用到的软件:吾爱破解专用版的OD
题目来源:XCTF的re-game,这道题并不难,首先我们IDA反编译就能找到加密算法所在地,然后写出exp,下面我们尝试直接更改程序执行流。
一、这道题并不难,首先我们反编译
会发现这里有个判断函数:而那个sub_457AB4()就是打印输出flag的地方。
因此我们的思路就很明显了:跳过前面的if判断语句,直接执行sub_457AB4这个函数。
二、把程序拉到这里面。
打开
然后出现这个页面表示成功了。
然后跟ida一样首先上来看看字符串啥的。点-插件-中文搜索引擎-智能搜索。
发现标志型字符串。
双击来到汇编程序中,这样就找到目标跳转函数的地址了:是
然后我们在程序刚开始的位置,找一条无关紧要的指令换成:jmp 0078e96d即可。
点击地址,再按F2即是加上断点,再按一次就是取消。
找到想要修改的代码,直接右键-汇编-再填上目标跳转指令即可。如下图:
然后效果就是这个,nop是为了堆栈平衡他自己加的。我们不用管。
然后按F9执行程序即可。
就会发现,虽然报错,但是已经打印出来flag了,证明确实跳转成功了,也确实停在了我们预先打好的断点下面,程序没有乱跑。
还可以在ida里面动态调试: