Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi D2010 - RTTI- Komplettes Reverse Engineering möglich? (https://www.delphipraxis.net/141452-d2010-rtti-komplettes-reverse-engineering-moeglich.html)

Ralf Kaiser 9. Okt 2009 08:44


D2010 - RTTI- Komplettes Reverse Engineering möglich?
 
Halli Hallo,

Ist es eigentlich mit den neuen RTTI-Funktionen auch möglich den Code von Methoden zu rekonstruieren?

In .NET gibt es ja die Möglichkeit ein Programm, wenn es nicht "obfuscated" wurde, z.B. mit der Software "Reflector" komplett wieder herzustellen. Dabei lassen sich mittles "Reflector" auch fertig compillierte Programme öffnen und analysieren.

Geht das mit der neuen RTTI jetzt auch? (zumindest an das Analysieren fon fertigen Exen kann ich bei Delphi nicht so recht glauben...)

Leider habe ich (noch) kein D2010 und meine Trial ist bereits abgelaufen, kann also selbst nicht testen was da alles möglich ist.

Ciao,
Ralf

Bernhard Geyer 9. Okt 2009 08:50

Re: D2010 - RTTI- Komplettes Reverse Engineering möglich?
 
Es wäre mir neue wenn der D2010-Compiler in eine IL (Intermediate Language) Kompiliert und diese dan per JIT zu laufzeit übersetzt.
Du bekommst den Code immer noch nur als Assemble per Reverse Enginieering zu gesicht.

himitsu 9. Okt 2009 08:59

Re: D2010 - RTTI- Komplettes Reverse Engineering möglich?
 
Ich würde aber zumindestens erwarten, daß wenn man mit diesen neuen Infos Reverse Engineering betreibt, daß dan zumindestens etwas noch brauchbarere Ergebnisse entstehen.

Klar, aktuell macht es ja ja probleme den Codeoptimierten Inhalt (Quellcodes) der Prozeduren aus dem ASM zu rekonstruieren,

Aber es gibt doch jetzt viel mehr Debuginformationen und auch auch der Aufbau von Typen/Klasen ist viel detailierter, daß sich zumindestens an einigen inzwischen wohl zumindestens genauer sagen läßt was ein welcher Stelle liegt.

mschaefer 9. Okt 2009 09:00

Re: D2010 - RTTI- Komplettes Reverse Engineering möglich?
 
Das ist auch gut so!

Der Investitionsschutz ist gerade das Argument für die Anschaffung und das Arbeiten mit Delphi.
Wenn Sie den Exe-Analysator gleich mitliefern, dann kaufe ich jedenfalls kein Delphi mehr . . .

Grüße in die Runde // Martin

mkinzler 9. Okt 2009 09:03

Re: D2010 - RTTI- Komplettes Reverse Engineering möglich?
 
Dann fallen aber alle Sparchen flasch, welche RTTI unterstützen ( .Net/Java dann sowieso)

Ralf Kaiser 9. Okt 2009 09:03

Re: D2010 - RTTI- Komplettes Reverse Engineering möglich?
 
Zitat:

Zitat von Bernhard Geyer
Es wäre mir neue wenn der D2010-Compiler in eine IL (Intermediate Language) Kompiliert und diese dan per JIT zu laufzeit übersetzt.

Darum hatte ich ja auch geschrieben, dass ich nicht glauben kann, dass man das selbe wie mit Reflector unter .NET bei Delphi erreichen kann... :wink:

Aber wäre es denn im Prinzip möglich aus einer fertigen Exe zumindest Klassennamen, Methodennamen oder Proertynamen (also nicht den Code) auszulesen? In einem solchen Fall sollte man seine Auswertung für Lizenzinformationen eventuell nicht unbedingt "DecodeRegistrationNumber()" nennen. :wink:

Bernhard Geyer 9. Okt 2009 09:03

Re: D2010 - RTTI- Komplettes Reverse Engineering möglich?
 
Zitat:

Zitat von mschaefer
Der Investitionsschutz ist gerade das Argument für die Anschaffung und das Arbeiten mit Delphi.
Wenn Sie den Exe-Analysator gleich mitliefern, dann kaufe ich jedenfalls kein Delphi mehr . . .

Falls noch mehr möglich ist wird ein Delphi.Win32 Obuscator nötig ...

Ralf Kaiser 9. Okt 2009 09:11

Re: D2010 - RTTI- Komplettes Reverse Engineering möglich?
 
Zitat:

Zitat von mkinzler
Dann fallen aber alle Sparchen flasch, welche RTTI unterstützen ( .Net/Java dann sowieso)

Bei .NET fand ich das schon ziemlich erschreckend (mit Java hab ich es nie ausprobiert). Da habe ich mal (nur als Test) aus den fertigen Assemblies unserer Webanwendung den Quelltext komplett wieder hergestellt. Mit Reflctor kann man dabei sogar die Programmiersprache wählen die als Ausgabe dienen soll.

Gut, bei einer Webanwendung hat man sowieso ein Sicherheitsproblem auf dem Server wenn jemand an die Assemblies drankommt, dann ist das dekodieren nur ein Folgeproblem. Aber bei Desktop-Apps... (dafür gibt es dann die Obfuskatoren)

Daniel 9. Okt 2009 09:13

Re: D2010 - RTTI- Komplettes Reverse Engineering möglich?
 
Für ein Release hat man auf jeden Fall die Möglichkeit, mittels der folgenden Direkive die Generierung der RTTI-Informationen abzuschalten:
Delphi-Quellcode:
{$RTTI EXPLICIT METHODS([]) PROPERTIES([]) FIELDS([])}
weitere Infos hierzu:
http://docwiki.embarcadero.com/RADSt...ctive_(Delphi)

himitsu 9. Okt 2009 09:35

Re: D2010 - RTTI- Komplettes Reverse Engineering möglich?
 
Zitat:

Zitat von Daniel
Für ein Release hat man auf jeden Fall die Möglichkeit, mittels der folgenden Direkive die Generierung der RTTI-Informationen abzuschalten:

Man kann auch die vcPublished abschalten.

Oder werden da doch nur die neuen Funktionen deaktivert und die "alten" Listen existieren noch?
Die ganze VCL baut doch darauf auf, daß man da einiges auslesen kann (für die Serialisierung/Speicherung unc Co.)

Ich hoffe es jetzt aber mal so verstanden zu haben, daß nur das Neue dann weg ist. :stupid:

Chris.R 9. Okt 2009 10:05

Re: D2010 - RTTI- Komplettes Reverse Engineering möglich?
 
Hallo,

@himitsu:
Ich denk schon, dass du das richtig verstanden hast. Bei Embarcadero steht:
Zitat:

The $RTTI directive is used to control the amount of extended RTTI
Also sollte es sich nur auf die Extended RTTI beziehen.

Ciao Chris

himitsu 9. Okt 2009 10:12

Re: D2010 - RTTI- Komplettes Reverse Engineering möglich?
 
Na da isses gut :angel:

Hat denn schonmal jemand diese Schalter ausprobiert?

Also was mich interessieren würde:
Arbeitet dieser {$RTTI ...}-Schalter global oder nur in der Unit, wo er deklariert ist?

mschaefer 9. Okt 2009 10:18

Re: D2010 - RTTI- Komplettes Reverse Engineering möglich?
 
Moin, moin,

Zitat:

Zitat von mkinzler
Dann fallen aber alle Sparchen flasch, welche RTTI unterstützen ( .Net/Java dann sowieso)

Jaein!
Für Programme im Eigenvertrieb ist das genau so! Bei Anwendungen in Kundenauftrag spielt das keine Rolle,
aber hier ist der Kunde der Lizenzpartner für die Entwicklungstools und ich eher der "Scharuber" der die
Software mitplant und nach Vorgaben entwickelt. Bei Inhouseanwendungen ist das meistens irrelevant.

Grüße // Martin

Zacherl 9. Okt 2009 11:31

Re: D2010 - RTTI- Komplettes Reverse Engineering möglich?
 
@himitsu: Soweit ich das gesehen habe, leider nur lokal. Das heißt, wenn du die extended RTTI komplett deaktivieren willst, musst du in alle RTL und VCL Units von Delphi diese Direktive inkludieren und dann alles neu builden.

himitsu 9. Okt 2009 12:14

Re: D2010 - RTTI- Komplettes Reverse Engineering möglich?
 
Das leider ist für mich jetzt erstmal gut X'D

so kann man dieses in seinen selbstprogrammierten Komponenten/Units gezielt abschalten, ohne gleich die ganze Application zu beeinflussen :angel:


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:17 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz