6个关卡,难度随关卡升级而提升;通过解读汇编代码来推断其对应的函数结构(推断过程不唯一),某些关卡答案不唯一;尽力而为,能通几关就几关。提示:第一关(知识点:string,函数调用,栈)第二关(知识点:循环语句,数组)第三关(知识点: switch语句)第四关(知识点:递归)第五关(知识点:字串变换,ascii转换,寻址)第六关(知识点:寻址)
(第1-5关,各15分。第6关10分。实验总结15分。)
注1:当前用户可能对bomb文件没有执行权限,建议先用ls查看文件权限,若没有执行权限,请用chmod +x bomb命令增加当前用户对bomb文件的执行权限。注2:
若用命令./bomb执行该文件提示no such file时,请先用 su szu 切换到szu账户,然后输入命令sudo apt-get install lib32z1,等待下载安装完毕即可。
三、实验环境:1. 计算机(Intel CPU)2. Linux64位操作系统(Ubuntu 17)3. GDB调试工具
4. objdump反汇编工具
四、实验方法与步骤
1. 首先对bomb文件进行反汇编,并将结果输出到1.txt。
$ objdump -d bomb_64 > 1.txt
080488c0 <phase_1>:
80488c0: 83 ec 1c sub $0x1c,%esp
80488c3: c7 44 24 04 3c 93 04 movl $0x804933c,0x4(%esp)
80488ca: 08
80488cb: 8b 44 24 20 mov 0x20(%esp),