csapp二进制炸弹实验个人总结

发布时间 2023-07-13 18:17:52作者: woc0x00008279

2023/7/13完成了这个实验,算是我的第一次逆向实战,对我来说很有挑战性。总结如下:

1.对于汇编的熟练度,尤其是“层次”问题,mov 0x8(%rsp),%rax和lea 0x8(%rsp),%rax并不同;要注意某一个值本身是“地址”还是“数值”

2.理解机器码工作原理后,拓宽思路,经验+寻找新的方法

3.看待问题的视角。针对一连串的繁杂机器码,如果能够理解其用意,使用自然语言描述出来,就会变得十分清晰,比如“这一段代码频繁跳转,其实是个双层循环”,“这一段代码的意义就是通过...计算地址偏移并且存储”...熟悉特定的数据结构,比如链表的存储方式,一定的画图也有助于激发思路。

4.对于“条件”的理解感知,当理解某一部分代码完成那些操作之后,自己心里要清楚那些部分自己可以比较有把握的不用再考虑了,或者只有几个寄存器的值有影响,记住即可。在某个函数内部分析时如果找不到某个寄存器的值,有可能是作为输入参数,比如%rdi;如果用到标准函数,可以查找相关资料,理解参数顺序。(本次实践对sscanf的机器码实现机理有了更深入的理解)

5.大胆猜测作者的用意,比如从函数的名字上read_six_numbers猜测可能是将输入的字符性质数字转换为真正的二进制数字,通过string_length和strings_not_equal的名字和调用关系大致猜测函数作用和其参数意义。