AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

x64 main-thread hook mittels dll

Ein Thema von Clowdy · begonnen am 1. Mai 2016 · letzter Beitrag vom 13. Mai 2016
Antwort Antwort
Clowdy

Registriert seit: 1. Mai 2016
4 Beiträge
 
#1

AW: x64 main-thread hook mittels dll

  Alt 13. Mai 2016, 15:34
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;

Geändert von Clowdy (13. Mai 2016 um 15:45 Uhr) Grund: Delphi Code Tags
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#2

AW: x64 main-thread hook mittels dll

  Alt 13. Mai 2016, 16:43
Der Vollsrändigkeit halber solltest du aber auf jeden Fall noch den State der XMM Register XMM0-XMM15 sichern. YMM, ZMM und die AVX512 Erweiterung mit X/Y/ZMM16-31 kann man denke ich außer Acht lassen, aber einige XMM Register werden für die Standard 64-Bit CallingConvention verwendet. Die würde ich deshalb auf jeden Fall noch sichern.
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat
Clowdy

Registriert seit: 1. Mai 2016
4 Beiträge
 
#3

AW: x64 main-thread hook mittels dll

  Alt 13. Mai 2016, 17:38
Da muss ich mich tatsächlich selber noch einmal schlau machen, pushen geht ja nicht einfach so.
Ist bisher auch in keines der Beispiele die ich gefunden habe behandelt worden, allgemein unterscheiden sich die Lösungsansätze hier und da.

Ist aber ein guter Einwand.

Meinen aktuellen Lösungseinsatz habe ich übrigens von hier: http://shellblade.net/code-cave-windows.html
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#4

AW: x64 main-thread hook mittels dll

  Alt 13. Mai 2016, 18:10
Die AVX Register kannst du so pushen:
http://stackoverflow.com/a/10162065

Um ganz generisch zu sein, könntest du auch noch den FPU State sichern.
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:29 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz