Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi api kopieren? (https://www.delphipraxis.net/70680-api-kopieren.html)

Olli 8. Jun 2006 00:34

Re: api kopieren?
 
Also warum jemand ReadProcessMemory hooken würde ist mir irgendwie ein Rätsel, wenn ich es schon über einen Treiber mache, kann ich doch genausogut auch NtReadVirtualMemory nehmen?! :gruebel:

Zitat:

Zitat von brechi
ansonsten überschreibe den jmp mit den Original Bytes (VirtualProtect + CopyMemory)

Ist das thread-safe? :P :lol: :mrgreen: :zwinker:

brechi 8. Jun 2006 16:48

Re: api kopieren?
 
@Olli: Genau meine Ansicht! Kannst dir ja mal die Krio Firewall anschauen. Die macht einen SSDT hook auf ettliche Funktionen (NtWriteProcessMemory usw) und dann noch mal einen hook auf Userebene (mit Relativem Offset [0xE9] und dann wahrscheinlich noch ohne auf die HotPatches zu achten. Obwohl der Usermode Hook rein gar nichts bringt und der kernel Hook ausreichen würde.

Sie springen dann zu ihrem Speicher, wo sie ein NtLoadDriver aufrufen (nachgebautes) und anstatt dem PChar ein signed Byte (< 0) übergeben. Dadurch kann der SSDT hook auf NtLoadDriver erkennen um welch usermode API es sich handelt.

Netterweise kann ich aber durch einen Aufruf von CreateRemoteThread (welche unter 2k irgendwie falsch gehandled wird) die Firewall crashen und somit wider normal Pakete ins Inet schicken. Sehr sehr schön oO.

Naja war jetzt bisl Offtopic, aber ein Ring0 hook reicht aus und sollte der bei deinem Tool ebenfalls vorhanden sein dann brauchste die Api auch auf User ebene nicht nachbauen.

smc 26. Jul 2006 15:57

Re: api kopieren?
 
kannst mir das mit dem ring0 hook näher erklären?

Ich gehe also mit meinem programm in ring0, was dann?

Wenn ich das spiel starte haut es trotzdem readprocessmemory kaputt :/

Olli 26. Jul 2006 17:18

Re: api kopieren?
 
Zitat:

Zitat von smc
kannst mir das mit dem ring0 hook näher erklären?

Ich gehe also mit meinem programm in ring0, was dann?

Also erstmal sollte man mit "einem Programm" schonmal garnicht im Kernelmode (oder Ring 0) rumfummeln, weil sich das nicht gehört. Daß es geht, haben wir schon demonstriert bekommen, muß also nicht mehr bewiesen werden. Wenn, dann nähme man einen Treiber.

Zitat:

Zitat von smc
Wenn ich das spiel starte haut es trotzdem readprocessmemory kaputt :/

Tja, es gibt ja auch andere Methoden als ReadProcessMemory(), gerade wenn man sowieso einen Treiber einsetzt.

Allerdings zeigt die Form der Fragestellung deutlich, daß du noch keinen Treiber schreiben solltest, sondern ruhig lieber noch 2-3 Jahre trainieren solltest, bevor du sowas dann möglicherweise auf Fremdrechner losläßt ;)

Ach ja, ist zwar schon ein Jahr alt und sollte inzwischen mit aktuelleren Erkenntnissen verbessert werden, aber damit warte ich noch mindestens bis September: http://assarbad.info/stuff/temp/hookhlp.rar


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:40 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz