Klassennamen in EXE ersichtlich



  • Hallo,

    Ich implementiere einen Dongle Schutz für eine Software. Ich habe ein Release der Software erstellt und dann in eiem HEX-Editor geöffnet und gesehen, dass die Klassennamen der Dongle-Klassen ersichtlich sind. Dies ist natürlich unerwünscht, da so (vielleicht?) auch der dazugehörende Code gefunden und manipuliert werden kann. (Alternative wäre natürlich, alle Namen im Code selber unkenntlich zu machen)

    Ich habe in den Compilereinstellunen alle Debug-Information entfernt, trotzdem sind die Namen in der EXE, hat jemand eine Ahnung woran das liegen könnte?

    Vielen Dank und Gruss!



  • Hi,

    liegt vermutlich an den Runtime-Tsypeinfos von C++.
    Z.B. woher soll eine Klasse wissen, daß sie TEdit heißt wenns nicht drin steht...

    Gruß Mümmel



  • Der Compiler generiert zunächst für alle Klassen RTTI; für gewöhnliche C++-Klassen sind sie eher rudimentär (hauptsächlich den Namen für typeid und bei polymorphen Klassen ein paar Informationen über die Basisklassen für die Unterstützung von dynamic_cast), für VCL-Klassen aber recht umfangreich (mehr Informationen dazu findest du z.B. in TypInfo.pas).

    Im Code nicht referenzierte Typinformationen werden vom Linker gewöhnlich wegoptimiert. Für gewöhnliche Klassen, auf die niemals typeid angewandt wird, dürftest du daher keine RTTI in der Executable mehr finden. Sobald ein Typ aber polymorph ist und eine VTable besitzt, wird dort ein Verweis auf die Typinformation eingetragen, weshalb sie auch vorhanden sein muß.


Anmelden zum Antworten