Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Programm im RAM ausführen (https://www.delphipraxis.net/59810-programm-im-ram-ausfuehren.html)

3_of_8 29. Dez 2005 01:04

Re: Programm im RAM ausführen
 
Wenn du willst, dass der Code in nem Button Click ausgeführt wird, musst du den Code in die Ereignisbehandlunsroutine zu Button.OnClick schreiben.

skunker 29. Dez 2005 01:07

Re: Programm im RAM ausführen
 
ahh ok habs.

thx :)

bei müdigkeit coden lol ich glaub dat bringt nix.

Luckie 29. Dez 2005 01:18

Re: Programm im RAM ausführen
 
Zitat:

Zitat von skunker
jedoch sagt er mir beim compilieren:

[Fehler] Unit1.pas(117): Anweisung erwartet, aber 'PROCEDURE' gefunden

wo liegt der Fehler ?

Wenn es an den Delphi Grundlagen schon scheitert, dann würde ich mir überlegen, ob du mit dem richtigen anfängst programmieren zu lernen.

MCQ 16. Jan 2006 14:36

Re: Programm im RAM ausführen
 
Eigendlich ist die Lösung des Problems recht einfach.

1. Programm mit CREATE_SUSPENDED-Flag starten
2. Speicher per ReadProcessMemory und WriteProcessMemory decodieren
3. per ResumeThread das programm laufen lassen

Das sezt natürlich voraus das du den EXE-Header (inkl. PE-Header) nicht mitverschlüsselst und du dich vorher ein bisschen mit dem aufbau des PE-Headers beschäftigt hast.


Gruß MCQ

Zacherl 31. Okt 2007 16:47

Re: Programm im RAM ausführen
 
Alter Thread, aber neues Problem :D Es geht um folgendes. Der Sinn sei jetzt bitte mal dahingestellt ..

Ich starte eine als Resource eingebundene EXE über die oben gepostete Funktion. Das funktioniert solange gut, wie beide EXEn die gleiche ImageBase haben. Nun hat meine eigene EXE aber die ImageBase $13140000 und die eingebundene EXE die ImageBase $00400000. Das Starten und Ausführen der eingebundenen EXE klappt trotzdem wunderbar - - - bis zu der Stelle wo ich in dieser versuche mittels CreateThread einen Thread zu erzeugen.

Folgender Aufruf:
Delphi-Quellcode:
CreateThread(nil, 0, @ThreadFunc, nil, 0, TID);
Ich vermute mal, dass die Adressenermittlung mittels @ fehlschlägt. Hat jemand eine Idee wie ich das umgehen kann?
Gruß

OldGrumpy 14. Dez 2007 22:24

Re: Programm im RAM ausführen
 
lass Dir doch einfach mal den Wert anzeigen, den @ThreadProc liefert. Sollte der *immer* relativ zu $00400000 sein, musst Du einfach noch was dazu addieren, ich bezweifle allerdings, dass das so funktioniert.

static_cast 15. Dez 2007 09:20

Re: Programm im RAM ausführen
 
Was mir das gerade durch den Kopf geht wo ich diesen Thread lese, geht das auch mit einer Dll, diese aus dem Speicher zu laden? Vorzugsweise aus einem TMemoryStream. Hat da jemand eine Quelle zu ob und wie?


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:22 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz