Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#25

AW: DFM-Dateien verschlüsseln?

  Alt 1. Mai 2017, 06:40
ein kleiner Test lädt zwar meine DFM-Resource aber ich bekomme nur 2 Zeilen ausgegeben und die noch mit falschen Zeichen:
Warum hatte ich vorher schon geschrieben dass die DFM-Ressourcen in der EXE binär sind?
Delphi-Referenz durchsuchenTestStreamFormat
ObjectTextToResource
Delphi-Referenz durchsuchenObjectResourceToText
ObjectBinaryToText
ObjectTextToBinary

Delphi-Quellcode:
Stream := TResourceStream.Create(...);
Form := TXyzForm.Create;
Form.ReadComponent(Stream);
Vorher aber natürlich das Laden der DFM unterbinden, siehe TCustomForm.Create .
Bzw. durch eine leere Dummy-Ressource ersetzen, dann darf aber nichts in OnCreate auf die Form zugeifen.
Oder beim Create der TForm vorgaukeln es wäre im FormDesigner.
Delphi-Quellcode:
Form := TXyzForm(TXyzForm.NewInstance);
// csDesigned in Form setzen
Form.Create(Self);
// csDesigned in Form entfernen
Form.ReadComponent(Stream);
Form.OnCreate(Form); // OnCreate wurde vorher aber auch schon einmal im Create aufgerufen
Ich weiß, Instance.Create ist eigentlich "falsch" und es müsste Class.Create heißen, aaaaaaaaaber ... siehe NewInstance

Und das Verschlüssen dann natürlich von außen. (eine zweite EXE im AfterBuild aufrufen, die das macht)
MSDN-Library durchsuchenUpdateResource usw.
Statt die Form selber zu laden/entschlüsseln, könnte man auch die Resource-APIs hooken, dort entschlüsseln und das Laden der DFM weiterhin ganz normal TForm erledigen lassen welches dabei die entschlüsselte Ressource bekommt.


Weniger Aufwändiger ist nur das Hashen, statt dem Verschlüsseln.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu ( 1. Mai 2017 um 06:49 Uhr)
  Mit Zitat antworten Zitat