AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Quelltext aus compillierter exe wiederherstellen?
Thema durchsuchen
Ansicht
Themen-Optionen

Quelltext aus compillierter exe wiederherstellen?

Ein Thema von Thorben86 · begonnen am 28. Apr 2004 · letzter Beitrag vom 29. Apr 2004
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#11

Re: Quelltext aus compillierter exe wiederherstellen?

  Alt 29. Apr 2004, 07:34
Zitat von Chewie:
Zitat von Bernhard Geyer:
Mit D8 (und .NET IL-Code) ist es sehr einfach den Quellcode herauszubekommen
Wieso eigentlich? Bug oder Feature? Und krieg ich den Code dann in der Sprache, in der er geschrieben ist, oder kann ich z.B. ein in VB.NET geschriebenes Assembly in C#-Code decompilen?
Schau dir mal Lutz Roeder's .NET Reflector an, um zu sehen was möglich ist bezüglich Wiederherstellung von Sourcecode. Dabei ist es egal in was für einer Sprache ein Programm geschrieben ist. Du kann ein C#-Code einfach nach Delphi-Code umwandeln.

Bug oder Feature? Es ist ein Feature (ähnlich dem Bytecode von Java). Du kannst aber etwas mit sogenannten Obfuscator-Tools dagegen unternehmen, welcher eine möglichst hohe Verschleierung des Codes durchführt (Variablennamen werden zu aaaaaaaab oder ähnlichen.
  Mit Zitat antworten Zitat
Brüggendiek

Registriert seit: 13. Dez 2002
Ort: Dortmund
275 Beiträge
 
Delphi 5 Standard
 
#12

Re: Quelltext aus compillierter exe wiederherstellen?

  Alt 29. Apr 2004, 08:00
Hallo!

Zitat von Chewie:
Zitat von Bernhard Geyer:
Mit D8 (und .NET IL-Code) ist es sehr einfach den Quellcode herauszubekommen
Wieso eigentlich? Bug oder Feature? Und krieg ich den Code dann in der Sprache, in der er geschrieben ist, oder kann ich z.B. ein in VB.NET geschriebenes Assembly in C#-Code decompilen?
Feature, weil D8 das Programm in eine Zwischensprache umwandelt. Wenn diese Zwischensprache auch solche Kontrollstrukturen wie WHILE, REPEAT..UNTIL und FOR kann, ist natürlich ein Rückübersetzen (auch in eine andere Ausgangssprache) möglich.

Die klassischen Windows-Programme (.EXE) werden jedoch in Maschinensprache umgesetzt. Die kann nur GOTO und CALL - dadurch wird die Struktur des Originals verworfen. Luckies Hackfleich-Vergleich ist da sehr passend.

An der Umkehrcompilierung haben sich schon etliche Universitäts-Projektgruppen (Ruck Zuck PUC - Projektgruppe Umkehr-Compilierung) die Zähne ausgebissen - man muß ja versuchen, aus den Maschinenbefehlen (bzw. ihren Assembler-Entsprechungen) die Original-Struktur zurückgewinnen.

Im Prinzip kann man das Ganze rekonstruieren. Der Umkehrcompiler muß "nur" in der Lage sein, die Instruktionen zur Bereitstellung von Parametern bei Prozedur/Funktionsaufrufen zu erkennen und dann den Aufruf mit Parametern daraus zu erstellen. Man muß dann nur damit leben, daß man Variablennamen der Bauart I1, I2 etc. bei Integern hat und daß alles mit GOTO abläuft.

Aus
Delphi-Quellcode:
for lauf:=1 to 10 do
  unterprogramm(lauf);
oder
Delphi-Quellcode:
lauf:=1;
while lauf <= 10 do
begin
  unterprogramm(lauf);
  inc(lauf);
end
oder
Delphi-Quellcode:
lauf:=1;
repeat
  unterprogramm(lauf);
  inc(lauf);
until lauf>10;
würde dann ein Spitzen-Umkehrcompiler erzeugen:
Delphi-Quellcode:
i1:=1;
l1:
p1(i1);
inc(i1)
if i1<=10 then
  goto l1;
Der Rest ist dann Handarbeit.
Normalerweise erhält man allerdings Assembler - im absoluten Notfall kann ein Super-Programmierer (das wird TEUER!) vielleicht einen Fehler beheben.

Fazit: Ein Backup des Sources ist durch nichts zu ersetzen - außer durch mehrere Backups!

Gruß

Dietmar Brüggendiek
Dietmar Brüggendiek
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:19 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz