Gibt es Möglichkeiten, alte 16 bit MS-DOS-Anwendungen zu reverse engineeren?

7 Antworten

Verschlüsselt sind die ausführbaren Programme normalerweise nicht, vielmehr handelt es sich um Maschinencode. Es gab auch gepackte Anwendungen zur MSDOS-Zeit.

Falls die Programme keine Debuginformationen enthalten, kann man sie noch versuchen in Assembler zu decompilieren. Hatte es zu der Zeit versucht mit Decompilern, was aber nicht immer fehlerlos ging.

Denn was in der Exe steht ist ja bekanntlich verschlüsselt

Das ist nicht verschlüsselt.

Da steht Maschinen-Code, aber verschlüsselt ist das nicht wirklich. Du musst keinen Code knacken und nichts, einfach nur lesen.

Gruß

Von Experte DerRoll bestätigt

"Denn was in der Exe steht ist ja bekanntlich verschlüsselt"

Nein, da ist nichts verschlüsselt. Und ja, es gibt Möglichkeiten das zu decompilen, aber da wird nie mehr "ordenrlicher" Code draus.

Wenn es nicht extrem kritisch ist, dann solltest du die Anwendung einfach neu schreiben.

Was ist da verschlüsselt? Das einzige was du können mußt ist 8086 Maschinencode oder (bei Verwendung eines geeigneten Disassemblers) Assemblercode lesen können. Das ist natürlich heutzutage, wo sich niemand mehr damit beschäftigt eine kleine Herausforderung.

guterfrager401 
Fragesteller
 20.05.2022, 20:02

Das hier ist nicht obfusciert?

MZ÷w   ÿÿË ƒøt‹å]ˈŸ Àt,>ˆŸ u‹vþ‹D6;g˜u ÿvþèscƒÄë ÿvþè‹bƒÄ‹å]ËFàÿ Pé¸xì‹vþ‰D¸ ‹vþ‰DTÿvþè ƒÄ Àt¸ ‹vþ‰¸ ‹vþ‰Déÿ ¸ ‹vþ‰D¸ ‹vþ‰DTéê ¸ÿÿ‹vþ‰D¸ ‹vþ‰DTéÕ ‹vþ‹D Àt¸ ƒð‹vþ‰D ¸ ‹vþ‰DTé³ ¸ÿÿ‹vþ‰D¸ ‹vþ‰DTéž ¸ ‹vþ‰D¸ ‹vþ‰DTé‰ ¸ ‹vþ‰Dé} ¸ ‹vþ‰D$ër¸ ‹vþ‰DTëg‹vþ‹D6;g˜u(‹K; Àt¸ PPèTƒÄè•‹K; Àt¸ ƒð‰K;ë1ë/è†

 s h b  x \ . / ,  ÏĹ­˜ƒaL7‹vþ‹DT Àt ÿvþè7aƒÄ‹å]ÃU‹ìƒì>ˆŸ uë>ˆŸ uÿvènƒÄ Àt ¸ ‰Q;‹å]Ëv‹D+M;‰Fü‹v‹D‰Fþ~ü˜ }~þ }‹Fþ÷؃È÷؃è‰Q;ë~ü˜ ~~þ ~

‹FþƒÈƒÀ‰Q;>Q; }~üè |¸ ‰Q;ë>Q; ~~üH ¸ ‰Q;‹Q;M;ƒø }7777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777776543210/.-,+*)('&%$#""""!!!!!!!!   !"#$%%&&''(((((((((((((((((((((''''&&&&%%%%$$$$####"""""##$%&&'())*+,-./01234567777777766665555444332210//.-,+*)('&%$"!  !!"#$%%&''''''''''''''&&%%$$##""!!  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³   +©   `        $@   $@   Y@   ˆÃ@  „×—A €à7yÃACnµµ¸“Föù?éO8M30ùHw‚Z?¿sÝOu8š™™™™™¹?{®Gáz„?-Cëâ6?:Œ0âŽyE>¼‰Ø—²Òœ<2§¨Õ#öI9<§ôDý¥2š—ŒÏº[%@o¬d(È

\8        ˜™™™™™¹?       $@   $@0123456789ABCDEF      

0
DerRoll  20.05.2022, 20:06
@guterfrager401

Nein. Du mußt das in einen geeigneten Hex-Editor einlesen. Mit Ascii kommst du natürlich nicht weiter.

0
DerRoll  20.05.2022, 20:11
@guterfrager401

Es steht kein Text im Klartext drin. Dazu benötigst du zusätzlich einen Disassembler, der die Opcodes (und die stehen in der Mitte, das sind eben die Hexadezimalzahlen) in 8086 Assembler Code verwandelt. Kann es sein dass du von Maschinenprogrammierung noch weniger Ahnung hast als ich?

0
DerRoll  20.05.2022, 20:13
@guterfrager401

In dem Bild das ich dir geschickt habe steht in der linken Spalte die Speicheradresse, im mittleren Bereich die Hexcodes und im linken Bereich die Übersetzung in ASCII. Sag mal, ganz ehrlich, wieviel Ahnung hast du von dem was du da versuchst?

0
DerRoll  20.05.2022, 20:39
@guterfrager401

Nein, bin ich nicht. Aber du willst etwas tun was schon vor 40 Jahren nur Spezialisten konnten und zeigst dabei ein erschreckendes Maß an Unwissen. Daher kann ich dir zunächst mal Empfehlen dich in die Grundlagen einzuarbeiten bevor du hier große Töne spuckst.

1

es ist nicht verschlüsselt. Da steht maschinencode drin: eine Ansammlung von 1 und 0.
Zb sagen wir mal 00000001 ist maschinencode für den command push

dann würde 00000001 00000101 00000010 das bedeuten: pushe den Wert 5 in Register 2

Wenn du das in deinem Texteditor öffnest wird jedes byte natürlich ganz anders behandelt. 00000001 wäre zb ein Steuerzeichen. Deswegen sieht es obfuscated aus.

guterfrager401 
Fragesteller
 21.05.2022, 12:02

und woher bekomme ich im Netz einen Maschinensprachemonitor, der mir die EXE als Maschinenprogramm anzeigt?

0
covid69  21.05.2022, 16:14
@guterfrager401

Du kannst es in einem hex editor öffnen, dann wird

0000 0001 zb nicht als Steuerzeichen angezeigt sondern als “01” und dann kannst du hier nachschauen was das bedeutet http://ref.x86asm.net/coder64.html

oder du kannst dir einen disassembler runterladen der

0000 0001 zb in ein “push” umwandelt basierend auf den opcodes in dem link oben

0