Hi,
es tut mir wirklich Leid, wenn es dieses Thema schon mal gab oder man durch Googlen sofort die Antwort findet, aber ich weiß nicht wonach ich suchen soll.
Ich habe eine Frage zum Disassemblieren und/oder "Dateiformaten".
Wenn ich eine kleine Assemblerdatei zu *.bin assembliere und diese Date wieder disassemliere kann ich den Code ohne Problem lesen. Mein Problem tritt auf, wenn ich die Datei über eine *.obj zu einer *.exe mache. Nicht nur, dass der Code jetzt recht schwer zu verstehen ist (was eigentlich klar ist), sondern ich kann Variablen nicht mehr zurückverfolgen.
Ich zeig einfach mal meinen Code:
Meine *.asm
Das Ergebnis der disassemblierten *.bin
was ja immer noch zu lesen und verstehen ist.
Wenn ich den Code richtig verstehe wird in der ersten Zeile einfach nur das geladen, was an der Position (?) 00000007 steht.
Jetzt meine erste Frage: Wie kann der Computer entscheiden ob das, was bei 00000007 steht oder 0x7 in das Register geschrieben werden soll?
Ich bin begeistert, wenn jmd. noch bis hier gelesen hat.
OK, weiter.
Das Ergebnis der disassemblierten *.exe
Jetzt kann ich erkennen, dass wohl nur die letzten vier Zeile wichtig sind. Aber ich kann jetzt nicht mehr zurückverfolgen, was an der Position 00000007 steht, denn "popaw" steht jetzt bei 00000047.
Meine zweite Frage: Gibt es eine Möglichkeit entweder *.exe in *.bin umwandeln oder herauszufinden, was die Position 00000007 ist?
OK, ich hoffe, das ist jetzt nicht zu viel.
Vielen Dank für eure Hilfe!
EDIT:
Falls irgendjemand langweilig sein sollte, kann der mir ja vielleicht erklären, was es mit dem Rest des disassemblierten *.exe Codes auf sich hat.
es tut mir wirklich Leid, wenn es dieses Thema schon mal gab oder man durch Googlen sofort die Antwort findet, aber ich weiß nicht wonach ich suchen soll.
Ich habe eine Frage zum Disassemblieren und/oder "Dateiformaten".
Wenn ich eine kleine Assemblerdatei zu *.bin assembliere und diese Date wieder disassemliere kann ich den Code ohne Problem lesen. Mein Problem tritt auf, wenn ich die Datei über eine *.obj zu einer *.exe mache. Nicht nur, dass der Code jetzt recht schwer zu verstehen ist (was eigentlich klar ist), sondern ich kann Variablen nicht mehr zurückverfolgen.
Ich zeig einfach mal meinen Code:
Meine *.asm
Code:
mov ax, a
mov al, 01h
int 16h
a db "a"
Das Ergebnis der disassemblierten *.bin
Code:
00000000 B80700 mov ax,0x7
00000003 B001 mov al,0x1
00000005 CD16 int 0x16
00000007 61 popaw
Wenn ich den Code richtig verstehe wird in der ersten Zeile einfach nur das geladen, was an der Position (?) 00000007 steht.
Jetzt meine erste Frage: Wie kann der Computer entscheiden ob das, was bei 00000007 steht oder 0x7 in das Register geschrieben werden soll?
Ich bin begeistert, wenn jmd. noch bis hier gelesen hat.

OK, weiter.
Das Ergebnis der disassemblierten *.exe
Code:
00000000 4D dec bp
00000001 5A pop dx
00000002 48 dec ax
00000003 0001 add [bx+di],al
00000005 0000 add [bx+si],al
00000007 0004 add [si],al
00000009 0000 add [bx+si],al
0000000B 00FF add bh,bh
0000000D FF00 inc word [bx+si]
0000000F 0000 add [bx+si],al
00000011 0000 add [bx+si],al
00000013 0000 add [bx+si],al
00000015 0000 add [bx+si],al
00000017 004000 add [bx+si+0x0],al
0000001A 0000 add [bx+si],al
0000001C 0000 add [bx+si],al
0000001E 0000 add [bx+si],al
00000020 0000 add [bx+si],al
00000022 0000 add [bx+si],al
00000024 0000 add [bx+si],al
00000026 0000 add [bx+si],al
00000028 0000 add [bx+si],al
0000002A 0000 add [bx+si],al
0000002C 0000 add [bx+si],al
0000002E 0000 add [bx+si],al
00000030 0000 add [bx+si],al
00000032 0000 add [bx+si],al
00000034 0000 add [bx+si],al
00000036 0000 add [bx+si],al
00000038 0000 add [bx+si],al
0000003A 0000 add [bx+si],al
0000003C 0000 add [bx+si],al
0000003E 0000 add [bx+si],al
00000040 B80700 mov ax,0x7
00000043 B001 mov al,0x1
00000045 CD16 int 0x16
00000047 61 popaw
Meine zweite Frage: Gibt es eine Möglichkeit entweder *.exe in *.bin umwandeln oder herauszufinden, was die Position 00000007 ist?
OK, ich hoffe, das ist jetzt nicht zu viel.
Vielen Dank für eure Hilfe!
EDIT:
Falls irgendjemand langweilig sein sollte, kann der mir ja vielleicht erklären, was es mit dem Rest des disassemblierten *.exe Codes auf sich hat.

Zuletzt bearbeitet: