Programmieren - alles kontrollieren 4.941 Themen, 20.708 Beiträge

gibts nen re-compiler?

Silent Bob / 9 Antworten / Baumansicht Nickles

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

bei Antwort benachrichtigen
Kolti Silent Bob „gibts nen re-compiler?“
Optionen

Vielleicht hilft ResHacker.exe

http://rpi.net.au/~ajohnson/resourcehacker

bei Antwort benachrichtigen
Miguel.Ferrer Silent Bob „gibts nen re-compiler?“
Optionen

Und woher soll dieser Re-Compiler wissen in welcher Programmiersprache die EXE entwickelt wurde?

bei Antwort benachrichtigen
Kolti Miguel.Ferrer „Und woher soll dieser Re-Compiler wissen in welcher Programmiersprache die EXE...“
Optionen

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

bei Antwort benachrichtigen
Was auf die Fresse? Kolti „Indem ein guter Re-Compiler die exe-Datei nach bestimmten Kriterien durchsucht....“
Optionen

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 )




bei Antwort benachrichtigen
Silent Bob Was auf die Fresse? „So und was macht dann der User der Visual C besitzt, woher soll der nun die...“
Optionen

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

bei Antwort benachrichtigen
Nexios803 Silent Bob „danke leute. ist das alles also doch nicht so einfach wie ich dachte. aber...“
Optionen

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!

bei Antwort benachrichtigen
Silent Bob Nexios803 „Was hast du denn vor? Mal abgesehen von einer evt. Urheberrechtsverletzung bei...“
Optionen

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.

bei Antwort benachrichtigen
Voll K. Racho Silent Bob „eigentlich hab ich nichts großartiges vor. mich hat halt nur mal interessiert,...“
Optionen

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
--_-

bei Antwort benachrichtigen
Kolti Was auf die Fresse? „So und was macht dann der User der Visual C besitzt, woher soll der nun die...“
Optionen

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.

bei Antwort benachrichtigen