Bomb Lab实验报告

合集下载

计算机系统bomblab实验报告

计算机系统bomblab实验报告

课程实验报告课程名称:计算机系统实验项目名称:专业班级:姓名:学号:指导教师:完成时间:2019 年 4 月20 日信息科学与工程学院实验题目:CASPP BOMB LAB实验目的:输入代码中隐藏的密钥,通过实验实验环境:个人电脑、linux发行版本、gdb工具实验内容及操作步骤:通过查看bomb.c的代码,可以发现有6个密钥需要输入,分别为phase_1,phase_2, phase_3, phase_4, phase_5, phase_6。

在密钥的输入过程中,如果输入隐藏指令,即可触发隐藏关卡。

利用gdb工具或者objdump来查看其反汇编代码,然后分析反汇编代码得出其密钥。

实验结果及分析:Phase_1:这段反汇编代码可以看到非常简略,通过调用的函数可以看出,输入的是一个字符串,然后对比字符串是否是符合要求的即可,那么由指令movl $0x804a184,0x4(%esp)可以看出,内部隐藏的字符串应该就存储在0x804a184地址中,所以打印该地址的内容这个就是需要输入的字符串Phase_2:该语句可以通过函数名看到,它是有6个数输入,并且通过第一个cmpl语句看出输入的第一个数为1,而后面的跳转语句可以看到,它是个while语句,并且下一个数都是上一个数乘2,所以这样即可推出密钥为1 2 4 8 16 32Phase_3:可以看出,phase_3的反汇编代码是要根据输入的第一个数来进行跳转,然后再与第二个数进行比较,看是否相等。

打印跳转表的地址然后对应到的就是这些立即数的mov操作然后将十六进制转化为十进制即可得到7组答案0 331 ;1 957; 2 705; 3 538; 4 801; 5 645; 6 829; 7 845 Phase_4:可以看到第四个代码调用了func4函数,同时为它传入了两个值,一个为输入的第二个数,一个为整数8可以看到,func4函数反复调用了它自己,因此这对应的c语言函数是一个递归函数,根据汇编的每一条指令,翻译成c++代码得到将其输出得到3组答案108 2; 162 3 ;216 4Phase_5:从该反汇编代码可以看出,存在一个地址读取数据,然后顺序储存了16个整数,就是0x804a200为首地址,然后顺序打印可得到数组为10,2,14,7,8,12,15,11,0,4,1,13,3,9,6,5在根据汇编代码中的cmp指令可以得出,输入的第一个数的范围是大于1,小于15的,并且在循环的执行过程中,要把数组的值作为数组的下标进行操作,并且一定要执行完15次循环,当时做这题的时候头很晕不想倒推,考虑到只需要在2-14中取出答案,所以直接写成c++代码穷举输出答案Phase_6:这一串代码非常长,但是在前面的一大段,发现它是在进行取值的操作,输入的6个整数范围是1-6。

湖南大学-计算机组成原理实验-实验3-bomblab

湖南大学-计算机组成原理实验-实验3-bomblab

课程名称:计算机组成与结构实验项目名称:bomblab专业班级:姓名:学号:指导教师:完成时间:2016 年 4 月20 日信息科学与工程学院根据以上分析,我们发现,从键盘输入一个值,放到(新)ebp+8进行调用,把他传到esp中,接着,函数再从$0x804a15c这个地址取值,放到中,接着,程序对这两个参数进行函数调用,调用判断字符串是否相等的程序equal进行判断,如果二者相等,则返回值为0,不引爆炸弹,反之,只要二者不相等,则炸弹爆炸。

分析结论:此处的密码存在地址$0x804a15c中,我们只要查看该地址的值,即可完成该题。

打开gdb调试,运行x/s 0x804a15c,查看该处的值故第一题的答案为We have to stand with our North Korean allies.Phase_5内容如下:0x08048db8 <+0>: push %ebp0x08048db9 <+1>: mov %esp,%ebp0x08048dbb <+3>: push %esi0x08048dbc <+4>: push %ebx这是两个调用者保存寄存器,因为接下来的循环中使用到了这两个寄存器的值,所以要进行压栈保存。

0x08048dbd <+5>: sub $0x20,%esp esp-320x08048dc0 <+8>: lea -0x10(%ebp),%eax0x08048dc3 <+11>: mov %eax,0xc(%esp)ebp-160x08048dc7 <+15>: lea -0xc(%ebp),%eaxPhase_6内容如下:0x08048c89 <+0>: push %ebp0x08048c8a <+1>: mov %esp,%ebp 0x08048c8c <+3>: push %edi这<phase_6+93>之前的都表达了什么?其实很简单,就是输入的这1到6的,且相邻两数不相等,且相差值不为好,接下来看<phase_6+93>之后的内容<phase_6+93>~<phase_6+145>,又是一个类似的功能块,操作,不妨仍仿照以上述方法做一次分析。

化工厂爆炸仿真模拟实验报告摘要

化工厂爆炸仿真模拟实验报告摘要

化工厂爆炸仿真模拟实验报告摘要
在第三次工业革命的推动下,人类社会进入了信息时代。

由于新技术革命,现代科学与技术蓬勃发展起来,使得我们所处的这个世界正在经历着巨大而深刻的变化。

计算机技术、网络通讯技术等信息技术渗透到社会生产、管理和日常生活中,使当今世界的联系更加密切,整合更为有效,对于国家综合竞争力的提高具有重要意义。

同样,化工作为一门传统行业也面临着严峻挑战,如何能够利用最先进的科技手段去改造传统行业已成为一项迫在眉睫的任务。

因此,对化工过程开展研究就显得尤其必要。

实验内容:实验目的:化工厂爆炸仿真模拟实验是基于化工原理
的专业课程之一,它主要介绍了化工单元操作的基本知识以及典型化工单元操作的基础数据,并且还详细地阐述了化工安全问题。

本实验可以让学生掌握化工单元操作的基本方法,熟悉各种仪表的结构特点,培养学生分析解决问题的能力,增强学习兴趣,激励创新精神。

实验原理:化工厂爆炸仿真模拟实验采用的是物质的燃烧热公式,即 Q= cm△t,其中 c 为气体常量, t 为绝对温度, q 为燃料的热值。

该公式适用于任何状态下的混合气体或纯净液体。

在不考虑摩擦阻力的情况下,若把混合气体看做理想气体,则 C= nRT,其中 n 为摩尔数,R 为气体常数, T 为绝对温度。

根据上述公式,只需测出混合气体
的燃烧热,再将燃烧热除以混合气体的摩尔数,便可求出混合气体的热值。

- 1 -。

大型科学爆炸实验报告(3篇)

大型科学爆炸实验报告(3篇)

第1篇一、实验背景随着科技的不断进步,对物质状态变化及能量释放机制的研究日益深入。

爆炸作为一种极端的物理现象,其背后的科学原理具有极高的研究价值。

为了揭示爆炸的物理本质,我们设计并实施了一项大型科学爆炸实验。

二、实验目的1. 研究不同条件下爆炸的物理过程。

2. 探讨爆炸产生的能量及其分布。

3. 分析爆炸对周围环境的影响。

4. 为相关领域的研究提供实验依据。

三、实验原理爆炸是可燃物质在有限空间内急剧燃烧,产生大量气体和热量,从而使气体迅速膨胀,产生巨大压力的一种现象。

实验中,我们通过控制可燃物质、氧气浓度、环境温度等因素,模拟不同条件下的爆炸过程。

四、实验用品1. 实验装置:金属罐、塑料瓶、蜡烛、火柴、橡皮管、气囊、塑料片等。

2. 可燃物质:面粉、煤粉等。

3. 仪器设备:高清摄像头、温度计、压力计、流量计等。

五、实验步骤1. 准备实验装置:剪去金属罐和小塑料瓶上部,并在金属罐和小塑料瓶底侧各打一个小孔,小孔大小比橡皮管外径略小。

2. 连接实验装置:用橡皮管连接金属罐、小塑料瓶和气囊。

3. 准备可燃物质:在小塑料瓶中放入干燥的面粉,把蜡烛放入金属罐中,并点燃。

4. 监测环境参数:使用温度计、压力计等仪器监测实验过程中的环境参数。

5. 观察爆炸现象:快速挤压气囊,鼓入大量空气,使面粉充满罐,观察爆炸现象。

6. 数据采集与分析:记录实验过程中相关参数的变化,分析爆炸产生的能量及其分布。

六、实验现象1. 爆炸发生时,金属罐和小塑料瓶内气体迅速膨胀,产生巨大压力。

2. 爆炸过程中,可燃物质燃烧产生大量热量,使环境温度急剧升高。

3. 爆炸产生的冲击波对周围环境造成一定影响,如塑料片飞到空中。

七、实验结果与分析1. 爆炸过程中,可燃物质燃烧产生的热量是爆炸能量释放的主要来源。

2. 爆炸产生的压力与可燃物质的种类、氧气浓度、环境温度等因素有关。

3. 爆炸对周围环境的影响主要表现为冲击波和高温,可能导致人员伤亡和设备损坏。

Bomblab实验报告

Bomblab实验报告

课程实验报告课程名称:计算机系统原理实验实验项目名称: BombLab 专业班级:计科1501 姓名:马子垚学号: 201508010114 完成时间: 2017 年 4 月 19 日实验目的理解汇编语言,学会使用调试器实验原理二进制炸弹是作为一个目标代码文件提供给学生们的程序,运行时,它提示用户输入6个不同的字符串。

如果其中任何一个不正确,炸弹就会“爆炸”:打印出一条错误信息。

学生通过反汇编和逆向工程来确定是哪六个字符串,从而解除他们各自炸弹的雷管。

实验步骤及体会一、实验准备1、首先,由于虚拟机操作系统与windows系统相互独立,所以首先将Bomb.c及其相关文件存至百度云盘,然后在ubantu操作系统内下载至文件系统目录下的下载文件夹里面:2、输入./bomb试运行bomb.c文件时会提示权限不够:所以需要输入chmod+x+文件名的命令于改变文件或目录的访问权限。

用它控制文件或目录的访问权限。

在经过操作之后,获得了权限,程序可以正常运行了:3、由于bomb.c文件并没有蕴含许多能破解的信息,所以需要将其进行反汇编,详细操作如下:输入objdump –d bomb >bomb.txt将汇编代码输出到自动生成一个bomb.txt的文件里面,方便我们查看与分析代码:二、具体实验步骤及其分析试查看导出的bomb.txt,我发现总的文本里面分为很多段,其中就有Phase_1~Phase_6、Phase_defuse、Phase_secret以及其他相关函数的代码,所以我猜测每一段Phase代码就是我们需要破解的关卡,所以我将它们分别导出新建text文件,逐段分析。

Phase_1及其破解过程:知识点:string,函数调用,栈反汇编代码及其分析:08048f61 <phase_1>:8048f61: 55 push %ebp//压栈 ebp为栈指针 esp为栈指针。

push指令可以理解为两个步骤:1. subl $4 , %esp –栈底向下移一位2. movl %ebp ,(%esp)将ebp的值存入esp中8048f62: 89 e5 mov %esp,%ebp//把esp赋值给ebp8048f64: 83 ec 18 sub $0x18,%esp//esp指针下移0x18个字节8048f67: c7 44 24 04 5c a1 04 movl $0x804a15c,0x4(%esp)//取0x804a15c处的内容存入*(%esp+4)//前一段总的分析:初始化栈,push是压栈指令,ebp寄存器中的内容是栈底指针。

爆炸指数测定实验报告

爆炸指数测定实验报告

爆炸指数测定实验报告实验目的本实验旨在通过测定不同物质的爆炸指数,了解其爆炸性质和安全等级,为化学品的存储、运输和使用提供科学依据。

实验材料和仪器- 试样:甲烷、柠檬酸、硝酸、乙烯、硝化棉- 仪器:密闭燃烧器、爆发计、温度计、压力计、天平等实验原理爆炸指数是衡量一种物质爆炸性质的重要参数,通常由最低爆炸浓度和爆炸界限浓度表示。

最低爆炸浓度是指物质在空气中爆炸所需达到的最小浓度,而爆炸界限浓度则是指物质可发生爆炸的浓度范围。

实验中采用密闭燃烧器装置,将试样中的物质与空气混合并点燃,记录燃烧的压力和温度变化,以确定最低爆炸浓度和爆炸界限浓度。

实验步骤1. 实验前准备:清洁仪器,校准压力计和温度计,并确保试样没有泄漏。

2. 准备试样:分别称取甲烷、柠檬酸、硝酸、乙烯、硝化棉等物质,并保证试样重量准确。

3. 实验操作:将试样倒入密闭燃烧器中,并封闭燃烧器。

将压力计和温度计连接到燃烧器上。

4. 点火:将点火器点燃,并接触到燃烧器的燃烧室中,使试样点燃。

5. 记录数据:记录燃烧室的压力和温度变化,即爆炸发生后,观察到的压力和温度数据。

6. 数据处理:根据实验数据,计算得出最低爆炸浓度和爆炸界限浓度。

实验结果与分析通过实验测定和计算,得到了如下结果:物质最低爆炸浓度(%)爆炸界限浓度(%)- -甲烷 5 15柠檬酸无爆炸现象无爆炸现象硝酸18 30乙烯 3 12硝化棉 5 30从表中可以看出,不同物质的最低爆炸浓度和爆炸界限浓度存在差异。

甲烷和乙烯的爆炸性较高,需要较低浓度才能发生爆炸,而柠檬酸和硝酸则无爆炸现象。

硝化棉的爆炸界限浓度较大,说明其安全性较差。

实验安全措施1. 实验中需要注意火源和有害气体的排放,操作时应保持仪器密封性。

2. 高爆炸性物质需谨慎操作,确保周围环境安全。

3. 实验人员应佩戴防护眼镜、手套等安全装备,以防止意外伤害的发生。

实验结论通过本次实验,我们测定了不同物质的爆炸指数,并对实验结果进行了分析。

LAB boom实验报告

LAB boom实验报告

$0x804a23e,0x4(%esp),我们查看 0x804a23e 的值结
再根据语句 0x08048e50 <+34>: call 0x8048840 <__isoc99_sscanf@plt> 0x08048e55 <+39>: cmp $0x2,%eax 说明我们要输入两个整型数,下面的工作就是判断这两个整型数分别是什么。由代码 0x08048e6b <+61>: movl $0xe,0x8(%esp) 0x08048e73 <+69>: movl $0x0,0x4(%esp) 0x08048e7b <+77>: mov -0xc(%ebp),%eax 0x08048e7e <+80>: mov %eax,(%esp) 可以看出我们以第一个参数,0 ,14 为参数传入递归函数中而且返回值为 1,所以我们这时做的 事情就是分析 func4 函数,看第一个参数为多少时返回值能为 1,而第二个参数有代码 0x08048e8b <+93>: cmpl $0x1,-0x10(%ebp) 0x08048e8f <+97>: je 0x8048e9d <phase_4+111> 可知第二个参数就为 1。 下面分析 func4
我们希望它的返回值为 0 这样根据 0x1(%eax,%eax,1),%eax 返回值就是 1 了,最简单的一种情 况就是 14 和 8 经过运算后结果为 11 而参数 1 恰好等于 11 的情况,更复杂一些的情况就是它又 调用了 0x08048b97 <+55>: call 0x8048b60 <func4>,再由它的返回值再继续推理,所以 此题有多种答案,最简单的就是 11,1。

Bomblab实验报告

Bomblab实验报告

Bomblab实验报告关键信息项:1、实验目的:____________________________2、实验环境:____________________________3、实验步骤:____________________________4、遇到的问题及解决方法:____________________________5、实验结果:____________________________6、实验总结与体会:____________________________11 实验目的本次 Bomblab 实验的主要目的是通过对一系列炸弹程序的分析和破解,深入理解计算机程序的逻辑结构、内存布局以及调试技术,提高对汇编语言和逆向工程的实践能力。

111 具体目标包括1111 熟悉 GDB 调试工具的使用,能够设置断点、查看寄存器和内存内容。

1112 理解函数调用栈和程序的控制流程。

1113 通过分析汇编代码,找出炸弹程序中的逻辑漏洞并解除炸弹。

12 实验环境121 操作系统:使用具体操作系统名称操作系统。

122 编译工具:具体编译工具名称及版本。

123 调试工具:GDB 调试器具体版本。

13 实验步骤131 准备阶段获取 Bomblab 实验程序代码,并将其导入到开发环境中。

132 初步分析使用 objdump 等工具对程序进行反汇编,获取程序的汇编代码。

133 函数分析对关键函数进行逐步分析,理解其功能和逻辑。

134 断点设置在关键代码位置设置断点,以便在程序运行时进行观察和调试。

135 输入测试通过输入不同的测试数据,观察程序的反应和输出。

136 逐步推理根据程序的行为和调试信息,逐步推理出炸弹的解除条件。

14 遇到的问题及解决方法141 问题一在分析汇编代码时,对某些复杂的指令和跳转逻辑理解困难。

解决方法:查阅相关的汇编语言教材和资料,加深对指令的理解,并通过单步调试逐步理清跳转逻辑。

142 问题二输入测试数据时,无法准确判断哪些数据是有效的。

爆发力实验报告

爆发力实验报告

一、实验目的1. 了解爆炸力的概念和特点。

2. 掌握爆炸力实验的基本原理和操作方法。

3. 通过实验,验证爆炸力对物体的影响。

二、实验原理爆炸力是指爆炸过程中释放出的能量对周围物体产生的作用力。

爆炸力的大小与爆炸物的种类、数量、爆炸速度等因素有关。

本实验通过测量不同爆炸物的爆炸力,分析其影响因素。

三、实验器材1. 爆炸物:火药、烟花等。

2. 测力计:弹簧测力计、电子测力计等。

3. 传感器:加速度传感器、压力传感器等。

4. 实验台:固定支架、实验平台等。

5. 计时器:电子计时器、秒表等。

6. 数据采集器:电脑、数据采集卡等。

四、实验步骤1. 准备实验器材,确保实验环境安全。

2. 将爆炸物固定在实验台上,确保其稳定。

3. 连接测力计、传感器等设备,调试设备参数。

4. 设置实验参数,如爆炸物的数量、实验次数等。

5. 进行实验,记录实验数据。

6. 分析实验数据,得出结论。

五、实验数据1. 实验次数:5次2. 爆炸物种类:火药3. 爆炸物数量:5克4. 实验结果:| 实验次数 | 爆炸力(N) | 爆炸速度(m/s) || -------- | -------- | -------- || 1 | 200 | 100 || 2 | 210 | 105 || 3 | 230 | 110 || 4 | 250 | 115 || 5 | 270 | 120 |六、实验结果分析1. 爆炸力随实验次数的增加而增大,说明爆炸力与爆炸物的数量有关。

2. 爆炸速度随实验次数的增加而增大,说明爆炸速度与爆炸物的数量有关。

3. 爆炸力与爆炸速度成正比,说明爆炸力与爆炸速度有关。

七、结论1. 本实验验证了爆炸力对物体的影响,证明了爆炸力与爆炸物的数量、爆炸速度等因素有关。

2. 通过实验,掌握了爆炸力实验的基本原理和操作方法,为后续研究提供了基础。

八、注意事项1. 实验过程中,注意安全,避免人员伤亡和财产损失。

2. 实验操作要严格按照实验步骤进行,确保实验数据的准确性。

老外炸鞭炮实验报告(3篇)

老外炸鞭炮实验报告(3篇)

第1篇一、实验背景随着中国文化的传播,越来越多的外国人对中国的传统节日和习俗产生了浓厚的兴趣。

其中,鞭炮作为中国传统节日中不可或缺的元素,吸引了众多外国人的关注。

为了深入了解鞭炮的爆炸原理,我们进行了一次老外炸鞭炮的实验。

二、实验目的1. 了解鞭炮的爆炸原理;2. 观察鞭炮爆炸过程中的现象;3. 分析鞭炮爆炸对环境的影响。

三、实验材料1. 鞭炮;2. 实验场地:开阔的空地;3. 安全防护措施:护目镜、手套、防尘口罩等;4. 观察工具:摄像机、录音笔等。

四、实验步骤1. 准备实验场地:选择开阔的空地,确保实验过程中不会对周围环境和人员造成伤害。

2. 安全防护:实验人员佩戴护目镜、手套、防尘口罩等防护措施。

3. 鞭炮准备:将鞭炮置于实验场地,确保鞭炮周围无易燃物。

4. 观察鞭炮爆炸过程:使用摄像机、录音笔等工具记录鞭炮爆炸的过程。

5. 分析鞭炮爆炸现象:观察鞭炮爆炸过程中的火焰、烟雾、声响等现象。

6. 收集实验数据:记录鞭炮爆炸过程中的声响、火焰、烟雾等数据。

7. 实验总结:分析鞭炮爆炸原理,评估鞭炮爆炸对环境的影响。

五、实验结果与分析1. 鞭炮爆炸原理:鞭炮内部填充有黑火药,黑火药在点燃后会发生剧烈的化学反应,产生大量气体,从而使鞭炮爆炸。

2. 鞭炮爆炸现象:观察实验过程,发现鞭炮爆炸时产生大量火焰、烟雾和声响。

火焰颜色为黄色,烟雾为白色,声响较大。

3. 鞭炮爆炸对环境的影响:实验过程中,鞭炮爆炸产生的烟雾和声响对周围环境产生一定影响。

烟雾可能对空气造成污染,声响可能对周围居民造成干扰。

六、实验结论1. 鞭炮爆炸原理为黑火药在点燃后发生化学反应,产生大量气体,从而使鞭炮爆炸。

2. 鞭炮爆炸过程中产生大量火焰、烟雾和声响,对周围环境和人员有一定影响。

3. 为了减少鞭炮爆炸对环境的影响,建议在节日期间合理安排燃放鞭炮的时间和地点,尽量减少对周围环境和人员的影响。

七、实验反思本次实验让我们对鞭炮的爆炸原理有了更深入的了解,同时也让我们认识到鞭炮爆炸对环境的影响。

bomb lab phase2理解

bomb lab phase2理解

一、概述bomb lab phase2是计算机科学领域中一个非常重要的实验,通过对这个实验的深入研究和理解,可以对计算机系统的安全性和漏洞有更深刻的认识,从而为计算机安全领域的研究和应用提供重要的参考价值。

二、bomb lab phase2的背景1. bomb lab phase2是由某大学计算机科学系设计的一个实验项目,旨在通过完成一系列程序设计和分析的任务,来加深学生对计算机系统基本原理的理解和应用。

2. 该实验要求学生能够熟练掌握汇编语言、内存管理、逆向工程等相关知识,并能够在实践中运用这些知识解决实际问题。

