Cracking the Safes之Linux系统下gdb调试

本文介绍了如何解决一个名为Cracking Safe的挑战,该挑战要求找出四个保险箱的正确输入。通过使用gdb进行调试和objdump进行反汇编,关注 CMP 指令以理解程序逻辑。在main函数中定位关键代码,设置断点,逐步分析以找到正确的字符串输入。

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

Cracking Safe是什么

挑战是找出四个保险箱中每个保险箱预期的正确的5个输入集。在运行二进制安全程序时,您需要一次输入一个猜测,如下所示:
在这里插入图片描述
其实,就是输入5次,程序会对输入内容进行判断,只有符合程序要求才能成功,任务就是逆向找到正确的字符串!!!

解题思路

  • 反汇编并保存每个可执行文件的输出。
    objdump -M intel -D <program's-object-file>
    如果您还需要英特尔助记符代码(而不是AT&T助记符代码),您可以使用:
    objdump -M intel intel-mnemonic -D <program's-object-file>
    例如:objdump -M intel -D s1.dat > s1.asm
  • 在您选择的文本编辑器中打开反汇编的程序集文件。
  • 搜索“main”函数–它将被标记为“main”。
  • 在Main中,尝试了解每条语句或一组语句正在做什么。

核心在于比较语句,也就是CMP XX,XX,找到CMP语句后,查看附近语句或函数的返回值,即可找到答案!

①运行程序,在main处

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

codersnote

对学生党 赞赏是鼓励也是鞭策!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值