我正在尝试将CMU的二元炸弹作为一个独立项目来学习一些x86组装和逆向工程.(这不是与班级相关的自动评分版本.)
我从http://csapp.cs.cmu.edu/public/labs.html下载了bomb.tar .
来自CMU的实验室描述:
"二元炸弹"是作为目标代码文件提供给学生的程序.运行时,它会提示用户键入6个不同的字符串.如果其中任何一个不正确,炸弹"爆炸",打印错误消息并在评分服务器上记录事件.学生必须通过拆卸和反向设计程序来"消除"他们自己独特的炸弹,以确定6个弦应该是什么.该实验室教学生理解汇编语言,并强迫他们学习如何使用调试器.这也很有趣.CMU本科生中的传奇实验室.
这是一个Linux/IA32二进制炸弹,你可以自己试试.通知评分服务器的功能已被禁用,因此请随意爆炸此炸弹而不受惩罚.
将其保存到适当的文件夹后,我在终端中运行了此命令:
tar xvf bomb.tar
Run Code Online (Sandbox Code Playgroud)
它确实提取了一个名为bomb(没有文件扩展名)的文件,但我认为它也会给我bomb.c,这也有助于参考.
我不能让"炸弹"跑.这是我尝试过的:
bomb
bomb: command not found
./bomb
bash: ./bomb: No such file or directory
Run Code Online (Sandbox Code Playgroud)虽然我意识到解决它需要在gdb中单步执行它,但我甚至无法在BASH中运行它并将自己弄错了答案!一点点帮助太棒了.
是Shebang #!,例如
#!/bin/sh
Run Code Online (Sandbox Code Playgroud)
在Linux标准库或任何Open Group标准或其他地方正式标准化的脚本可执行文件前面?如果是,请提供参考和详细信息.
注意:我最感兴趣的是shell脚本以及任何可执行文件的含义.换句话说,任何标准都要求#!在可执行文件的开头解释一下吗?但是,标准中对它的任何其他引用也是受欢迎的.
我在变量'DATA'中有一个字节.我想从中提取LSB位并打印出来.我是python的新手,我发现很多文章都有复杂的按位加法逻辑,所有这些都很难理解.我正在寻找一个像字符串一样的简单逻辑,例如DATA [7:1]请帮帮我...
lsb ×3
assembly ×1
byte ×1
extraction ×1
linux ×1
posix ×1
python-3.x ×1
shebang ×1
standards ×1