[re]简单逆向:2020网鼎杯白虎组re 恶龙 wp
[re]简单逆向:2020网鼎杯白虎组re 恶龙 wp
题目分析
题目描述:这是一个与史莱姆和恶龙战斗的故事,请战胜三头恶龙,取得flag。张三长老说,试图patch这个程序的人会得到错误的flag…
得到题目之后,发现是一个linux的逆向。查看一下程序功能:
结合之前的描述,感觉是一个游戏题目,连续战胜三次boss,便是成功,正常套路,都要打小怪升级,然后买装备然后打boss,但,我选择1. 和史莱姆战斗,然后死了…
逆向分析程序:
程序主体就是,只要boss还存在(一共三个),那么就会指向dround(也就是菜单),然后三次之后就会输出flag。
根据不同选择进入不同函数,发现和史莱姆战斗的计算,史莱姆的战斗力永远比你的战斗力高,也就是说你永远打不过,你的初始战斗力是0x64,三个boss的战斗力分别是:
商店可以用2金币提升1战斗力。
题目提示不要patch程序,否则会得到错误的flag,那么我们就不patch,直接在程序运行的时候进行战斗力比较的时候修改我们的战斗力即可。
解题
三处断点分别为:
0x4015F9
0x40165C
0x4016BC
断住这三个地方,然后把eax的值改为比比较的数大即可。注意不要改战斗力的变量,因为后来flag的输出有可能用到,我们直接改比较用的寄存器就可以了,然后会输出flag: