Frage:
Reverse Engineering einer alten ausführbaren DOS QBasic-Datei
ricardojoaoreis
2013-04-02 21:48:42 UTC
view on stackexchange narkive permalink

Ich habe mich kürzlich entschlossen, ein altes DOS-Text-basiertes Spiel, das in QBasic codiert wurde, zurückzuentwickeln.

Ich habe online einige Informationen über die Demontage alter DOS-Spiele gefunden, aber hauptsächlich für Wacom-kompiliertes C / C ++ Binärdateien, aber nichts auf QBasic. Ich weiß, dass es wahrscheinlich unmöglich ist, den ursprünglichen Basiscode zu erhalten, aber als ich die Datei mit nasm zerlegte, bekam ich auch keine nützlichen Informationen ...

Irgendwelche Zeiger?

Drei antworten:
#1
+8
Ange
2013-04-02 22:15:27 UTC
view on stackexchange narkive permalink
  • Debuggen mit DOSBox-Debug-fähigen Builds
  • Disassemblieren mit IDA
    • Versuchen Sie, Ihre eigene leere qbasic EXE zu kompilieren und zu vergleichen - dies wird helfen Sie dabei, den Compiler-Code vom tatsächlichen Code Ihres Spiels zu unterscheiden. Sie können dies automatisch tun, indem Sie eine FLIRT-ähnliche Signatur der leeren EXE-Datei erstellen und dann in Ihre eigene EXE-Datei in IDA importieren.
#2
+8
Igor Skochinsky
2013-04-02 22:51:04 UTC
view on stackexchange narkive permalink

Anscheinend gibt es bereits einen Dekompiler für ausführbare DOS Basic-Dateien .

Anhand von Beispielen auf dieser Seite kann ein Großteil des Codes wiederhergestellt werden . Ich denke, es wurde eine Form von P-Code verwendet, oder es gab einige zusätzliche Metadaten.

Beschreibungen der Fehlermeldungen des Dekompilers können einige Hinweise auf verschiedene Funktionen geben, die von der Basic-Laufzeit implementiert werden .

#3
+5
0xC0000022L
2013-04-03 00:39:13 UTC
view on stackexchange narkive permalink

Ich fand die debug-fähigen Builds etwas unhandlich. Aber ich fand die Kombination von DOSBox und IDA mit idados ziemlich gut. Es ist ein IDA Pro-Plugin, mit dem Sie den Debugger eines debug-fähigen DOSBox-Builds innerhalb von IDA steuern können, ähnlich wie Sie einen Debugger steuern können, auf dem einer der anderen unterstützten Remote-Debugger ausgeführt wird.

Angesichts der vorhandenen Antwort von Igor ist dies natürlich wie die Verwendung eines Küchenmessers anstelle eines Skalpells, aber ich dachte, ich sollte es erwähnen, da es eine allgemeinere Methode zum Umkehren von DOS-Programmen ist.

NB: Früher gab es ein noch älteres, aber meiner Meinung nach nicht verwandtes Plugin mit demselben Namen, das vom ursprünglichen Autor nicht gepflegt wurde. Ich habe noch eine Kopie davon auf meiner Festplatte (zu Hause), aber die Website scheint nicht mehr zu existieren.

Nun, der Dekompiler, den ich erwähne, ist nicht öffentlich, also ist nichts falsch an dem guten alten Debugging.


Diese Fragen und Antworten wurden automatisch aus der englischen Sprache übersetzt.Der ursprüngliche Inhalt ist auf stackexchange verfügbar. Wir danken ihm für die cc by-sa 3.0-Lizenz, unter der er vertrieben wird.
Loading...