Seite 1 von 2

.exe Dateien in PB einbetten und ausführen

Verfasst: 17.07.2021 13:27
von northstarex
mal doof gefragt:

gibt es eine Möglichkeit Aufführbare Dateien (.exe) in eine PB Programm einzubetten und dann davon aus auszuführen, also ohne diese exe erst wieder auf die Platte zu kopieren?

Re: .exe Dateien in PB einbetten und ausführen

Verfasst: 17.07.2021 19:56
von Sicro
Ja, es ist (oder war) möglich und erfordert einige komplizierte WinAPI-Funktionsaufrufe, daher eher weniger was für Anfänger-Fragen. Neuere Windows-Versionen haben vermutlich etwas dagegen und erlauben so etwas aus Sicherheitsgründen nicht mehr. Zumindest kann ich mir gut vorstellen, dass die Virenscanner Alarm schlagen werden.

Was spricht dagegen, die EXE-Datei neben dem Hauptprogramm mitzuliefern?

Re: .exe Dateien in PB einbetten und ausführen

Verfasst: 17.07.2021 20:20
von northstarex
war nur so ein Gedankengang im Bezug zur Demo-Scene, die haben auch alles in einer Datei. Hätte die Sache vereinfacht. Bis jetzt ging es ja auch so. Alles wieder raus aus dem PRG und ab auf das Arbeitsverzeichnis und auf Verzeichnisebene alles abrufen.

Wie lauten die so komplizierten WinAPI-Funktionsaufrufe.... zeig doch mal :)

Re: .exe Dateien in PB einbetten und ausführen

Verfasst: 17.07.2021 20:31
von Mijikai
northstarex hat geschrieben: 17.07.2021 20:20 ...
Wie lauten die so komplizierten WinAPI-Funktionsaufrufe.... zeig doch mal :)
Die sind immer gleich ob PB, ASM, C oder C++ einfach mal "RunPE" (als Startpunkt) in die Suchmaschine eingeben da gibt es sehr viele Beispiele und Variationen.
Sowas kommt fast ausschließlich in Malware, Hacks oder fragwürdigen Sicherheitsprogrammen zum Einsatz.
Die Demoscene ist hier eher eine Ausnahme (Packer).
Viele werden einen Vorbehalt haben hier weiterzuhelfen.

Viel Glück

Re: .exe Dateien in PB einbetten und ausführen

Verfasst: 18.07.2021 08:41
von H.Brill
Es müßte was geben, wie damals das MemoryModule von TS-Soft.
Mit der konnte man DLLs, die in einem Speicherbereich vorlagen,
laden, ohne sie vorher auf Platte zu schreiben.

Wenn du hier im Forum nach MemoryModule suchst, findest du
auch etwas.

Re: .exe Dateien in PB einbetten und ausführen

Verfasst: 28.07.2021 23:42
von northstarex
aber PRGS in den PB Code einbetten und dann zum starten auf die Platte kopieren geht aber noch, oder?

Re: .exe Dateien in PB einbetten und ausführen

Verfasst: 29.07.2021 08:14
von jacdelad
Natürlich. Du kannst z.B. jede beliebige Art von Datei in die DataSection (oder auch anders) einbinden und durch das Programm auf die Platte schreiben. Anschließend kannst du es ganz normal mit RunProgram starten...wo die Datei herkommt ist dem Befehl wurscht.

Re: .exe Dateien in PB einbetten und ausführen

Verfasst: 31.07.2021 13:29
von Axolotl
und so ähnlich könnte das dann aussehen...

Code: Alles auswählen

;' example program as suggestion 
;' not compiled or tested 

#EmbbedExecutable$ = "EmbeddedExecutable.exe"    ;' this line is to be adapted to your needs 


Procedure StartEmbeddedExecutable()
  Protected FID, file$, params$ 
 
  file$   = GetTemporaryDirectory() + #EmbbedExecutable$  ;' this line is to be adapted to your needs 
  params$ = ""                                            ;' this line is to be adapted to your needs 

  FID = CreateFile(#PB_Any, file$)  
  If FID 
    WriteData(FID, ?EmbbedExecStart, ?EmbbedExecEnd - ?EmbbedExecStart)
    CloseFile(FID) 

    RunProgram(file$, params$, GetPathPart(ProgramFilename()))
  EndIf
EndProcedure 


DataSection
  EmbbedExecStart: 
    IncludeBinary #EmbbedExecutable$ ;' "EmbeddedExecutable.exe"    ;' this line is to be adapted to your needs 
  EmbbedExecEnd:
EndDataSection

Re: .exe Dateien in PB einbetten und ausführen

Verfasst: 31.07.2021 18:37
von GPI
Muss man halt bedenken, das man hier halt Speicher verschwendet. Zudem kann ich mir vorstellen, das ein paar Virenscanner so ein verhalten nicht lustig finden.
Ich seh auch nicht so einen großen Vorteil, außer das man unbedingt eine einzige Datei haben will.

Re: .exe Dateien in PB einbetten und ausführen

Verfasst: 02.08.2021 10:24
von juergenkulow
Ist die DataSection PAGE_EXECUTE_READWRITE ?