2014-10-18 3 views
6

Ich versuche CMU binäre Bombe als ein unabhängiges Projekt zu tun, etwas x86 Assembly und Reverse Engineering zu lernen. (Es ist keine automatisch abgestufte Version, die an eine Klasse gebunden ist.)Wie führe ich die CMU-Binärbombe in Ubuntu Linux aus?

Ich habe bomb.tar von http://csapp.cs.cmu.edu/public/labs.html heruntergeladen.

Aus Beschreibung CMU Labors:

A „binäre Bombe“ ist ein Programm, um Studenten als Objektcode Datei zur Verfügung gestellt. Wenn es ausgeführt wird, fordert es den Benutzer auf, 6 verschiedene Zeichenfolgen einzugeben. Wenn einer dieser falsch ist, "explodiert" die Bombe, Drucken eines Fehlers Nachricht und Protokollieren des Ereignisses auf einem Bewertungsserver. Studenten müssen ihre eigene einzigartige Bombe "entschärfen", indem sie das Programm zerlegen und umstellen, um festzustellen, was die 6 Zeichenketten sein sollten. Das Labor lehrt Studenten, die Assemblersprache zu verstehen, und zwingt auch sie zu lernen, wie man einen Debugger benutzt. Es macht auch großen Spaß. Ein legendäres Labor unter den CMU Undergrads.

Hier ist eine Linux/IA32 binary bomb, die Sie für sich ausprobieren können. Die Funktion , die den Bewertungsserver benachrichtigt, wurde deaktiviert, also fühlen Sie sich frei, diese Bombe ungestraft zu explodieren.

Nachdem sie in einen entsprechenden Ordner Speichern lief ich diesen Befehl im Terminal:

tar xvf bomb.tar 
  1. Eine Datei wird bomb genannt extrahieren hat (keine Dateierweiterung), aber ich dachte, es würde auch geben Sie mir bomb.c, die auch als Referenz hilfreich wäre.

  2. Ich kann nicht "Bombe" zu laufen bekommen. Hier ist, was ich habe versucht:

    bomb 
    bomb: command not found 
    
    ./bomb 
    bash: ./bomb: No such file or directory 
    
  3. Während ich merke, es zu lösen durch sie in gdb erfordert treten, kann ich nicht einmal in BASH laufen und ich sprenge mit falschen Antworten noch! Eine kleine Hilfe wäre fantastisch.

+0

Wir wissen nicht, was in diesem Archiv ist, und selbst wenn ich es herunterladen kann - ich werde es nicht empfehlen, weil Gott weiß, was drin ist. Der beste Weg ist, den Autor dieses Archivs zu kontaktieren. –

+1

Funktioniert hier gut auf Ubuntu 14.04.1 LTS, 64 Bit, AMD. ./bomb führte die Bombe. Bombe sagt 'Willkommen zu meiner teuflischen kleinen Bombe. Sie haben 6 Phasen, um sich in die Luft zu jagen. Einen schönen Tag noch! '. Durch Drücken von 'CTRL + C' wurde die Bombe deaktiviert mit' Du denkst also, du kannst die Bombe mit Strg-C stoppen, oder? Gut, ok. :-) ' – Paul

+4

Der Grund, warum du' bomb.c' nicht bekommst, ist, dass es entweder die Antwort auf die Aufgabe enthält oder die Zuweisung einfacher macht. – Paul

Antwort

0

file bomb informiert:

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

sollten Sie in der Lage sein, es auf bash laufen, indem Sie:

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

Es funktionierte in meinem 64-Bit-Kubuntu 14.04.

+0

Hmmm .. Auch wenn ich den chmod-Befehl ausgeführt habe, bekomme ich "bash: ./bomb: Keine solche Datei oder Verzeichnis" Vielleicht muss ich mein Ubuntu aktualisieren .... – Seaver

+0

Das ist sehr seltsam. Diese ausführbare Datei stammt aus dem Jahr 2002, was Ubuntu hast du da? Funktioniert 'gdb./Bomb' für Sie? –

+0

Momentan benutze ich Ubuntu 12.04.4 LTS. Wenn ich es "gdb ./bomb" sage, gibt es mir eine (gdb) Eingabeaufforderung. Wenn ich es sage "run", heißt es Startprogramm:/home/seaver/bomb3/bombe/bin/bash:/home/seaver/bomb3/bombe: Keine solche Datei oder Verzeichnis Während des Startprogramms mit Code 127 beendet. – Seaver

1

Seit Fabio A. Correa lief file auf der Bombe und fand heraus, dass es sich um eine 32-Bit-LSB ausführbar war, scheint es, dass ist durch einige fehlende LSB-Skripten verursacht, die beim Systemstart geladen werden soll.

Einfach ausgeführt sudo apt-get install lsb-core wird dies beheben. Danach funktioniert auch ldd bomb.

Update:

Weitere ldd (nach der LSB Dinge immer bereit) zeigt, dass es tatsächlich von einigen inexist libc.so.6 => /lib32/libc.so.6 verursacht wird, die die libc der i386-Architektur ist. Sie können stattdessen versuchen, das Paket libc6-i386 direkt zu installieren.

Danach können Sie disassemble func_name in Ihrem gdb direkt ausführen. Wenn alle Symbole erhalten sind, können Sie die Namen der Funktionen direkt sehen. strings könnte Ihnen auch helfen.

BTW, sollte diese Frage in Unix gestellt werden & Linux, denke ich.

+0

Danke für das Follow-up, @ 2gluxon und @ Arthur2e5!Ich kann diese Antworten nicht testen, da diese VM vor Monaten gestorben ist, aber ich werde 32 vs 64-Bit-Kompatibilität im Hinterkopf behalten für zukünftige Referenz :) – Seaver

+1

Wenn Sie den Befehl 'file' für eine ELF-Datei verwenden, die Informationen unmittelbar danach "32-Bit" oder "64-Bit" ist die Endianess: "LSB" (Least Significant Byte zuerst) oder "MSB" (Most Significant Byte zuerst). Alle i386-Executables sind Little Endian, also werden sie alle als LSB identifiziert. Dies ist völlig unabhängig von dem anderen LSB, an das Sie denken. –

1

Wie die anderen Antworten nahelegen, scheint dies ein Problem mit der CPU-Architekturkompatibilität zu sein. Ich war in der Lage, dies auf Ubuntu 15.04 64-Bit zu lösen, durch die Installation der Pakete bei AskUbuntu.com How to run 32-bit programs on a 64-bit system [duplicate]

Speziell der folgende Befehl half.

sudo apt-get install lib32z1 lib32ncurses5 lib32bz2-1.0 
Verwandte Themen