BinaryBomb实验
通过逆向工程分析,拆解二进制炸弹程序
包含了7个阶段以及1个隐藏阶段,分别集中考察对以下二进制程序表示各方面的理解和掌握:
- 阶段0:字符串比较
- 阶段1:浮点表示
- 阶段2:循环
- 阶段3:条件/分支
- 阶段4:递归调用和栈
- 阶段5:指针
- 阶段6:链表/指针/结构
- 隐藏阶段:只有在阶段4的拆解字符串后再附加一特定字符串后才会出现(作为最后一个阶段)
使用objdump反汇编指令反汇编bomb,并保存在bomb.asm文件中
阶段0:字符串比较
1. 任务描述:通过phase_0的反汇编代码找出要输入的字符串。
2. 实验设计:利用gdb结合断点来动态地分析。
3. 实验过程:
观察phase_0的反汇编代码,如图2.1所示:
图2.1
在调用strings_not_equal对比字符串之前,有两个压栈的指令,其中一个是将函数入参送入栈中,另一个地址作为参考字符串地址被送入了堆栈,函数入参应该就是输入的字符串所在地址,另一个地址就是正确字符串的首址,于是在phase_0处下个断点,然后运行,随意输入一个字符(此处为t),触发断点,再用x命令查看字符串,如图2.2所示
图2.2
重新执行程序,输入字符串“Linkers generate executable object files.”结果入图2.3所示
图2.3
如图2.3所示,阶段一拆弹成功
阶段1:浮点表示
1. 任务描述:通过phase_1的反汇编代码推断第二阶段要输入的数据
2. 实验设计:利用gdb结合断点来动态地分析,并观察各类寄存器的运行时的数据状态
3. 实验过程:
观察phase_1的反汇编代码,如图2.4所示:
图2.4
通过分析sscanf函数可知,要求输入的是两个%d类型数据,如图2.5
图2.5
在phase_1设置断点,运行至断点处,随意输入两个数引发断点。使用ni进行单步调试,到第一步cmp比较时,使用info registers查看寄存器内容。如图
eax为输入值111,则edx 20039则是第一个要输入的数字。
同理得,第二个要输入的数字为31958
重新执行程序,结果如图:
如图所示,阶段二拆弹成功。
创建解码文本bomb3.txt,将炸弹一与炸弹二的答案保存进去,如图所示
BinaryBomb实验相关推荐
- 合肥工业大学—SQL Server数据库实验四:数据库的分离和附加
数据库的分离和附加 1. 数据库分离 2. 数据库附加 1. 数据库分离 当SQL Server服务器运行时,该服务器上所有的数据库自动处于运行状态,而运行中的数据库文件是无法进行数据库文件的拷贝的. ...
- 解读模拟摇杆原理及实验
解读模拟摇杆原理及实验 Interpreting Analog Sticks 当游戏支持控制器时,玩家可能会一直使用模拟摇杆.在整个体验过程中,钉住输入处理可能会对质量产生重大影响.让来看一些核心概念 ...
- legend位置 pyecharts_实验|pyecharts数据可视化分析-1
1. 实验介绍 本实验主要介绍pyecharts基本特点与属性. 1.1. 实验目的 了解pyecharts功能.特点.与安装方式. 1.2. 知识点 pyecharts特点 pyecharts图表 ...
- 2019春第二次课程设计实验报告
2019春第二次课程设计实验报告 一.实验项目名称: 贪吃蛇游戏编写: 二.实验项目功能描述: 这个实验主要是实现游戏的正常运行,实现的目标是对小蛇移动的控制, 同时对小蛇数据的保存,如何实现转弯的效 ...
- 汇编语言程序设计 实验九
实验内容 实验一: 补全程序t1.asm,完成在屏幕上输出内存单元中的十进制两位数 ; 在屏幕上输出内存单元中的十进制两位数 assume cs:code, ds:data data segmentd ...
- 20172324 2018-2019-1《程序设计与数据结构》实验2报告
20172324 2018-2019-1<程序设计与数据结构>实验2报告 课程:<程序设计与数据结构> 班级: 1723 姓名: 曾程 学号:20172324 实验教师:王志强 ...
- JAVA第二次验证设计性实验报告
[实验任务一]:素数输出 (3)实验报告中要求包括程序设计思想.程序流程图.源代码.运行结果截图.编译错误分析等内容. 1. 实验内容 (1)计算并输出3~100之间的素数. (2)编程满足下列要 ...
- 20172329 2017-2018-2 《程序设计与数据结构》实验五报告
这是这学期最后一次实验了,也是学到了很多东西,希望自己可以可以善始善终,加油! 让我们开始这一篇博客吧! 20172329 2017-2018-2 <程序设计与数据结构>实验五报告 课程: ...
- 计算机网络实验报告建立校园网,计算机网络实验报告
设计性实验报告 一.实验目的 通过对网络设备的连通和对拓扑的分析,加深对常见典型局域网拓扑的理解:通过路由建立起网络之间的连接,熟悉交换机.路由器的基本操作命令,了解网络路由的设计与配置. 二.背景描 ...
- c语言链表最高响应比优先,操作系统--最高响应比优先调度算法实验报告..doc
操作系统--最高响应比优先调度算法实验报告. 进程调度一.实验题目与要求 编写程序完成批处理系统中的作业调度,要求采用响应比高者优先的作业调度算法.实现具体包括:首先确定作业控制块的内容和组成方式:然 ...
最新文章
- codesmith学习总结
- nohup-真正的Shell后台运行
- 从来没有一种技术是为了解决复用、灵活组合、定制开发的问题
- 模拟实现unordered_mapunordered_set
- 机器学习实战(五)——Logistic 回归
- linux里的vmware16有中文吗,vmware 16.1专业版_linux版本下载_vmware 16.1下载_5分享
- js 获得明天0点时间戳_需要知道的JS的日期知识,都在这了
- Qt工作笔记-使用QFileSystemWatcher监控文件是否改变
- WCF创建WebService正确操作步骤详解
- Mysql笔记之 -- replace()实现mysql 替换字符串
- [SOA征文]谈谈资源端的SOA化
- iphone开机白苹果_「手机维修自学教程」苹果6PLUS的DFU模式故障维修技巧思路决定速度...
- excel计算机快捷键大全,excel表格使用技巧快捷键大全
- airflow的xcom使用
- CF85D Sum of Medians
- 了解公司企业:Primetics
- 7-2 计算Fibonacci数列的前N(N<=20)项 (10 分)
- 使用AES加密配置文件
- ( SSD ; HHD ; HDD )
- reflection removal
热门文章
- android电视直播卡顿,智能电视或电视盒子经常会在看直播的时候卡顿
- android 自定义锁屏凌驾于系统锁屏之上
- android studio 补间动画,Android动画学习(一):帧动画和补间动画
- Android中补间动画相关知识
- 移动端 touch 手机拖动 css停止问题
- 推荐一个巨好用的查看gihub源码的插件-Octotree
- 打开jsp文件出现error错误,不能查看文件内容的解决方法,亲测有效
- 42u的机柜供服务器安装位置,一个42U标准服务器机柜能放多少台服务器
- PCB Layout初学者必会知识总结(转)
- Python实现图形界面猜数字游戏(GUI)