hallo zusammen!
eine frage: gibt es eine art re-compiler, der aus fertigen .exe datein wieder den quellcode generieren kann? sodaß man diesen ändern, und danach wieder in .exe umwandeln kann???
thx
silent bob
Programmieren - alles kontrollieren 4.941 Themen, 20.708 Beiträge
Vielleicht hilft ResHacker.exe
http://rpi.net.au/~ajohnson/resourcehacker
Und woher soll dieser Re-Compiler wissen in welcher Programmiersprache die EXE entwickelt wurde?
Indem ein guter Re-Compiler die exe-Datei nach bestimmten Kriterien durchsucht.
Z.B. Pegasus Mail ist in C++ programmiert.
= Copyright Borland C++ findet man in der EXE
So und was macht dann der User der Visual C++ besitzt, woher soll der nun die Borland-Lib's herbekommen, damit er mit dem Code auch was sinnvollen anfangen kann?
Die nächste Anwendung ist dann mit dem CodeWarrior in C++ geschrieben die extrem viel aus der Qt-Lib nutzt, dabei aber nicht die Free Qt, sondern die richtig teure Comercial Version, wiederum eine andere nutzt Routinen aus der SDTS++ Library, was ist dann?
Im Extremfall kann ein Re-Assembler oder besser Disassembler(Kernel-Debugger wie SoftIce) aus der Exe einen Assembler-Ablaufcode generieren! Aber auch diesen wird man, ohne die bei der Entwicklung genutzten Bibliotheken, nach einer Änderung nicht wieder zu einer funktionierenden Exe linken können.
Außerdem woher soll so ein ominöser Re-Compiler, selbst wenn er sich auf einen vorher generierten Assemblercode stützt, die Gedankenwege des Entwicklers der Exe bei der Codeentwicklung kennen, selbst schon ein einfacher Assemblercode kann auf unterschiedliche Codierarten in z.B. C++ erzeugt worden sein, aber der Hexcode der Exe-Datei ist für diesen Abschnitt der gleiche!!!
einfaches Beispiel:
int i=2;
if( i == 2 )
{
i = 0;
}
ergibt in Assembler z.B(vereinfacht dargestellt):
...
mov dword ptr [ebp-4],2
cmp dword ptr [ebp-4],2
jne main+2Ch (0040103c)
mov dword ptr [ebp-4],0
...
der gleiche Assemblercode und damit auch die Hexcodestelle in einer Exe wird aber auch erzeugt wenn man korrekterweise die if-Abfrage so schreibt:
if ( 2==i )
danke leute. ist das alles also doch nicht so einfach wie ich dachte. aber Koltis tip mit dem ResHacker war schon ganz gut. jetzt hab ich immerhin schonmal einen kleinen einblick.
danke
Was hast du denn vor?
Mal abgesehen von einer evt. Urheberrechtsverletzung bei Codeänderung an Binarys, empfehle ich dir SoftIce von Numega zu nutzen (Assemblerkenntnisse vorausgesetzt). Wenn es z.B. darum geht, einfach nur die Seriennummerabfrage bei einer Exe zu umgehen, ist das relativ einfach. Du suchst mit dem Debugger die entsprechende Prüfroutinen im Assemblercode und veränderst die Sprungadresse, läßt dir den geänderten Hexcodeteil ausgeben und verwendest den in einem EXE-Patcher!
eigentlich hab ich nichts großartiges vor. mich hat halt nur mal interessiert, wie so eine .exe datei "von innen" aussieht. wie der ganze kram aufgebaut ist, usw.
danke für deinen tip, mit der seriennummer-umgehung (du bringst einen ja auf ideen... ;-), aber ich hab keine ahnung wie man mit einem debugger umgeht.
Hm, sieht so aus als solltest du dich erstmal mit dem ganzen Prinzip des Compilens auseinandersetzen, bevor du anfängst re-zu-compilieren.
Also, eine EXE-Datei sieht innen ziemlich öde aus:
GAAAAAANNNNNNZZZ viele Nullen und Einsen.
Und das wars auch schon.
Man kann Quelltext der in höheren Programmiersprachen geschrieben wurde, compilieren, also in Nullen und Einsen übersetzen lassen, andersrum geht das aber quasi gar nicht. Das einzige ist das debuggen, wo die einzelnen Befehle vom Maschinencode in kryptische Kürzel übersetzt werden, dies hat aber nix mehr mit 'höherer Programmiersprache' zu tun. Es ist eher ein notdürftiger Weg und für Anfänger sehr kompliziert.
Wenn das re-compilieren funktionieren würde... ich denke dann hätte Microsoft kein Monopol und niemand könnte Software lizensieren oder gar patentieren.
Greetz
--_-
Ich finde Deinen Beitrag unheimlich stark. Hast Dir wirklich Mühe gegeben.
Ich habe ja nur laut gedacht.
Das letzte Mal, daß ich von einem Re-Compiler gehört habe, war zur der Zeit, als ich noch mit einem C64 gearbeitet hatte. Da gab es einen Re-Compiler für BASIC.