计算机系统基础lab2(二进制炸弹实验)

这篇博客详细介绍了计算机系统基础实验中的二进制炸弹挑战,涵盖六个阶段及一个隐藏阶段的密码解析,涉及Linux命令、汇编语言、递归函数和链表操作。通过分析和调试,成功解密所有阶段的密码,达到实验目的。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


一、实验目的

  1. 熟悉linux基本操作命令,其中常用工具和程序开发环境
  2. 熟悉反汇编obnjump、调试指令gdb的操作
  3. 熟悉汇编语言中的循环、选择语句,及指针、链表、数组、二分树的应用

二、实验要求

  1. 尽快熟悉linux基本操作命令,还有其中常用工具和程序开发环境。以及objdump、gdb指令
  2. 灵活掌握各种汇编语句,以及查询内存中的信息的方法。
  3. 每个炸弹考察了汇编语言的一个不同方面:阶段一,字符串比较;阶段二,循环;阶段三,条件/分支;阶段四,递归调用和栈;阶段五,指针;阶段六,链表/指针/结构。隐藏阶段只有当在阶段4的拆解字符串后再附加一特定字符串后才会出现(作为最后一个阶段)。

三、实验内容(所修改函数代码,功能以及重要代码的解释)

第一阶段:

密码:I turned the moon into something I call a Death Star.
分析:
在这里插入图片描述
根据strings_not_equal函数可以看出,该函数为判断字符串是否相等的函数。如果输入的字符串和%eax里面的字符不相同,则该炸弹爆炸,所以我们通过x/s $eax查看其中的数据,即可得到该阶段的密码。在这里插入图片描述

第二阶段:

密码:0 1 1 2 3 5
分析:
通过分析read_six_numbers函数可得,该阶段的密码为6个数字。
在这里插入图片描述在这里插入图片描述
通过分析这几句话可知,我们将%ebp-0x30的地址赋值给%esi。通过查看该值为0。(该值即为第一个数字)

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值