今天开始解决逆向工程拆除“二进制炸弹”的第四道题目,是一个递归的题目。
phase_4
-
调试bomb,在phase_4设置一个断点。在前面发现一个明码地址,gdb进入0x804a307看看。
-
随便输入几个数字。
-
gdb进入0x804a307看看,发现要输入两个数字。
-
输入的数字减2之后,要小于2 ,所以推测出 可输入的数字为:2 、3、 4。 小于2的数输入之后会变成一个负数,但这里默认是无符号数字。
-
func4返回的值与输入的值进行比较。
-
输入的两个数字要不一样,在2.3.4之间选两个,弄明白数字的顺序。
-
用ni命令调试到8048d3e时,用info reg,看到eax的值为1 ,则原来的数字是3,第二个数字在这里比较。
-
再去找第一个数字,用ni命令调试到8048d5c时,用info reg,返回了了36。
-
尝试一下,成功了!
小心得:
不必去在意func4函数具体是一个什么东西,要看懂它比较的数字是怎么来的。