Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

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

AW: DFM-Dateien verschlüsseln?

  Alt 1. Mai 2017, 05: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.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

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