Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi EXE in RES aus dem Speicher aufrufen (https://www.delphipraxis.net/28357-exe-res-aus-dem-speicher-aufrufen.html)

Whistler 23. Aug 2004 17:28


EXE in RES aus dem Speicher aufrufen
 
Hallo,

ich habe eine EXE-Datei in ein RES-File gepackt und kompiliert.
Das Produkt habe ich in mein Projekt integriert.

Das Programm, welches in dem RES File ist, setzt Attribute.
Im Hauptprogramm wählt der User also ein Verzeichnis und drück auf "Ausführen". Nun sollte diese integrierte EXE per ShellExecute (oder anders?!) ausgeführt werden, mit den Parametern die ich übergebe.

Soweit auch kein Problem. Nur muss ich bis dato die integrierte EXE vorher extrahieren (irgendwo uf der HDD speichern) und kann erst dann auf sie zugreifen. Das will ich aber nicht. Die integrierte EXE muss quasi nur für das Programm (im Speicher?) verfügbar sein...

Blutiger Anfänger 23. Aug 2004 17:29

Re: EXE in RES aus dem Speicher aufrufen
 
Inwieweit bist du mit den Begriffen PE, Relocations, IAT-Patching vertraut?

Whistler 23. Aug 2004 17:36

Re: EXE in RES aus dem Speicher aufrufen
 
Die Begriffe gehört habe ich, mehr auch nicht.

Blutiger Anfänger 23. Aug 2004 17:56

Re: EXE in RES aus dem Speicher aufrufen
 
Dann hol dir doch bitte mal zu diesen Themen zuerst Infos ein. Die Antwort ergibt sich dann fast wie von selbst. Ob es natürlich notwendig ist solche Verrenkungen zu machen, nur weil du mal eben Attribute (von Dateien?) ändern willst ist sicher Overkill.

Grob beschrieben mußt du folgendes tun:

1. Die Ressource in der richtigen Granularität an einen anderen Platz im Speicher packen.
...
und dann CreateProcess komplett selber nachempfinden (inkl Parameterübergabe).

Mit DLLs ist das noch relativ einfach - mit EXEs _war_ es unter DOS möglich, bezweifele dies aber für Windows (mindestens die NT-Reihe).

Whistler 23. Aug 2004 18:02

Re: EXE in RES aus dem Speicher aufrufen
 
Die EXE macht etwas mehr :)
Es geht sich allgemein darum, dass niemand hingehen kann und während der Ausführung meines Programms diese EXE "klauen" kann und selbst verwendet.

Blutiger Anfänger 23. Aug 2004 18:05

Re: EXE in RES aus dem Speicher aufrufen
 
Kann ich doch auch so mit einem Resource-Editor.

Whistler 23. Aug 2004 18:37

Re: EXE in RES aus dem Speicher aufrufen
 
...daran habe ich natürlich nicht gedacht :)
Entsprechend ist der Schutz auch überflüssig... *grml*

Oder kennst du bzw. jemand anderes 'ne Möglichkeit das RES-File zu schützen - aber imho wohl nicht möglich... :(

Blutiger Anfänger 23. Aug 2004 18:56

Re: EXE in RES aus dem Speicher aufrufen
 
Klar, kannst die Binärdatei vorher verschlüsseln - das Endproblem bleibt aber (entpacken oder nicht der EXE nach Entschlüsseln).

toms 23. Aug 2004 18:58

Re: EXE in RES aus dem Speicher aufrufen
 
Du könntest auch machen, dass man die Exe nur mit einem bestimmten Parameter starten kann.

Blutiger Anfänger 23. Aug 2004 19:02

Re: EXE in RES aus dem Speicher aufrufen
 
Braucht er ja den Source der EXE, oder? Hätte er den, würde er sie doch hoffentlich nicht als Ressource einbetten, oder?

Whistler 23. Aug 2004 19:22

Re: EXE in RES aus dem Speicher aufrufen
 
Jo - das wäre sonst klug :)
Außerdem könnte man den Parameter ja aus dem Delphi-Programm auslesen, wäre also auch nicht das Problem für den "Dieb".

