Zitat von
Gentleman:
mich würde mal interessieren ob es möglich ist den quellcode eines delphi-programms aus der *.exe zu lesen und wenn es möglich ist, wie es geht.
Nicht in dieser Form. DeDe, IDA, ResourceHacker und andere Tools (zB PEiD und viele unzählige andere Tools) können helfen eine Programmstruktur zu verstehen. Allein der zeitliche Aufwand ist so immens, daß man meist nur einen spezifischen Teil, der einen interessiert, untersucht.
Zitat von
Oxmyx:
Nein, es ist nicht möglich. Sicherlich, man kann sich die Maschinencode-Befehle mit einem Disassembler anschauen, aber damit wird man keine Freude haben. Variablen, Funktionen, Prozeduren, Klassen, etc. existieren nicht mehr im Maschinencode, und die bekommt man auch nicht mehr so zurück, wie sie ursprünglich geschrieben wurden.
Bitte? Was existiert nicht mehr? Das ist ja lächerlich, bitte bilde dich erstmal weiter. Natürlich existieren all diese Dinge noch. Eine Klasse hat zB üblicherweise eine VTable. Je nach Compiler kann man herausbekommen wie der this/Self-Pointer weitergegeben wird (oft in einem Register).
Variablen bilden den Stackframe ...
Klar gibt es keine Namen. Man kann auch nicht unterscheiden, ob eine bestimmte Ansammlung von Variablen eine Struktur (record/struct) ist, oder einfach eine aufeinanderfolgende Deklaration verschiedener Variablen.
Klassen usw. werden meist schon anhand der
RTTI erkannt. Mit spezifischen Tools wie DeDe wird es dann noch ein Stück einfacher, da DeDe natürlich die Strukturen (i.e. Klassen) der Borland-
VCL kennt.
Aber bitte, die obige Aussage ist
so unhaltbar!
Zitat von
delphman:
Wenn man Assembler kann kommt schon Freude auf.....
Wer kann Assembler ? gebt mir euer Wissen !
Dazu gibt es hervorragende Bücher. Desweiteren ist es beim Disassemblen so, daß die Übung den Meister macht, denn so viele Bücher gibt's auch wieder nicht, und (kostenlose) Tutorials fast garnicht. Liegt unter anderem daran, daß 1. die entsprechenden Tools teuer sind (IDA PRo Standard kostet ~400 EUR) und 2. RE höher berechnet wird (~2fach von Programmierbezahlung).
Wenn also ein Kundiger sein Wissen weitergibt, verschenkt er weit wertvolleres Wissen. Außerdem ist RE (Reverse Engineering) zeitaufwendig und damit auch das Verfassen eines Tutorials.
Zitat von
Oxmyx:
Nein, es kommt auch für denjenigen keine Freude auf, der Assembler kann. Man kann mit einer Million Maschinenbefehlen einfach nichts anfangen, weil es ja z.B. keine Variablennamen gibt (es gibt auch keine Variablen an sich), es gibt keine höheren Programmstrukturen, es gibt einfach fast überhaupt nichts mehr von dem, was ursprünglich den Programmcode in Delphi ausgemacht hat.
Häh?
Zitat von
phXql:
das is dasselbe wie wenn du versuchst, von nem lied wieder die noten rauszubekommen. in manchen fällen gehts, in anderen halt nich
IDA ist mein "absolutes Gehör", kann ich da nur sagen!
Um es nochmal zu rekapitulieren. Man kann theoretisch auch MS Word disassemblieren (lassen wir mal die rechtliche und/oder moralische Diskussion außen vor),
aber man muß dann auch viele Mannjahre dafür veranschlagen.
Außerdem bleibt zu bemerken, daß die
API-Funktionen, sei es nun in ELF oder
PE-Binaries, und manchmal auch Strings die Rettungsanker des Reverse-Engineers im weiten Meer des Assemblercode sind.
Dennoch bleibt weiterhin die Aussage, daß Kompilieren sicherlich eine der besten Verschlüsselungen für Sourcecode ist
PS: Übrigens, was brächten mir denn die Variablennamen, wenn zB ein Ungar ein Programm geschrieben hätte und er zur Vergabe der Variablennamen ungarische Wörter und Abkürzungen benutzt hätte?