"二进制炸弹" 二进制炸弹实验是CASPP的实验LAB3,目的是分析和解除六个炸弹,并讲解了解答过程。实验中,整个炸弹组是由六个小炸弹(函数)组成的,每个小炸弹都有其自己的逻辑和机制。了解每个小炸弹的机制是解除炸弹的关键。 第一个小炸弹(phase_1)函数的汇编代码分析: 根据汇编代码,我们可以看到,phase_1函数首先将ebp压栈,然后将esp赋值给ebp,接着将esp减去0x18,分配栈空间。然后,将内存地址为$0x804a15c的内容赋值给esp+4,并将输入的字符串赋值给eax。接着,将eax的值赋值给esp,比较输入的字符串与内存中$0x804a15c处的字符串是否相等,如果相等则eax为0,否则为1。如果eax为0,则跳转到phase_2函数,否则调用explode_bomb函数,炸弹爆炸。 通过对phase_1函数的分析,我们可以了解到,phase_1函数的破解关键是找到内存中$0x804a15c处的字符串,并将输入的字符串与其相比较。如果输入的字符串与内存中$0x804a15c处的字符串相同,炸弹就不会爆炸,可以进入到第二个函数phase_2。 _phase_2函数的汇编代码分析: 根据汇编代码,我们可以看到,phase_2函数首先将ebp压栈,然后将esp赋值给ebp,接着将esi和ebx压栈。然后,phase_2函数将esp减去0x30,分配栈空间。接着,将中间变量eax用于储存输入的数据,并将其赋值给esp。然后,将eax的值赋值给esp+4。接着,phase_2函数调用read_six_numbers函数,读取六个数字。这里的关键是,phase_2函数的密码很有可能就是六个数字。 通过对phase_2函数的分析,我们可以了解到,phase_2函数的破解关键是找到六个数字,并将其输入到函数中。如果输入正确,炸弹就不会爆炸,可以进入到下一个函数。如果输入错误,炸弹将爆炸。 二进制炸弹实验的关键是了解每个小炸弹的机制和逻辑,并找到正确的输入顺序和参数,以避免炸弹的爆炸。
剩余30页未读,继续阅读
- 粉丝: 61
- 资源: 31
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- Python 模块和 IPython Notebooks,用于《Python 统计学入门》一书.zip
- Python 概览.zip
- 基于深度学习的火焰场景识别matlab仿真,包括程序,中文注释,仿真操作步骤
- 机械臂RLS控制程序matlab simulink
- bellsoft-jdk8u432+7-windows-amd64.msi
- android 移动应用与开发
- 运动物体识别 opencv python
- 技术资料分享uCOS-II信号量集很好的技术资料.zip
- 技术资料分享ucOS-II入门教程(任哲)很好的技术资料.zip
- 技术资料分享UCOSII 2.90 ReleaseNotes很好的技术资料.zip