Kann man "zurückcompilieren" [was: Frage]



  • Der Disassembler kann ja nicht wissen wie die einzelnen Adressen vor der Compilierung benannt waren. Er muß den Adressen dann selber Namen übergeben und die werden nicht sehr aussagekräftig sein können.



  • ja aber ist doch übersichtlicher wenn man im source code ein namen a hat als 0x12345678 ß?? 😕



  • aber kann man aus so einem disassembler code überhaupt wieder c machen?? das geht doch bestimmt ned so gut??? 😕



  • Einen Namen kann man zuweisen. Es ist halt keiner der Dir was über den Zweck der Adresse sagt.

    Prinzipiell kann man wieder C daraus machen. Nur halt ein sehr kompliziert zu lesendes Programm. Der Decompiler kann nichts über den Zweck des Programmes wissen und übersetzt es deshalb so wie er es vorfindet. Also so wie es der Compiler umgesetzt hat.
    Vieles dazu findest Du hier:
    http://www.program-transformation.org/Transform/DeCompilation



  • console33 schrieb:

    ja aber ist doch übersichtlicher wenn man im source code ein namen a hat als 0x12345678 ß?? 😕

    Aber nicht aussagekräftiger.

    aber kann man aus so einem disassembler code überhaupt wieder c machen?? das geht doch bestimmt ned so gut???

    Ding ding, du hast das Problem erkannt. Schon alleine die Tatsache, dass aus jeder Schleife gotos gemacht werden macht eine rückcompilirung schwer bis unmöglich.

    Eine Ausnahme gibt es aber : Wenn ein Program mit Debuginformationen übersetzt wurde dann können die sehr helfen. Zum Beispiel werden sie wahrscheinlich die original Namen enthalten und weggeinlined ist auch nichts.



  • Aloha,

    Du kannst alle Disassemblierer vergessen. Das ist mehr oder minder alles Schrott, was Du geliefert bekommst und zwecks weiterverarbeitung absolut unnütz.
    Ist auch völlig egal ob Debug oder Release.

    Wozu benötigst Du denn eine Decompilation ???

    Grüße

    BOA



  • Wozu benötigst Du denn eine Decompilation ???

    *lol*
    "Da kommen immer so doofe Aufforderungen wie: Geben Sie Ihren Reg Code ein! Das Feature brauche ich aber nicht und wollte es entfernen;-) "

    greetz
    Gaunt



  • Das Thema hatten wir schon so oft, daher gibt es ja den FAQ Eintrag. 🙄



  • Gaunt schrieb:

    Wozu benötigst Du denn eine Decompilation ???

    *lol*
    "Da kommen immer so doofe Aufforderungen wie: Geben Sie Ihren Reg Code ein! Das Feature brauche ich aber nicht und wollte es entfernen;-) "

    greetz
    Gaunt

    Dafuer brauchst du doch nicht gleich Disassemblieren 🙄
    das schaffst du im Normalfall mit Bankkonto & e-banking 🙂



  • BOA schrieb:

    Aloha,

    Du kannst alle Disassemblierer vergessen. Das ist mehr oder minder alles Schrott, was Du geliefert bekommst und zwecks weiterverarbeitung absolut unnütz.
    Ist auch völlig egal ob Debug oder Release.

    Wozu benötigst Du denn eine Decompilation ???

    Grüße

    BOA

    Schau dir mal die Disassemblys von Softice an, dann sagst du so etwas nicht mehr :p

    Naja also die heutigen Disassembler können schon viele Standardfunktionen identifizieren und haben oft auch die Möglichkeit, dass man sie mit Debugsymbolen füttert.

    Selbst dumpbin das bei meinem VC mitgeliefert ist produziert sehr gute Disassemblys die man auch noch wirklich verstehen kann.



  • @User---
    Wenn die Funktionen nicht statisch gelinkt sind, kannst du sie ja auch identifizieren, da eine dynamische Library ja eh die Symbole (Namen) der Funktionen exportieren muss 🙂

    Mit einem Debugger, der einen Disassembler integriert hat, kann man definitiv gut reverse engineern. Zumindest um sich bestimmte Code stellen gefügig zu machen 😉


Anmelden zum Antworten