三、bomb lab phase2的内容和要求1. 实验要求学生通过分析给定的程序代码和二进制文件,找出并修复其中的错误,使程序能够正确运行并输出目标字符串。

2. 学生需要在完成实验的过程中,深入理解程序执行的过程、内存的分配和管理、汇编指令的执行过程等内容,从而能够找出程序中的逻辑漏洞、缓冲区溢出、内存泄漏等问题,并加以解决。

3. 实验要求学生能够写出详细的分析报告,说明每一步的分析和修复过程,逻辑推理和数据验证的过程等。

四、bomb lab phase2的重要性和意义1. bomb lab phase2的完成能够对学生深入理解计算机系统和程序设计原理有很大的帮助,能够提高他们的动手能力和逻辑思维能力。

2. 通过对这个实验的理解和研究,能够为计算机系统的安全性和稳定性提供一定的参考,有助于发现和修复潜在的安全漏洞和问题。

3. 完成这个实验还能够培养学生的团队合作精神和问题解决能力,这是他们未来在计算机领域就业和研究中必不可少的能力。

五、总结bomb lab phase2是一个非常重要的实验项目,通过学生对这个实验的深入理解和研究,有助于提高他们的动手能力、逻辑思维能力和问题解决能力,对计算机系统的安全性和稳定性也有着一定的参考价值。

希望广大学生能够认真对待这个实验,努力完成并深刻理解其中的知识和技能。

升入理解计算机系统Bomb LAB实验报告

升入理解计算机系统Bomb LAB实验报告

湖南大学课程实验报告课程名称:计算机组成与结构实验项目名称:二进制炸弹专业班级:姓名:学号:指导教师:完成时间:计算机科学与工程系实验题目:APP Bomb Lab实验目的:实验环境:linux,终端,gdb工具实验内容及操作步骤:查看给出的bomb.c中的代码,得知控制检测密码正误的6个函数分别为:phase_1,phase_2,phase_3,phase_4,phase_5,phase_6。

使用gbd工具对可执行文件bomb进行反汇编:得到六段汇编代码,将其复制成文本后,对其进行分析,phase_1代码:0x08048f61 <+0>: push %ebp0x08048f62 <+1>: mov %esp,%ebp0x08048f64 <+3>: sub $0x18,%esp0x08048f67 <+6>: movl $0x804a15c,0x4(%esp) 将esp寄存器地址指向$0x804a15c 0x08048f6f <+14>: mov 0x8(%ebp),%eax 将$0x804a15c中的数据移给eax寄存器0x08048f72 <+17>: mov %eax,(%esp)0x08048f75 <+20>: call 0x8048fab <strings_not_equal>0x08048f7a <+25>: test %eax,%eax 上一行与这一行比较用户输入和$0x804a15c中的值0x08048f7c <+27>: je 0x8048f83 <phase_1+34>0x08048f7e <+29>: call 0x80490d1 <explode_bomb>0x08048f83 <+34>: leave0x08048f84 <+35>: ret可以看出,phase_1的密码是固定储存在$0x804a15c中的。

爆破实习实验报告

爆破实习实验报告

爆破实习实验报告一、实习背景及目的随着我国基础建设的不断发展,爆破作业在矿山、交通、城市建设等领域中发挥着重要作用。

为了提高我对爆破技术的理解和实践能力,本次实习选择了爆破公司进行为期两周的实习。

实习目的主要包括:了解爆破作业的基本流程,掌握爆破原理及安全操作规程,提高实际动手能力和团队协作能力。

二、实习内容与过程1. 实习前的安全培训在实习开始前,公司组织了安全培训,主要介绍了爆破作业的安全法律法规、爆破器材的性能及使用方法、爆破作业的安全操作规程等。

通过培训,我对爆破作业的安全意识得到了提高,为后续的实习奠定了基础。

2. 爆破作业的基本流程在实习过程中,我参与了两次现场爆破作业。

首先,我们进行了现场勘查,了解地形地貌、周边环境,为爆破设计提供依据。

接着,制定了爆破方案,包括炸药类型、用量、布设方式、起爆方法等。

然后,进行了炸药布设和起爆网路的连接。

最后,现场指挥员下达爆破命令,完成了爆破作业。

3. 爆破原理及操作规程在实习过程中,我学习了爆破原理,包括炸药的性质、爆炸过程、爆破作用等。

同时,掌握了爆破操作规程,如炸药的储存、运输、分发、使用等。

此外,我还学会了如何使用爆破仪器设备,如雷管、导爆管、爆破机等。

4. 实际动手能力和团队协作能力的培养在实习过程中,我参与了现场爆破作业,提高了实际动手能力。

在团队合作中,我学会了与同事沟通、协调,提高了团队协作能力。

三、实习收获及反思通过本次实习,我对爆破作业有了更深入的了解,掌握了爆破原理及操作规程,提高了实际动手能力和团队协作能力。

同时,我也认识到了爆破作业的危险性,增强了安全意识。

反思实习过程,我认为自己在以下方面还有待提高:一是对爆破原理的理解还不够深入,需要继续学习;二是爆破操作过程中,对细节的处理不够到位,需要更加细致;三是团队协作中,沟通不畅、协调不足,需要加强。

四、实习总结本次实习让我对爆破作业有了更全面的了解,提高了实际动手能力和团队协作能力。

打靶碰撞实验报告

打靶碰撞实验报告

打靶碰撞实验报告打靶碰撞实验报告摘要:本次实验旨在通过打靶碰撞实验,研究不同条件下子弹的弹道轨迹和碰撞效果。

实验结果表明,子弹的弹道受多种因素影响,包括初始速度、发射角度、空气阻力等。

通过对实验数据的分析,我们可以更好地理解子弹的运动规律,为枪械设计和弹道学研究提供参考。

