Ergebnis 1 bis 12 von 12

Thema: Programm rekompilieren oder wieder aufdröseln

  1. #1

    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

  2. #2
    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.

  3. #3
    Wo bekomm ich son disassembler her?
    und inwiefern ist der code dann nutzbar?

  4. #4
    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

  5. #5
    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:

    Code:
    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

  6. #6
    Zitat Zitat von Crash-Override

    Code:
    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
    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.

  7. #7
    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

  8. #8
    Zitat Zitat von dadie
    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.

  9. #9
    Zitat Zitat von Crash-Override
    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
    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*

    Geändert von codec (05.05.2005 um 20:15 Uhr)

  10. #10
    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

  11. #11
    Zitat Zitat
    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.

  12. #12
    Zitat Zitat von DFYX
    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

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •