一、实验要求
本实验设计为一个黑客拆解二进制炸弹的游戏。我们仅给黑客(同学)提供一个二进制可执行文件bomb_64和主函数所在的源程序bomb.c,不提供每个关卡的源代码。程序运行中有6个关卡(6个phase),每个关卡需要用户输入正确的字符串或数字才能通关,否则会引爆炸弹(打印出一条错误信息,并导致评分下降)!
要求同学运用GDB调试工具和objdump反汇编工具,通过分析汇编代码,找到在每个phase程序段中,引导程序跳转到“explode_bomb”程序段的地方,并分析其成功跳转的条件,以此为突破口寻找应该在命令行输入何种字符串来通关。
二、实验说明
6个关卡,难度随关卡升级而提升;
通过解读汇编代码来推断其对应的函数结构(推断过程不唯一),某些关卡答案不唯一;
尽力而为,能通几关就几关。
提示:
第一关(知识点:string,函数调用,栈)
第二关(知识点:循环语句,数组)
第三关(知识点: switch语句)
第四关(知识点:递归)
第五关(知识点:字串变换,ascii转换,寻址)
第六关(知识点:寻址)
(第1-5关,各15分。第6关10分。实验总结15分。)