@GPI: ja, das würde ich auch so sehen. D.h.: Wenn es dann eine Datei sein soll, würde ich eine ZIP od. ähnlich favorisieren. Dann weiß der Anwender was er hat und auspacken kann man auch mit 'weniger' Rechten. Virus-Scanner mögen das sicherlich genau so wenig wie sich ändernde Executables. Ich habe da jedenfalls keine positiven Erfahrungen gemacht.
@juergenkulow ich weiß es nicht. Glaube aber, dass das schon mal an anderer Stelle thematisiert wurde.
.exe Dateien in PB einbetten und ausführen
Re: .exe Dateien in PB einbetten und ausführen
Mostly running PureBasic <latest stable version and current alpha/beta> (x64) on Windows 11 Home
Re: .exe Dateien in PB einbetten und ausführen
Nein - Lösung: Inline ASM
- juergenkulow
- Beiträge: 188
- Registriert: 22.12.2016 12:49
- Wohnort: :D_üsseldorf-Wersten
Re: .exe Dateien in PB einbetten und ausführen
Code: Alles auswählen
; Beispiel für eine EXE in der DataSection und VirtualAlloc_ getestet mit Windows 64 bit
#EmbbedExecutable$ = "F:\rdtsc.exe" ; Beispielprogramm: ! nop ! rdtsc ! shl rdx,32 ! or rax,rdx ! ret
pagesize=((?EmbbedExecEnd - ?EmbbedExecStart)/4096+1)*4096 ; Berechne den Speicherbedarf auf 4k aufgerundet.
pageadr=VirtualAlloc_(0,pagesize,#MEM_COMMIT,#PAGE_EXECUTE_READWRITE) ; Besorge ausführbaren Speicher vom Betriebssystem.
CopyMemory(?EmbbedExecStart,pageadr,?EmbbedExecEnd - ?EmbbedExecStart) ; Kopiere die Datasection in den ausführbaren Speicher.
*f=pageadr+$445 ; Berechne die Aufrufadresse. Der Offset $445 wurde x64dbg gefunden und ist selten der Gleiche.
MessageRequester("rdtsc:",Str(CallFunctionFast(*f))) ; Rufe das Unterprogramm mit Adresse *f auf und gebe die akutelle CPU-TaktZeit aus.
DataSection
EmbbedExecStart:
IncludeBinary #EmbbedExecutable$
EmbbedExecEnd:
EndDataSection
; Eine sehr gute Begründung ist für die praktische Nutzung dieser Konstruktion notwendig!
CompilerIf #PB_Compiler_OS<>#PB_OS_Windows Or #PB_Compiler_Processor<>#PB_Processor_x64
CompilerError "Nur Windows 64 bit "
CompilerEndIf
Bitte stelle Deine Fragen, denn den Erkenntnisapparat einschalten entscheidet über das einzig bekannte Leben im Universum.
Jürgen Kulow Wersten :D_üsseldorf NRW D Europa Erde Sonnensystem Lokale_Flocke Lokale_Blase Orion-Arm
Milchstraße Lokale_Gruppe Virgo-Superhaufen Laniakea Sichtbares_Universum
Jürgen Kulow Wersten :D_üsseldorf NRW D Europa Erde Sonnensystem Lokale_Flocke Lokale_Blase Orion-Arm
Milchstraße Lokale_Gruppe Virgo-Superhaufen Laniakea Sichtbares_Universum
Re: .exe Dateien in PB einbetten und ausführen
Mit einer EXE (PE) geht das so nicht!juergenkulow hat geschrieben: ↑06.08.2021 05:34 ......Code: Alles auswählen
; Beispiel für eine EXE in der DataSection und VirtualAlloc_ getestet mit Windows 64 bit #EmbbedExecutable$ = "F:\rdtsc.exe" ; Beispielprogramm: ! nop ! rdtsc ! shl rdx,32 ! or rax,rdx ! ret
Mit PIC ist das hingegen kein Problem.
- juergenkulow
- Beiträge: 188
- Registriert: 22.12.2016 12:49
- Wohnort: :D_üsseldorf-Wersten