Hallo liebe Mitcoder,
Falls ihr sehr wenig bis 0 Ahnung vom Hooken und/oder der Native Api habt, könnt ihr den Thread wieder verlassen (gut, ihr könnt natürlich aus reinem Interesse mitlesen, aber ihr werdet dann dabei sicher nicht so viel lernen...).
An die anderen, die Ahnung haben und nun noch weiterlesen, habe ich eine Fragestellung zu einem ziemlich verwirrendem Problem:
Aus mir unbekannten Gründen verspürte ich Lust, meine Hooks, die meist eh nicht detected werden, wirklich fast vollständig (Usermode) undetected zu machen.
Da wohl ziemlich häufig die Funktion NtQueryVirtualMemory zur Hookdetection genutzt wird, habe ich es mal damit probiert (und hier wurde das auch geraten [Only registered and activated users can see links. Click Here To Register...]).
Wie dem auch sei, ich habe es schonmal geschafft, nicht vorhandene Hooks damit detected zu machen :awesome: (Scheinbar werden von XTrap doch OS Funktionen geprüft, allerdings nicht alle und ich hatte bis vor kurzem nur nicht-geprüfte gehookt. Nunja, da ich aber NtQueryVirtualMemory einfach failen ließ, um es mal zu testen, wurden auch gar nicht gehookte Funktionen als Hooks erkannt^^)
Problem ist, um ernsthaft Hookdetection zu vermeiden, muss ich auch die Originalfunktion aufrufen (in meinem wirren Gedankengang...wenn jemand davon Ahnung hat und weiß, wie es ohne sie aufzurufen möglich ist, gültige Werte zu returnen, die zu keinem Crash führen und die auch so sind, als wäre nichts gehookt, kann er mich eines Besseren belehren).
Das funktioniert aber nicht, innerhalb von NtQueryVirtualMemory kann ich weder callen noch jumpen.
Wenn ich sie hooke und eine simple MessageBox ausgeben will -> Crash
Wenn ich einfach die originale Version aufrufen will -> Crash
Wenn ich nichts mache, als 1 zurückzugeben -> Kein Crash, aber XTrap nörgelt rum...
Dieses Problem tritt bei mir nur bei dieser Funktion auf, überall anders geht es.
Habe schon im Debugger durchgesteppt (erstmal mit ner anderen Nt Funktion, die auch defintiv gecalled wird, damit ich mal sehen kann, was genau passiert, aber damit gabs ja keine Probleme...fürs Testen von NtQueryVirtualMemory müsste ich mir erstmal eine Testapp schreiben...) und nichts auffälliges bei anderen Nt Funktionen mit dem Verfahren gefunden.
Der Aufbau in der Ntdll ist eigentlich der gleiche, wie bei den anderen Funktionen!
Also woran kann das liegen, dass ich nichts innerhalb des Hooks callen kann (oder zu ner anderen Funktion jumpen)?
Wäre schön, wenn mir jemand helfen könnte, Danke im Voraus ;)
Falls ihr sehr wenig bis 0 Ahnung vom Hooken und/oder der Native Api habt, könnt ihr den Thread wieder verlassen (gut, ihr könnt natürlich aus reinem Interesse mitlesen, aber ihr werdet dann dabei sicher nicht so viel lernen...).
An die anderen, die Ahnung haben und nun noch weiterlesen, habe ich eine Fragestellung zu einem ziemlich verwirrendem Problem:
Aus mir unbekannten Gründen verspürte ich Lust, meine Hooks, die meist eh nicht detected werden, wirklich fast vollständig (Usermode) undetected zu machen.
Da wohl ziemlich häufig die Funktion NtQueryVirtualMemory zur Hookdetection genutzt wird, habe ich es mal damit probiert (und hier wurde das auch geraten [Only registered and activated users can see links. Click Here To Register...]).
Wie dem auch sei, ich habe es schonmal geschafft, nicht vorhandene Hooks damit detected zu machen :awesome: (Scheinbar werden von XTrap doch OS Funktionen geprüft, allerdings nicht alle und ich hatte bis vor kurzem nur nicht-geprüfte gehookt. Nunja, da ich aber NtQueryVirtualMemory einfach failen ließ, um es mal zu testen, wurden auch gar nicht gehookte Funktionen als Hooks erkannt^^)
Problem ist, um ernsthaft Hookdetection zu vermeiden, muss ich auch die Originalfunktion aufrufen (in meinem wirren Gedankengang...wenn jemand davon Ahnung hat und weiß, wie es ohne sie aufzurufen möglich ist, gültige Werte zu returnen, die zu keinem Crash führen und die auch so sind, als wäre nichts gehookt, kann er mich eines Besseren belehren).
Das funktioniert aber nicht, innerhalb von NtQueryVirtualMemory kann ich weder callen noch jumpen.
Wenn ich sie hooke und eine simple MessageBox ausgeben will -> Crash
Wenn ich einfach die originale Version aufrufen will -> Crash
Wenn ich nichts mache, als 1 zurückzugeben -> Kein Crash, aber XTrap nörgelt rum...
Dieses Problem tritt bei mir nur bei dieser Funktion auf, überall anders geht es.
Habe schon im Debugger durchgesteppt (erstmal mit ner anderen Nt Funktion, die auch defintiv gecalled wird, damit ich mal sehen kann, was genau passiert, aber damit gabs ja keine Probleme...fürs Testen von NtQueryVirtualMemory müsste ich mir erstmal eine Testapp schreiben...) und nichts auffälliges bei anderen Nt Funktionen mit dem Verfahren gefunden.
Der Aufbau in der Ntdll ist eigentlich der gleiche, wie bei den anderen Funktionen!
Also woran kann das liegen, dass ich nichts innerhalb des Hooks callen kann (oder zu ner anderen Funktion jumpen)?
Wäre schön, wenn mir jemand helfen könnte, Danke im Voraus ;)