![]() |
CreateToolHelp32SnapShot hooks umgehen
Hallo
Ich hab schon wieder verrückte ideen :). Da ich inzwischen dank dieses forums viel über Pe header und prozesse gelernt hab, hab ich mir gedacht ich könnte doch versuchen von einem prozess die importtierten module aus der import table auslesen. Jetzt brauch ich ja nur den header der .exe und deshalb dachte ich es reicht die ersten 1000 bytes einzulesen und mir dann die module auflisten lassen.
Delphi-Quellcode:
Natürlich gehts so nicht :) - falsch ist sicherlich schon mal
buffer := VirtualAlloc(nil,$1000,MEM_COMMIT,PAGE_EXECUTE_READWRITE);
Read := OpenProcess(PROCESS_ALL_ACCESS,false,Pid); ReadProcessMemory(Read,pointer(0),buffer,$1000,read); CheckImports(buffer);
Delphi-Quellcode:
allerdings weiß ich auch nicht wo im prozess ich anfangen soll zu lesen - wo beginnt der eigentlich?
pointer(0)
Arnulf |
Re: CreateToolHelp32SnapShot hooks umgehen
Zitat:
ps: Was hat das Thema mit der Frage zu tun? pps: das Modul-Handle (= Basisadresse) des "Images mit dem der Prozess erzeugt wurde" ist immer das erste (CreateToolHelpSnapshot) |
Re: CreateToolHelp32SnapShot hooks umgehen
Zitat:
also erste den dosheader ---> read process am offset und dann ntheader einlesen?
Delphi-Quellcode:
Naja - wenn die apis gehookt werden um prozesse zu verstecken, dachte ich mir einfach ich les den prozess ein und schau auf die import tabelle des prozesses, um ohne der api funktionen die module auszulesen die der prozess verwendet.
Was hat das Thema mit der Frage zu tun?
Das war ja nur eine idee wie man eben diese hooks umgehen kann (Module32First/module32next).
Delphi-Quellcode:
naja dann komm ich aber um die apis nicht herum.
ist immer das erste (CreateToolHelpSnapshot)
Und genau darum geht es ja eigentlicht. Edit: ich glaub die funktion heißt eigentlich NtQuerySystemInformation - die gehookt wird - vielleicht sollte ich den titel des threads ändern - bin mir aber nicht sicher. Arnulf |
Re: CreateToolHelp32SnapShot hooks umgehen
Zitat:
Zitat:
Zitat:
|
Re: CreateToolHelp32SnapShot hooks umgehen
Nagut wieder eine auf die Nase bekommen :)
Ich dachte echt es gäbe eine Möglichkeit, process hider die auf api hooks basieren zu umgehen. Damit bleibt mir wieder nichts anderes als mich damit zu beschäftigen hooks zu entdecken. Danke jedenfalls Arnulf |
Re: CreateToolHelp32SnapShot hooks umgehen
Zitat:
|
Re: CreateToolHelp32SnapShot hooks umgehen
Zitat:
Aber Achtung: nur weil ich dir einen K-Mode-Treiber ans Herz lege, heißt das nicht, daß man nciht auch im K-Mode bereits vor anderen Treibern die Prozesse verstecken könnte. Da gibt es auch eine Seite www dot rootkit dot com, wo du mehr Informationen zu diesem Thema bekommst (also zB Programme welche Rootkits austricksen und wieder neue Rootkits die eben jene Programme austricksen und so weiter und so weiter ... :mrgreen: |
Re: CreateToolHelp32SnapShot hooks umgehen
Als wenn ich nichts dafür hätte ;)
Delphi-Quellcode:
mit ForceLoadLibraryNtA('ntdll.dll') kannste die ntdl ein 2. mal laden und dann davon GetProcaddress(x,'NtQuerySystenbob') machen und die funtkion dann benutzen, die ist dann garantiert nicht gehookt :)
var oldRtlEqualUnicodeString: function(a,b: pointer; c: boolean): boolean; stdcall;
nextRtlEqualUnicodeString: function(a,b: pointer; c: boolean): boolean; stdcall; forcename: string; function myRtlEqualUnicodeString(a,b: pointer; c: boolean): boolean; stdcall; begin if pos(forcename,uppercase(pwidechar(pointer(cardinal(b)+4)^))) > 0 then result := false else result := nextRtlEqualUnicodeString(a,b,c); end; function ForceLoadLibraryNtA(dllname: pchar): cardinal; stdcall; begin @oldRtlEqualUnicodeString := GetProcAddress(GetModuleHandle('ntdll.dll'),'RtlEqualUnicodeString'); if (@oldRtlEqualUnicodeString <> nil) then begin uallTableHook.HookAPIJMP(@oldRtlEqualUnicodeString,@myRtlEqualUnicodeString,@nextRtlEqualUnicodeString); forcename := uppercase(dllname); result := LoadLibraryA(dllname); uallTableHook.UnhookAPIJMP(@nextRtlEqualUnicodeString); end else Result := LoadLibraryA(dllname); end; |
Re: CreateToolHelp32SnapShot hooks umgehen
Man mit euch geht echt die post ab :)
Da will ich nur nen simplen anticheat für mein lieblingsspiel schreiben, und ich lande in den untiefen der windows system programmierung. Hab mir gerade die native api's runtegeladen, aber hab keine Beschreibung gefunden wie die dann verwendet werden. Sachen gibts.... Und Brechi der alte hacker hat sowieso wieder was lol. Aber um nicht nur zu quatschen eine kleine verständniss frage? Die Apis müssen immer im prozess gehookt werden der die verwendet (klar) also global im system um eben ein modul zu verstecken. Wenn jetzt ein hook für das verstecken von prozessen gemacht wird, dann kann ich ja uall.protect.ishook in meinem eigenen prozess verwenden. Oder Brechis vorschlag einfach die ntdll.dll nachladen (lol gute idee). Oder eben die Native apis - wenn ich dazu eine beschreibung finde, die find ich ja sehr interessant. All diese methoden sollten bei einfachen process hide programmen die auf NtQuerySystemInformation basieren funktionieren wenn ich die in mein eigenes programm einbau, weil die ntdll.dll in meinem programm gehookt werden muß wenn ich von einem anderen prozess die module auflisten will? hoff ich :) Arnulf Edit: Eigentlich eine dumme frage, aber ich bin mir immer noch so unsicher bei dem ganzen thema und ich hab mich schon so oft geirrt :) |
Re: CreateToolHelp32SnapShot hooks umgehen
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:55 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