AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi CreateToolHelp32SnapShot hooks umgehen
Thema durchsuchen
Ansicht
Themen-Optionen

CreateToolHelp32SnapShot hooks umgehen

Ein Thema von Arnulf · begonnen am 25. Jul 2005 · letzter Beitrag vom 30. Mär 2007
Antwort Antwort
Seite 1 von 6  1 23     Letzte »    
Arnulf

Registriert seit: 28. Okt 2004
Ort: Wien
271 Beiträge
 
#1

CreateToolHelp32SnapShot hooks umgehen

  Alt 25. Jul 2005, 13:01
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:
    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);
Natürlich gehts so nicht - falsch ist sicherlich schon mal
pointer(0) allerdings weiß ich auch nicht wo im prozess ich anfangen soll zu lesen - wo beginnt der eigentlich?

Arnulf
  Mit Zitat antworten Zitat
NicoDE
(Gast)

n/a Beiträge
 
#2

Re: CreateToolHelp32SnapShot hooks umgehen

  Alt 25. Jul 2005, 13:04
Zitat von Arnulf:
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.
Erwartungshaltungen in Form von Konstanten sind an dieser Stelle unangebracht. Im Dos-Header steht der Offset des PE-Headers (das könnten auch 5MB sein).

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)
  Mit Zitat antworten Zitat
Arnulf

Registriert seit: 28. Okt 2004
Ort: Wien
271 Beiträge
 
#3

Re: CreateToolHelp32SnapShot hooks umgehen

  Alt 25. Jul 2005, 13:30
Zitat:
könnten auch 5MB sein
ok das bedeutet wohl ich müsste mich immer durchhanteln.
also erste den dosheader ---> read process am offset und dann ntheader einlesen?
Was hat das Thema mit der Frage zu tun? 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.
Das war ja nur eine idee wie man eben diese hooks umgehen kann (Module32First/module32next).
ist immer das erste (CreateToolHelpSnapshot) naja dann komm ich aber um die apis nicht herum.
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
  Mit Zitat antworten Zitat
NicoDE
(Gast)

n/a Beiträge
 
#4

Re: CreateToolHelp32SnapShot hooks umgehen

  Alt 25. Jul 2005, 13:37
Zitat von Arnulf:
ok das bedeutet wohl ich müsste mich immer durchhanteln.
Jupp.

Zitat von Arnulf:
also erste den dosheader ---> read process am offset und dann ntheader einlesen?
Es besteht keine Notwendigkeit, dass der Loader des Betriebssystems den DOS- und/oder NT-Header in den Adressraum des Prozesses kopiert. Insofern wirst Du (wenn es 'sauber' funktionieren soll) immer das Image (und dessen Header) von Platte einlesen müssen (um an die Adresse der Import-Tabelle zu gelangen (ausser, das Betriebssystem bietet Dir eine Möglichkeit/API um direkt an die Import-Tabelle eines Prozesses zu gelangen...).

Zitat von Arnulf:
naja dann komm ich aber um die apis nicht herum.
Und genau darum geht es ja eigentlicht.
Wenn keinem in diesem Forum etwas dazu einfällt (außer spezifische Lösungen), dann wird's schwierig das zu vermeiden...
  Mit Zitat antworten Zitat
Arnulf

Registriert seit: 28. Okt 2004
Ort: Wien
271 Beiträge
 
#5

Re: CreateToolHelp32SnapShot hooks umgehen

  Alt 25. Jul 2005, 13:44
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
  Mit Zitat antworten Zitat
NicoDE
(Gast)

n/a Beiträge
 
#6

Re: CreateToolHelp32SnapShot hooks umgehen

  Alt 25. Jul 2005, 13:52
Zitat von Arnulf:
Ich dachte echt es gäbe eine Möglichkeit, process hider die auf api hooks basieren zu umgehen.
Viele solcher Tools vergessen, dass es auch andere Wege als die Win32-API gibt um an die Informationen zu gelangen (WMI, PSAPI, ...). Generische Lösungen (gerade wenn sie bekannt und etabliert sind) sind immer die ersten die umgangen werden. Da dieses Katz&Maus-Spiel schon ein paar Jahre geht, haben sich Unmengen von Hacks und Anti-Hacks angesammelt...
  Mit Zitat antworten Zitat
Olli
(Gast)

n/a Beiträge
 
#7

Re: CreateToolHelp32SnapShot hooks umgehen

  Alt 25. Jul 2005, 13:55
Zitat von Arnulf:
Ich dachte echt es gäbe eine Möglichkeit, process hider die auf api hooks basieren zu umgehen.
ROFL, klar gibbet die. Muddu "nur" einen K-Mode-Treiber schreiben, der die Prozesse auflistet (ich rede mal nur von NT4 aufwärts). Alternativ, wenn du weißt, daß die Toolhelp-APIs gehookt wurden, kannste auch ganz einfach so die Native API benutzen. Such mal unter OpenSource. Da habe ich den Link zu einer Unit gepostet, wo es um Native APIs geht.

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 ...
  Mit Zitat antworten Zitat
brechi

Registriert seit: 30. Jan 2004
823 Beiträge
 
#8

Re: CreateToolHelp32SnapShot hooks umgehen

  Alt 25. Jul 2005, 14:07
Als wenn ich nichts dafür hätte

Delphi-Quellcode:
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;
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
  Mit Zitat antworten Zitat
Arnulf

Registriert seit: 28. Okt 2004
Ort: Wien
271 Beiträge
 
#9

Re: CreateToolHelp32SnapShot hooks umgehen

  Alt 25. Jul 2005, 14:42
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
  Mit Zitat antworten Zitat
Olli
(Gast)

n/a Beiträge
 
#10

Re: CreateToolHelp32SnapShot hooks umgehen

  Alt 25. Jul 2005, 14:50
Zitat von Arnulf:
Hab mir gerade die native api's runtegeladen, aber hab keine Beschreibung gefunden wie die dann verwendet werden.
Sachen gibts....
Sei froh, daß du wenigstens die Deklarationen hast. Die sind nämlich allesamt undokumentiert (abgesehen von diversen verstreuten Informationen). Aber die werden vermutlich auch nochmal dokumentiert.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 6  1 23     Letzte »    


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 20:50 Uhr.
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