Seite 2 von 2
Re: .exe Dateien in PB einbetten und ausführen
Verfasst: 02.08.2021 14:52
von Axolotl
@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.
Re: .exe Dateien in PB einbetten und ausführen
Verfasst: 04.08.2021 20:32
von Mijikai
juergenkulow hat geschrieben: 02.08.2021 10:24
Ist die DataSection PAGE_EXECUTE_READWRITE ?
Nein - Lösung: Inline ASM
Re: .exe Dateien in PB einbetten und ausführen
Verfasst: 06.08.2021 05:34
von juergenkulow
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
Re: .exe Dateien in PB einbetten und ausführen
Verfasst: 06.08.2021 12:11
von Mijikai
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 einer EXE (PE) geht das so nicht!
Mit PIC ist das hingegen kein Problem.
Re: .exe Dateien in PB einbetten und ausführen
Verfasst: 10.08.2021 10:39
von juergenkulow