Hallo nochmal,
da durchaus der ein oder andere durch Google auf den Beitrag hier stoßen dürfte und die Resultate zu Thread Hijacking unter x64 ziemlich dürftig sind, möchte ich hier noch einmal den korrigierten Code posten. Ich habe den Code jetzt seit einer Woche ohne Probleme bei mir im Einsatz, möglich das er noch immer Fehler enthält, dafür übernehme ich keine Gewähr. :p
Hinzu kamen einige Probleme bei den Parametern einiger Funktionen bei der Anwendung für die ich meine
DLL nutze, aber das dürfte eher uninteressant sein.
edit: Mit QueueUserAPC habe ich mich ebenfalls intensiv beschäftigt, scheidet hier aber leider aus da der Thread sich in einer Schleife befindet und nie in einem alertable state ist, das wäre also nur eine Lösung gewesen wenn ich direkt beim Start der Anwendung injiziere.
Delphi-Quellcode:
procedure AsmLoader;
assembler;
asm
push [_rip]
pushfq
push RAX
push RBX
push RCX
push RDX
push RDI
push RSI
push RSP
push RBP
push R8
push R9
push R10
push R11
push R12
push R13
push R14
push R15
call _Load
pop R15
pop R14
pop R13
pop R12
pop R11
pop R10
pop R9
pop R8
pop RBP
pop RSP
pop RSI
pop RDI
pop RDX
pop RCX
pop RBX
pop RAX
popfq
end;