二进制拆弹实验详解linux,拆解二进制炸弹

本文详细介绍了如何通过反汇编和调试工具GDB、Objdump来拆解Linux上的二进制炸弹实验。实验目标是理解C程序的机器级表示、GDB的使用,并通过分析炸弹程序的各个阶段,找到正确输入以解除炸弹。实验涉及多个关卡,每个关卡有不同的输入要求,包括字符串、数字和特定计算。通过实验,可以提升对机器代码、反汇编和调试技巧的理解。
摘要由CSDN通过智能技术生成

拆解二进制炸弹

一、实验目的

1.理解C语言程序的机器级表示。

2.初步掌握GDB调试器的用法。

3.阅读C编译器生成的x86-64机器代码,理解不同控制结构生成的基本指令模式,过程的实现。

二、 实验环境

SecureCRT(10.105.222.110)

Linux

Objdump命令反汇编

GDB调试工具

。。。。。

三、实验内容

登录bupt1服务器,在home目录下可以找到Evil博士专门为你量身定制的一个bomb,当运行时,它会要求你输入一个字符串,如果正确,则进入下一关,继续要求你输入下一个字符串;否则,炸弹就会爆炸,输出一行提示信息并向计分服务器提交扣分信息。因此,本实验要求你必须通过反汇编和逆向工程对bomb执行文件进行分析,找到正确的字符串来解除这个的炸弹。

本实验通过要求使用课程所学知识拆除一个“binary bombs”来增强对程序的机器级表示、反汇编代码、调试器和逆向工程等方面原理与技能的掌握。 “binary bombs”是一个Linux可执行程序,包含了5个阶段(或关卡)。炸弹运行的每个阶段要求你输入一个特定字符串,你的输入符合程序预期的输入,该阶段的炸弹就被拆除引信;否则炸弹“爆炸”,打印输出 “BOOM!!!”。炸弹的每个阶段考察了机器级程序语言的一个不同方面,难度逐级递增。

为完成二进制炸弹拆除任务,需要使用gdb调试器和objdump来反汇编bomb文件,可以单步跟踪调试每一阶段的机器代码,也可以阅读反汇编代码,从中理解每一反汇编代码代码的行为或作用,进而设法推断拆除炸弹所需的目标字符串。实验2的具体内容见实验2说明。

四、实验步骤及实验分析

1准备过程:

1.1.通读bomb课件,明白实验大致要求

1.2.查找CSAPP书本、CSAPP课件、gdb使用说明,明白各类操作符含义

1.3.回顾上次实验,复习gdb中设置断点、查找寄存器等各项操作

2启动bomb、断点设置

2.1.登录、查找分配到的bomb(bomb265)。

2.2.解压、读取bomb265。

2.3.启动gdb,查看第一关反汇编代码,确定引爆函数explode_bomb并在其设置断点,运行。

3.第一关

3.1. 查看关卡的反汇编代码

3.2. strings_not_equal——输入为字符串;

x/s查看前一句地址内容得对应字符串“Each successive processor has been designed to be backward compatible.”

4.第二关

4.1. 查看关卡的反汇编代码

4.2. read_six_numbers——输入为六个数字;

cmpl $0x1,(%r

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值