引言:打靶碰撞实验是研究子弹运动规律和弹道学的重要手段之一。

在现代科技的推动下,打靶碰撞实验已经得到了极大的发展和应用。

通过实验,我们可以了解子弹在不同条件下的弹道轨迹和碰撞效果,从而为军事、狩猎和竞技射击等领域提供科学依据。

实验方法:本次实验选用了一种标准的射击场地,并使用了一台高精度的射击仪器。

实验过程中,我们按照预定的条件对子弹进行射击,并记录下子弹的初始速度、发射角度以及靶子的位置和形态。

通过多次实验,我们得到了一系列数据,用于后续的分析和研究。

实验结果:根据实验数据的分析,我们发现子弹的弹道受多种因素的影响。

首先,初始速度是影响子弹飞行距离和时间的重要因素。

我们通过调整射击仪器的压力和装药量,控制了子弹的初始速度,并发现速度越高,子弹的射程越远。

其次,发射角度也对子弹的弹道轨迹产生了显著影响。

我们通过改变射击仪器的发射角度,观察到子弹的飞行轨迹从高抛物线到低抛物线的变化。

最后,空气阻力也是影响子弹弹道的重要因素。

通过在不同环境条件下进行实验,我们发现空气阻力会减缓子弹的速度和射程,使其轨迹更为曲折。

讨论与分析:通过对实验结果的讨论和分析,我们可以得出一些有价值的结论。

首先,子弹的弹道轨迹是一个复杂的非线性问题,受多种因素的综合影响。

因此,在枪械设计和弹道学研究中,需要充分考虑这些因素,并进行合理的模拟和计算。

其次,实验结果表明,提高子弹的初始速度和控制发射角度可以有效提升射程和命中率。

这对于军事和竞技射击等领域具有重要意义。

最后,空气阻力的影响不可忽视,特别是在远距离射击和高速飞行的情况下。

研究空气动力学和气象学等相关知识,可以更好地理解和预测子弹的弹道轨迹。

Mlabs实验报告

Mlabs实验报告

Mlabs实验报告
弹式量热计,由M.Berthelo/1I21于1881年率先报导,时称伯塞洛特(Berthlot bomb)氧弹。

目的是测△U、△H等热力学性质。

绝热量热法,1905年由Richards提出。

后由Daniels3l等人的发展最终被采用。

初时通过电加热外筒维持绝热,并使用光电池自动完成控制外套温度跟踪反应温升进程,达到绝热的目的。

现代实验除了在此基础上发展绝热法外,进而用先进科技设计半自动、自动的夹套恒温式量热计,测定物质的燃烧热,配以微机处理打印结果。

利用雷诺图解法或奔特公式计算热量计热交换校正值△T。

使经典而古老的量热法焕发青春。

第一次燃烧,以苯甲酸作为基准物,求水当量CG(热量计热容),单位为J.K-1。

第二次燃烧,测被测物质萘的恒容燃烧热Qv,利用(2.1.1)式再求算QP。

准备工作:
①检验多功能控制器数显读数是否稳定。

熟习压片和氧弹装样操作,量热计安装注意探头不得碰弯,温度与温差的切换功能键钮,报时及灯闪烁提示功能等。

②干燥恒重苯甲酸(0.9—1.2g)和萘(0.6—0.8g)压片,注意紧实度,分析天平称样。

③容量瓶量取3000mL水,调节水温低于室温1K。

④量取两根10厘米点火丝,中段在原珠笔蕊上绕几圈。

燃烧丝缚紧使接触电阻尽可能小。

氧弹充氧注意小动作缓缓旋开减压阀。

⑤氧弹内预滴10mL水,促产物凝聚成硝酸。

CSAPP-bomblab

CSAPP-bomblab

CSAPP-bomblabdate: 2020-05-04本实验中博主采⽤对objdump -D令⽣成的⽂本进⾏分析求解(需要有基本的汇编知识,了解各种指令以及栈帧结构,之后的讨论中不会对此进⾏介绍),gdb调试仅在求解secret_phase时使⽤。

博主的部分数据有进⾏改动,故答案与官⽹的不同,但解法相同,可作参考学习。

实验环境:Windows10 系统下 VMware 虚拟机 Ubuntu12.04 桌⾯版 32 位原址链接:phase_1phase_1的主体是⼀个简单的函数调⽤block 108048b50 <phase_1>:8048b50: 83 ec 1c sub $0x1c,%esp; strings_not_equal(char*, "I was trying to give Tina Fey more material.")8048b53: c7 44 24 04 64 a2 04 movl $0x804a264,0x4(%esp)8048b5a: 088048b5b: 8b 44 24 20 mov 0x20(%esp),%eax; %eax = input8048b5f: 89 04 24 mov %eax,(%esp); %eax = input8048b62: e8 2d 05 00 00 call 8049094 <strings_not_equal>⾸先调⽤strings_not_equal函数,分析%esp可以了解到它有两个参数。

第⼀个参数是phase_1传⼊的字符串,第⼆个参数是应该是⼀个字⾯值,存储在内存中的0x804a264处,如下:804a261: 65 2e 00 49 20 gs add %cl,%cs:%gs:0x20(%ecx)804a266: 77 61 ja 804a2c9 <_IO_stdin_used+0x1a5>804a268: 73 20 jae 804a28a <_IO_stdin_used+0x166>804a26a: 74 72 je 804a2de <_IO_stdin_used+0x1ba>804a26c: 79 69 jns 804a2d7 <_IO_stdin_used+0x1b3>804a26e: 6e outsb %ds:(%esi),(%dx)804a26f: 67 20 74 6f and %dh,0x6f(%si)804a273: 20 67 69 and %ah,0x69(%edi)804a276: 76 65 jbe 804a2dd <_IO_stdin_used+0x1b9>804a278: 20 54 69 6e and %dl,0x6e(%ecx,%ebp,2)804a27c: 61 popa804a27d: 20 46 65 and %al,0x65(%esi)804a280: 79 20 jns 804a2a2 <_IO_stdin_used+0x17e>804a282: 6d insl (%dx),%es:(%edi)804a283: 6f outsl %ds:(%esi),(%dx)804a284: 72 65 jb 804a2eb <_IO_stdin_used+0x1c7>804a286: 20 6d 61 and %ch,0x61(%ebp)804a289: 74 65 je 804a2f0 <_IO_stdin_used+0x1cc>804a28b: 72 69 jb 804a2f6 <_IO_stdin_used+0x1d2>804a28d: 61 popa804a28e: 6c insb (%dx),%es:(%edi)804a28f: 2e 00 00 add %al,%cs:(%eax)⼀下就能得到字符串"I was trying to give Tina Fey more material."。

爆炸力学实验报告

爆炸力学实验报告

1 测温实验1.1 实验简介红外测温的原理:是利用接受被测物体所辐射的红外线的能量来确定该物体的温度。

它的理论根据是普朗克的黑体辐射定律,即黑体在任一温度的辐射强度随波长的变化规律。

()1),(025210-=T n c en c T E λλλ式中λ辐射波的波长,0T 是黑体的温度,1C 称为第一辐射常数,2C 是第二辐射常数。

()0,T E λ称为黑体的单色辐射度,它是波长和温度的函数,表示黑体在温度0T 时在波长λ附近单位波长间隔、单位发射面积、单位时间内辐射的能量。

1.2 实验仪器硬件:Micronscan7200红外热成像系统用320×240微热辐射计UFPA 探测器接收这一能量,然后转换为电信号,运用微机、模拟信号调理、数字信号与图像处理技术,对温度场进行数字和图像处理,便可测出黑体的温度。

红外测温仪根据仪器型号的不同测试温度范围也不同。

拍摄图像帧数在10帧至600帧之间可调,也可由用户自定义。

软件:实验数据由配套相关软件instrumentation 自动处理,软件功能强大,能对每一帧图像不同区域分析其平均温度、最高温度参数,并能绘制二维、三维温度时间曲线。

1.3试验步骤(1)接线。

接线的时候一定要小心(2)开机后,质检完毕,点击select键,知道menu出现,点击run,出现菜单,点击第七栏,再点run,出现menu,用select 键分别设定第2、3、4栏,分别对应温度、湿度、距离,设定完点击run。

(3)打开软件,注意是否是online状态。

(4)选用右上角set up/about栏,点击ambient calculate ,在选定之前盖好镜头盖。

(5)点击右上角capture ,右下角range。

1.4 实验结果与分析爆炸过程是瞬间的事,在短暂的时间里要测定爆炸产物的辐射率是一件相当困难的事。

况且,一个物体的辐射率与其本身的温度、周围的温度、物体的物理性质有相当大的关系。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

课程实验报告课程名称:计算机系统原理实验实验名称:Bomb Lab专业班级:姓名:学号:完成时间:2017.4.19一、实验目的熟悉汇编程序,学习gdb调试工具,熟悉并掌握函数调用过程中的栈帧结构的变化。

二、实验环境个人PC,Linux发行版本,终端,gdb调试工具。

三、实验要求1.本次实验为熟悉汇编程序及其调试方法的实验。

2.实验内容包含2个文件bomb(可执行文件)和bomb.c(c源文件)。

3.使用gdb工具反汇编出汇编代码,结合c语言文件找到每个关卡的入口函数。

4.分析汇编代码,找到在每个phase程序段中,引导程序跳转到“explode_bomb”程序段的地方,并分析其成功跳转的条件,以此为突破口寻找应该在命令行输入何种字符通关。

5.本实验一共有7个关卡,包括6个普通关卡和1个隐藏关卡。

要求至少通过6个普通关卡。

四、实验内容及操作步骤(一)准备过程1.解压文件夹得到“bomb”,“bomb.c”,“README-bomblab.txt”以及“实验基本内容与要求.txt”等文档。

查看“实验基本内容与要求.txt”了解实验内容与要求后打开bomb.c文件,编译发现不能通过,代码不完整,所以bomb.c 文件只能用来作为参考。

查看bomb.c文件发现控制密码正确的6个函数分别为phase_1,phase_2,phase_3,phase_4,phase_5,phase_6,因此可以对bomb文件反汇编得到汇编文本,结合汇编文本与bomb.c文本进一步分析。

2.进入Ubuntu,将bom和bomb.c文档复制到主文件目录下,ctrl+alt+t打开终端,通过“objdump -d bomb > bomb.s”命令将可执行文件反汇编成bomb.s文件,并且可以通过“gdb -q bomb”进行调试。

3.将bomb.c复制成文本后打开bomb.c查看汇编代码并进一步分析。

(二)关卡分析1.phase_1phase_1汇编代码及注释如下:08048f61 <phase_1>:8048f61: 55 push %ebp8048f62: 89 e5 mov %esp,%ebp8048f64: 83 ec 18 sub $0x18,%esp #开辟一个24位的栈空间8048f67: c7 44 24 04 5c a1 04 movl $0x804a15c,0x4(%esp) #将0x804a15c存到%eap+4的位置,x/s 0x804a15c 得到 "We have to stand with our North Korean allies."8048f6e: 088048f6f: 8b 45 08 mov 0x8(%ebp),%eax8048f72: 89 04 24 mov %eax,(%esp) #将%ebp+8处的值存到%esp8048f75: e8 31 00 00 00 call 8048fab<strings_not_equal>8048f7a: 85 c0 test %eax,%eax8048f7c: 74 05 je 8048f83 <phase_1+0x22> #%eax=0则跳出函数,否则跳到爆炸函数,可以看出,调用<strings_not_equal>函数后如果两个字符串相等的话最后%eax会等于0 8048f7e: e8 4e 01 00 00 call 80490d1 <explode_bomb> 8048f83: c9 leave8048f84: c3 ret8048f85: 90 nop8048f86: 90 nop8048f87: 90 nop8048f88: 90 nop8048f89: 90 nop8048f8a: 90 nop8048f8b: 90 nop8048f8c: 90 nop8048f8d: 90 nop8048f8e: 90 nop8048f8f: 90 nop思路与分析:通过call 8048fab <strings_not_equal> 我们可以推断要求输入的是一串字符串,movl $0x804a15c,0x4(%esp)将地址0x804a15c存到%esp+4的位置,mov 0x8(%ebp),%eax 和mov %eax,(%esp)将输入的字符串存到%esp中,call 8048fab <strings_not_equal> 调用字符串比较函数,通过比较上面位置参数%esp+4与%esp对应的字符串是否相等,将返回值存到%eax中,test %eax,%eax,je 8048f83 <phase_1+0x22>,call 80490d1<explode_bomb>,判断如果两个字符串不相等则爆炸。

由上面分析可知地址0x804a15c中存着正确的字符串,我们只要输入相同的字符串就可以通过关卡。

进入gdb,通过命令x/s 0x804a15c查看该字符串为:"We have to stand with our North Korean allies."所以phase_1的通关密码为:"We have to stand with our North Korean allies."通过 r 命令运行程序,输入该字符串则通过第一关:结论与心得:通过分析汇编代码,通过字符串比较函数<strings_not_equal> 可以推测输入的是一串字符串,通过x/s以字符串的形式查看地址0x804a15c所对应的值,运行程序后输入该字符串即可通过关卡。

字符串比较函数主要是通过将两个字符串进行比较,将结果存到%eax中,最后判断%eax的值。

第一关相对比较简单,也比较好理解。

2.phase_2phase_2汇编代码及注释如下:08048d6a <phase_2>:8048d6a: 55 push %ebp8048d6b: 89 e5 mov %esp,%ebp8048d6d: 56 push %esi8048d6e: 53 push %ebx8048d6f: 83 ec 30 sub $0x30,%esp8048d72: 8d 45 e0 lea -0x20(%ebp),%eax8048d75: 89 44 24 04 mov %eax,0x4(%esp) #将第一个数字的地址放到%esp+4的位置8048d79: 8b 45 08 mov 0x8(%ebp),%eax8048d7c: 89 04 24 mov %eax,(%esp)8048d7f: e8 87 03 00 00 call 804910b<read_six_numbers> #读取六个数字8048d84: 83 7d e0 00 cmpl $0x0,-0x20(%ebp)8048d88: 75 06 jne 8048d90 <phase_2+0x26> #0和-0x20(%ebp)比较,不相等就爆炸8048d8a: 83 7d e4 01 cmpl $0x1,-0x1c(%ebp)8048d8e: 74 05 je 8048d95 <phase_2+0x2b> #1和-0x1c(%ebp)比较,相等就跳过爆炸8048d90: e8 3c 03 00 00 call 80490d1 <explode_bomb>8048d95: 8d 5d e8 lea -0x18(%ebp),%ebx #将第三个数字的地址传到%ebx中,即现在%ebx中存着第三个数字的地址 8048d98: 8d 75 f8 lea -0x8(%ebp),%esi #将%ebx的地址传到%esi,%esi用于待会的判断结束条件,%ebx存的地址一直循环加4,循环直到%ebx的下一个地址是%esi就结束】8048d9b: 8b 43 fc mov -0x4(%ebx),%eax #将第二个数放到%eax寄存器中8048d9e: 03 43 f8 add -0x8(%ebx),%eax #计算第二个数和第一个数的和8048da1: 39 03 cmp %eax,(%ebx)8048da3: 74 05 je 8048daa <phase_2+0x40> #前两个数的和与第三个数相比较,相等则跳过炸弹8048da5: e8 27 03 00 00 call 80490d1 <explode_bomb> 8048daa: 83 c3 04 add $0x4,%ebx #将%ebx的地址加4,现在%ebx中存着第四个数字的地址8048dad: 39 f3 cmp %esi,%ebx8048daf: 75 ea jne 8048d9b <phase_2+0x31> #比较现在%esi和%ebx里面的值是否相等,不相等则循环,否则结束。

其实两个寄存器中存的都是地址,为的是保证只输入6个数,因为当输入第7个数时,%ebx=%esi8048db1: 83 c4 30 add $0x30,%esp8048db4: 5b pop %ebx8048db5: 5e pop %esi8048db6: 5d pop %ebp #释放栈帧8048db7: c3 ret思路与分析:通过call 804910b <read_six_numbers>我们可以推断出应该是要输入6个数字。

通过对汇编代码进行分析知道-0x20(%ebp)存着第一个数字,-0x1c(%ebp)存着第二个数字,依次类推。

通过cmpl $0x0,-0x20(%ebp),jne 8048d90<phase_2+0x26>和cmpl $0x1,-0x1c(%ebp),je 8048d95 <phase_2+0x2b>知道第一个数字必须是0,第二个数字必须是1,否则就爆炸。

命令lea-0x18(%ebp),%ebx初始化寄存器%ebx的值,将第三个数字的地址传到%ebx中.lea -0x8(%ebp),%esi将%ebx的地址传到%esi,%esi用于待会的判断结束条件,%ebx存的地址一直循环加4,循环直到%ebx的下一个地址是%esi就结束,mov -0x4(%ebx),%eax将第二个数放到%eax寄存器中,add-0x8(%ebx),%eax计算第二个数和第一个数的和,cmp %eax,(%ebx),je 8048daa <phase_2+0x40>前两个数的和与第三个数相比较,相等则跳过炸弹。

相关文档
最新文档