Wie würdest du denn die Ressourcen verschlüsseln? Ich kann natürlich hingehen und die Dateien verschlüsseln und als RC File kompilieren. Das Hauptprogramm speichert den Stream dann auf der Festplatte und entschlüsselt das ganze dann - nur hier kann ich ja wieder angegriffen werden: Wenn's entschlüsselt ist, kopiere ich's aus dem Temp-Ordner oder wo es liegt und hab's.

Blutiger Anfänger 23. Aug 2004 19:27

Re: EXE in RES aus dem Speicher aufrufen
 
Anders wird es kaum gehen ...

Whistler 23. Aug 2004 21:11

Re: EXE in RES aus dem Speicher aufrufen
 
Dann hat sich das ganze erledigt :/

Shaman 23. Aug 2004 22:51

Re: EXE in RES aus dem Speicher aufrufen
 
Hallo

Könnte man das Kopieren nicht irgendwie so verhindern?
Delphi-Quellcode:
hLockedFile:= FileOpen(FileName, fmShareExclusive);
Gruss
Shaman

dizzy 23. Aug 2004 23:00

Re: EXE in RES aus dem Speicher aufrufen
 
Und damit doch auch gleich das Ausführen, oder irre ich?
(Ich hoffe ich vertu mich net...)

Dann würde die ganze EXE nix mehr bringen ;)

Blutiger Anfänger 23. Aug 2004 23:44

Re: EXE in RES aus dem Speicher aufrufen
 
Zitat:

Zitat von dizzy
Und damit doch auch gleich das Ausführen, oder irre ich?
(Ich hoffe ich vertu mich net...)

Dann würde die ganze EXE nix mehr bringen ;)

Sehe ich genauso. Zum Ausführen muß mindestens Lesen erlaubt werden womit Kopieren möglich wäre.

Whistler 24. Aug 2004 00:03

Re: EXE in RES aus dem Speicher aufrufen
 
Guten Morgen :)

dem schließe ich mich leider an.

Ginge es denn, der Datei zu sagen, dass nur das Programm von mir auf sie zugreifen darf (vgl. mit "Datei exklusiv öffnen")? Dann könnte ich sie "dumpen", direkt schützen, nutzen wann ich sie will und bei Programm-Ende löschen...!

Blutiger Anfänger 24. Aug 2004 00:28

Re: EXE in RES aus dem Speicher aufrufen
 
Leider nein ... ich hätte nur eine Idee wenn du den Source der anderen EXE hättest, dann wäre aber das Thema so oder so hinfällig. Und ob meine Idee mit SP2 lauffähig wäre ist nocht die zweite Frage.

Vjay 24. Aug 2004 09:28

Re: EXE in RES aus dem Speicher aufrufen
 
Zitat:

Zitat von Whissi
Guten Morgen :)

dem schließe ich mich leider an.

Ginge es denn, der Datei zu sagen, dass nur das Programm von mir auf sie zugreifen darf (vgl. mit "Datei exklusiv öffnen")? Dann könnte ich sie "dumpen", direkt schützen, nutzen wann ich sie will und bei Programm-Ende löschen...!

Naund, dann kill ich dein Programm bevor es beendet, fertig ;)

Blutiger Anfänger 24. Aug 2004 10:18

Re: EXE in RES aus dem Speicher aufrufen
 
Zitat:

Zitat von Vjay
Naund, dann kill ich dein Programm bevor es beendet, fertig ;)

Eben. Bei meiner Methode wären wichtige Codeteile in der Host-EXE untergebracht. Damit wäre eine Guest-EXE ohne laufende Host-EXE unbrauchbar. Der "Gegner" kann also gern kopieren ;)

Whistler 24. Aug 2004 10:44

Re: EXE in RES aus dem Speicher aufrufen
 
Ja... nur wenn ich einen Teil der Gast-EXE hätte, hätte ich ihn auch komplett und könnte sie in der Haupt-EXE integrieren :)


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:48 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