二进制炸弹

本文详细记录了破解二进制炸弹实验的过程,涉及反汇编、字符串比较、循环逻辑及switch语句的分析。通过理解汇编代码,逐步揭示了各关卡的解题思路,包括输入字符串、数字序列和特定数值的判断条件。
摘要由CSDN通过智能技术生成

前言

最近上系统级编程的课,其中一个实验是破解二进制炸弹,下面记录一下解题思路。

准备工作

由于老师提供了binarybomb移植版文件,包含:

  • gdb.exe
  • objdump.exe

一个调试工具一个反汇编工具,但这是Windows的移植版。在Linux下使用对应的gdb和objdump即可

反汇编

在bomb.exe文件下路径下,命令行输入objdump -d bomb.exe,得到了程序的汇编代码。然后大致浏览了一下,发现其中有六个函数phase_1……phase_6,基本上也就可以确定就是这六个关卡了。

phase_1

知识点:string,函数调用,栈

找到phase_1对应的汇编代码,可以看到就那么10几行

在这里插入图片描述

不难发现,其中一个call指令,调用了string_not_equal函数。可以猜测到应该就是比较我们输入的字符串密码和内置的密码是否相等

接下来使用gdb调试程序,这个函数前三行都是给函数分配栈空间,对实验没什么影响,我们在第四行设置一个断点,运行:

b *0x40184c  #设置断点
r     #运行

在这里插入图片描述

然后乱输入一个123456789进入,那么我们输入的字符串被放在哪里了呢?肯定是作为一个参数要传进字符串比较这个函数的,才可以进行比较。在调用这个函数之前&#

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值