7

x86アセンブリとリバースエンジニアリングを学ぶために、独立したプロジェクトとしてCMUのバイナリ爆弾を実行しようとしています。(クラスに関連付けられた自動採点版ではありません。)

http://csapp.cs.cmu.edu/public/labs.htmlから bomb.tar をダウンロードしました。

CMU のラボの説明から:

「バイナリ ボム」は、オブジェクト コード ファイルとして生徒に提供されるプログラムです。実行すると、ユーザーは 6 つの異なる文字列を入力するように求められます。これらのいずれかが正しくない場合、爆弾は「爆発」し、エラー メッセージが出力され、イベントがグレーディング サーバーに記録されます。生徒は、プログラムを逆アセンブルおよびリバース エンジニアリングして、6 つの弦がどうあるべきかを判断することにより、独自の独自の爆弾を「解除」する必要があります。このラボでは、学生にアセンブリ言語を理解するように教え、デバッガーの使用方法を強制的に学習させます。それもとても楽しいです。CMU学部生の間では伝説の研究室。

これはLinux/IA32 のバイナリ爆弾で、自分で試すことができます。グレーディング サーバーに通知する機能は無効になっているため、この爆弾を爆発させても問題ありません。

適切なフォルダーに保存した後、ターミナルで次のコマンドを実行しました。

tar xvf bomb.tar
  1. (ファイル拡張子なし)というファイルを抽出しましたが、それも参照に役立つとbomb思いました。bomb.c

  2. 「爆弾」を実行できません。これが私が試したことです:

    bomb
    bomb: command not found
    
    ./bomb
    bash: ./bomb: No such file or directory
    
  3. それを解決するにはgdbでステップスルーする必要があることはわかっていますが、BASHで実行して間違った答えで自分を爆破することさえできません! 少しの助けは素晴らしいでしょう。

4

3 に答える 3

1

Fabio A. Correaが爆弾を実行fileし、それが 32 ビットの LSB 実行可能ファイルであることを発見したため、起動時にロードする必要がある LSB スクリプトが欠落していることが原因のようです。

実行sudo apt-get install lsb-coreするだけでこれが修正されます。その後、ldd bomb動作します。

アップデート:

さらに(LSBの準備が整った後)、実際にはi386アーキテクチャのlibcであるlddinexist が原因であることを示しています。代わりに、パッケージを直接libc.so.6 => /lib32/libc.so.6インストールしてみることができます。libc6-i386

その後、disassemble func_namegdb で直接実行できます。すべてのシンボルが保存されているので、関数の名前を直接見ることができます。stringsあなたにも役立つかもしれません。

ところで、この質問は Unix&Linux に配置する必要があると思います。

于 2015-06-11T10:07:38.397 に答える
0

file bomb通知:

ELF 32-bit LSB  executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.0.0, not stripped

次のように入力して、bashで実行できるはずです。

tar xvf bomb.tar
chmod +x bomb
./bomb

私の64ビットKubuntu 14.04で動作しました。

于 2014-10-19T23:40:45.530 に答える