Boob炸弹拆除IDA版

一、准备阶段

打开IDA

Boob炸弹拆除IDA版

Boob炸弹拆除IDA版

将boob拖入IDA

Boob炸弹拆除IDA版

F5进入伪代码

Boob炸弹拆除IDA版

二、代码调试

第一题

双击phase_1进入函数

Boob炸弹拆除IDA版

显然第一题答案为

I am not part of the problem. I am a Republican.

第二题

双击phase_2进入函数

Boob炸弹拆除IDA版

显然这里会输入六个数字,且第一个为1,其后的数字为前一个数字的两倍,故答案为

1 2 4 8 16 32

第三题

双击phase_3进入函数

Boob炸弹拆除IDA版

那这里又显而易见了,答案为以下任意一组

第一个数 第二个数 第三个数
0 109 450
1 121 514
2 106 970
3 121 823
4 116 800
5 117 575
6 108 655
7 98 855

第四题

双击phase_4进入函数

Boob炸弹拆除IDA版

显然这里要求第一个参数范围0~14,然后调用func4,并要求返回值和第二个参数均为21

双击func4进入函数

Boob炸弹拆除IDA版

经过运算可以知道最终答案为

7 21

第五题

双击phase_5进入函数

Boob炸弹拆除IDA版

这里要求输入六个字符,且对每一个字符取其后四位作为数组的索引,并将其组合后需要变成“bruins”

双击array_2961进入数组

Boob炸弹拆除IDA版

因此加工的索引值排序为“d63487”,故答案为(例如d的十进制是13,于是‘a’+13-1就为‘m’)

mfcdhg

第六题

双击phase_6进入函数

Boob炸弹拆除IDA版

输入6个不大于6的数字且要求不相同,然后用输入的索引值对链表元素检验是否进行从小到大的排序,

双击node1进入链表

Boob炸弹拆除IDA版

点击对应的node单击h可以转换为十进制

Boob炸弹拆除IDA版

故答案为

5 3 4 2 1 6

第七题

在方法区找到phase_defused,单击进入

Boob炸弹拆除IDA版

可以看见需要在第四题答案后加上字符串“DrEvil”

至于为啥是第四题可以查看phase_defused中的byte_804B5D0栈空间位置

Boob炸弹拆除IDA版

另外在read_line中可以看见

Boob炸弹拆除IDA版

输入缓存区是以每道题80字节增长的,且起始地址如图

Boob炸弹拆除IDA版

可以知道的是在第四题的时候刚好到达phase_defused中sscanf的指定读取位置

双击secret_phase进入函数

Boob炸弹拆除IDA版

将输入的字符串转化为数字,并调用fun7,并要求返回4

双击fun7进入函数

Boob炸弹拆除IDA版

返回上一函数,单击n1进入链表

Boob炸弹拆除IDA版

Boob炸弹拆除IDA版

显然这里应该是

7
上一篇:Effective C++ Item 9 Never call virtual functions during constrution or destruction


下一篇:Maven