![]() |
Wer führt denn deien Exe aus? Windows oder Delphi?
Zitat:
|
Zitat:
siehe z.B. RT_RCDATA Application-defined resource (raw data) womit die von mir postulierte Resource, die Windows nicht kennt identifiziert wäre, hätte mich auch sehr gewundert, wenn ich eine binäre Resource nur dann in die exe packen könnte, wenn Windows wüßte wie man die "Abspielt". Beispiel ich definiere resourcestring myResource = 'Abladabladuballa' Wie sollte Windows denn jetzt 'Abladabladuballa' ausführen? Aber if myResource = 'Abladabladuballa' then mylabel:= tlabel.create, else if myResource = 'humptadumpta' then myEdit :=TEdit.create etcc Windows weiß weder wie es 'Abladabladuballa' noch wie es 'humptadumpta' ausführen soll, das weiß nur meine Anwendung, also z.B. meine delphiexe. Windows übergibt die dfm Resource an die Delphi exe, und ohne Delphi-Exe könnte Windows mit der dfm Resource gar nichts anfangen, oder? Packe ich die dfm Resource in eine visual c++ exe, würde wohl auch keine Form erzeugt, Windows könnte damit nichts anfangen, woher sollte Windows denn wissen, was es mit TWokiEasterInspiration tun soll, und das steht auch nicht in der dfm-resource, sondern im ausführbaren Code meiner Delphi-exe. Also langer Rede kurzer Sinn, das Aussehen der Resourcen in der exe entspricht der binären Form der DFM-Datei und ist recht einfach lesbar, es ist vielleicht sogar naheliegend, das das so ist, ist aber nicht technisch zwingend, wenn ich das wollte könnte ich sicher eine dfm-datei als resource in eine exe speichern, und als Reaktion auf den Text TForm die Nachrichten der letzten Woche abspielen statt eine Form zu erzeugen, und stattdessen bei 'x1&%45ajfsdlö' eine Windowsform zum Leben erwecken. Also nochmal, allgemein gilt, Resourcen sind kein ausführbarer Code, was damit zu welchem Zeitpunkt passiert, entscheidet die Anwendung, auf keinen Fall Windows, es gibt allerdings von Windows vorgefertigte Resourcentypen, die den "Erklärungsaufwand" für die Anwendung minimieren. |
Habe ich ausfüheren gesagt? lesen muß es Windows können, zu mindest die standard ressourcen, wie Fenster, Kontrolls, etc, sonst wird dir Windows auch kein Fenster anzeigen können. Dass es anwendungsspezifische Ressourcen gibt mit denen Windows nichts anfangen kann ist klar.
|
Zitat:
Zitat:
Man kann Common Controls in Standardresourcen verpacken, aber ich behaupte, ich kann die VCLControls im Code auch erzeugen, ohne daß sie in den Resourcen erwähnt werden, inclusive den Forms, weiterhin gehören die aus den dfm-Dateien erzeugten Resourcen zu denen, mit denen Windows erstmal nichts anfangen kann, denn woher sollte Windows wissen was "TfrmTestResource" ist, vielmehr werden diese resourcen auf Anfrage der Ese brav an die Delphiexe übergeben, und von dort aus passsiert dann alles weitere inclusive aufrufe der WinApi zur Darstellung von Forms und Controls. |
Eben und der Kompiler macht dann was für Windows lesbares raus, meine ich.
|
Um noch mal zum Upx zurückzukommen, ich hatte in einem Programm einen TWebBrowser zum anzeigen von Informationen verwendet, die dazugehörigen html-Dateien als Resource in die Exe-Datei eingebunden, mit Upx komprimiert (warum auch immer) und auf eine CD gebrannt.
Jetzt bekomme ich heut' einen Anruf, das unter Windows 95 und 2000 alles bestens löppt unter Windows 98 aber keine htm-Resourcen gefunden wurden. Könnte es jetzt sein das der IE 4.0 von 98 nicht mit den komprimierten Resourcen klar kommt, der IE 5.5 der auf dem Win 95-Rechner installiert ist aber sehr wohl? Ich würde einfach mal JA sagen, die exe auspacken, neu auf CD brennen und die CD wieder abgeben. |
Zurück zum Thema "Schutz vor ResHack": Gibt es denn halbwegs sichere Exe-Schützer? Ich kann es mir ja kaum vorstellen, weil ein solches Programm ja das für die Entschlüsselung benutzte Passwort wieder speichern muss, das wäre ja nicht schwer auszulesen.
|
Ich nutze selbst manchmal den UPX-Packer aus folgenden Günden:
Wenn das Prog im Intenet liegt, um es bei bedarf schnell herunterzuladen, und auf einem Rechner zu verwenden, ist schön klein und ich brauche beim Kunden kein Packer. Wenn ich mal ein Prog auf Diskette weitergeben muß passt es dann meistens auf eine Disk. Ich habe viele kleine Tools auf meinem USB-Stick. Mit UPX nehmen die dann so wenig Platz ein, wie möglich, und ein manuelles entpacken ist dann nicht notwendig. Für die eigenen klienen Tools halte ich das für sehr sinnvoll. PS: Wieviele Anwender gehen den mit dem Reshack an ein Programm ?? Und die anderen schaffens sowieso :coder: |
Ich brauche UPX auch oft weil ich halt Spiele progge, in denen Daten sind, die niemand wissen darf da er sonst die Auszahlung (ist ein "Klamm.de"-Spiel wo man gegen die dort vorhandene Währung spielen kann) selbst vornehmen könnte...
Klappt bisher auch ganz gut, hatte da noch keine Probs |
Zitat:
Das packen mit UPX sollte man aber nicht zur Gewohnheit werden lassen, da man damit das Windows-Speicher-Managment aushebelt. Beim jedem Start des Programms muß Windows das gesamte Image in den Speicher laden. Ist die Exe ungepackt braucht sie von Windows nur einmal in den Speicher geladen zu werdem. Besonders kritisch wird es bei DLL's, die ein paar mal von unterschiedlichen Programmen geladen werden. Näheres dazu hier: ![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:03 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