Archiv verlassen und diese Seite im Standarddesign anzeigen : Programm rekompilieren oder wieder aufdröseln
Hi Leute!
Ich hab hier son Programm, welches ich mir im Dev-C++-Editor angesehn hab. Da steht dann allerdings nur unbrauchbares Zeug. Liegt das daran, dass es kompiliert ist? Naja, jedenfalls würde ich den Source-Code gern ma lesbar machen, um mir den Aufbau anzusehen. Ist das möglich?
Danke, spawn
Ja, kompilierte Programme sind Binärdateien (dieses unlesbare Zeug).
Dekompilieren kann man nicht so einfach, du könntest es höchstens mit einem Disassembler versuchen. Der spuckt aber nur Assemblercode aus.
Wo bekomm ich son disassembler her?
und inwiefern ist der code dann nutzbar?
Es gibt aber auch Decompiler
Leider zerfetzten die min.20 bis 80% des Codes zumindest war es so mit allen die ich bisher hatte.
Leider habe ich keinen Link zueinem Cpp Decompiler
Crash-Override
04.05.2005, 19:58
Google ist dein Freund und da wir seid neustem ne Google-Leiste im Forum haben wirds noch einfacher...
ASM (Assmebler) Code wird für dich sicher nicht nutzbar sein, da ich du wohl keine Ahnung da von hast (Annahme, aber wenn dus chon nicht weist was n'Ä Dissassembler ist ...)
Assembler-Code sieht etwa so aus:
org 0x7C00 ; Unsere Startadresse
start:
cli
mov ax, 0x9000
mov ss, ax
mov sp, 0
sti
mov [bootdrv], dl
call load
mov ax, 0x1000
mov es, ax
mov ds, ax
push ax
mov ax, 0
push ax
retf
load:
push ds
mov ax, 0
mov dl, [bootdrv]
int 13h
pop ds
jc load
load1:
mov ax,0x1000
mov es,ax
mov bx, 0
mov ah, 2
mov al, 5
mov cx, 2
mov dx, 0
int 13h
jc load1
retn
times 512-($-$$)-2 db 0
dw 0AA55h
Und wer mir sagt was der Code bewirkt bekommt die Adresse wo ich ihn her hab :D
org 0x7C00 ; Unsere Startadresse
start:
cli
mov ax, 0x9000
mov ss, ax
mov sp, 0
sti
mov [bootdrv], dl
call load
mov ax, 0x1000
mov es, ax
mov ds, ax
push ax
mov ax, 0
push ax
retf
load:
push ds
mov ax, 0
mov dl, [bootdrv]
int 13h
pop ds
jc load
load1:
mov ax,0x1000
mov es,ax
mov bx, 0
mov ah, 2
mov al, 5
mov cx, 2
mov dx, 0
int 13h
jc load1
retn
times 512-($-$$)-2 db 0
dw 0AA55h
Und wer mir sagt was der Code bewirkt bekommt die Adresse wo ich ihn her hab :D
Ich tippe auf ein.. Wie schreibe ich mein eigenes OS-Tutorial oder so.
Oder eben dein eigens Dings was du da zusammenschusterst. Zumindest kommt mir der Code bekannt vor, ich hatte mal was fuer den C64 ausprobiert, sah so aehnlich aus. IIRC.
Bla, war klar. Ist von nem Bootloader.
Crash-Override
04.05.2005, 22:33
Boar, kommt verdammt nahe. Das Teil ist ein Bootsector. Wenn man ihn in den bootsector von ner Diskette schrteibt und davon bootet sorgt dieser Code dafür das die nächsten 5 Sektoren (1 Sektor = 512 Byte) in den Arbeitsspeicher geladen werden [Man beachte: Real Mode, das heißt maximal Adressierungen von 1024 KByte, das heißt nur 1 MB nutzbar, selbst wenn man 256 MB oder mehr hat...] und dannach ausgeführt werden. Als Quelle verweis ich auf LL #1 (http://lowlevel.brainsware.org/index.php?pagename=tutorials&showtut_id=1)
Jesus_666
05.05.2005, 01:48
Es gibt aber auch Decompiler
Leider zerfetzten die min.20 bis 80% des Codes zumindest war es so mit allen die ich bisher hatte.
Leider habe ich keinen Link zueinem Cpp Decompiler
Du wirst wohl auch kaum einen finden... Man kann Maschinencode problemlos in Assemblercode übersetzen (Diassembler) und Assemblercode kann auch mehr oder weniger problemlos in C-Code übersetzt werden - es ist also auch möglich, Maschinen- in C-Code umzurechnen. C++ halte ich aber für unwahrscheinlich; immerhin geht der ganze HLL-Kram zu großen Teilen verloren, wenn man's in Maschinencode umwandelt.
Möglich wär's, aber irgendwie würde es meines Erachtens nach nicht fürchterlich viel Sinn machen.
Boar, kommt verdammt nahe. Das Teil ist ein Bootsector. Wenn man ihn in den bootsector von ner Diskette schrteibt und davon bootet sorgt dieser Code dafür das die nächsten 5 Sektoren (1 Sektor = 512 Byte) in den Arbeitsspeicher geladen werden [Man beachte: Real Mode, das heißt maximal Adressierungen von 1024 KByte, das heißt nur 1 MB nutzbar, selbst wenn man 256 MB oder mehr hat...] und dannach ausgeführt werden. Als Quelle verweis ich auf LL #1 (http://lowlevel.brainsware.org/index.php?pagename=tutorials&showtut_id=1)
Bootloader oder Bootsector ist im Prinzip doch das gleiche.
Der Bootloader befindet sich auch in den ersten paar Sektoren der Festplatte (MBR) und sorgt dafür das (für Linux) die Kernelimages geladen werden.
Wie das genau funktioniert weis ich nicht, interessiert mich auch nicht wirklich, ich hab mein OS Projekt verworfen.
Hm, eigentlich totaler Stuss was ich da schreibe... der Bootsector macht das laden des Bootloaders ja erst mögich...
@Topic:
Also Disassembling ist ne dreckige Sache, wenn man keinen guten Disassembler hat der keine Kommentare setzt hat man so gut wie verloren.
Und wenn man VisualBasic Programme disassemblieren will kann man das auch
vergessen. Solche Disassembler haben die Jungs bei den Antiviren Herstellern, ist meist hausinterne Software, an sowas kommt man leider nicht bzw nur schwer.
BTW, will jemand disassemblies vom neuen Sober Wurm? :3 *protz*
Ja, Disassembling ist wirklich eine undankbare Sache. Wenn man sich denkt, dass man eben mal nen' Spiel disassemblieren und dann daraus lesen kann, sollte man das schnell wieder vergessen.
Kleine Programme kann man mal disassemblen und daraus auch ohne Kommentare lesen. Zum Beispiel welche Interrupts/System Calls verwendet werden, das kann einem helfen, wenn man beispielsweise die System Funktionen umbiegen will oder ein ähnliches Vergehen plant. ;)
So ein Zeug mit Ints usw. bleibt ja im Code enthalten. Also kleine Dinge kann man durch's Disassemblieren schon erfahren, wenn man zum Beispiel, wie beim Virenscan, nach etwas Bestimmtem sucht. Aber zum Überblicken großer Programme ist es eher nichts.
freundliche Grüße, Rolus
BTW, will jemand disassemblies vom neuen Sober Wurm? :3 *protz*
Nein danke. Würmer werden bitte schön komplett selber geschrieben und nicht einfach nur modifiziert.
@topic:
Disassemblieren halte ich normalerweise für arg unsportlich. Wenn jemand seinen Sourcecode nicht freigeben will, wird er seine Gründe haben.
@spawn:
Was für ein Projekt isses denn? Vielleicht können wir dir ja auch so weiterhelfen.
Nein danke. Würmer werden bitte schön komplett selber geschrieben und nicht einfach nur modifiziert.
Ich hab echt besseres zu tun als Würmer zu modifizieren (was sowieso ziemlich lahm ist, finde ich zumindest).
Aber lassen wir das ma, geht zu off topic ;)
Powered by vBulletin® Version 4.2.3 Copyright ©2025 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.