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
Bild
Wiki eng PE-Format
Microsoft PE-Format
Mijikai, Du hast ja recht.