Hey ich bin gerade dabei OpenProcess,Write/ReadProcessMemory wieder zu Unhooken und habe deswegen diesen treiber geschrieben nur das problem ist ZwOpenProcess funktioniert der hook wunderbar aber bei ZwReadVirtualMemory muss ich die ntdll.lib linken und wenn ich das dann erstellt hab lässt sich der treiber nicht starten..... weiß jemand woran das liegt ?
Aber ansonsten funktioniert der Hook?
Musst also nicht Write Protect deaktivieren oder mit InterlockedExchange den Wert überschreiben?
SYSTEM_SERVICE holt sich ja den Tabellenindex für sysenter, funktioniert also nur mit den syscall-Wrappern, wie sehen die Adressen und die ersten 5 Bytes von ZwOpenProcess, ZwQueryInformationProcess, NtWriteVirtualMemory, etc. bei dir denn aus?
Du könntest es auch einfach mal mit hardcoded Indizes testen
hey erstmal danke für die Hilfe... also das mit den ersten 5 byte s vertteh ich nicht ganz weil bei jeder Zw funktion ist das doch das selbe Ersten 5 bytes: mov eax,FunktionId.
Wenn ich das
OldNtWriteVirtualMemory = SYSTEMSERVICE(NtWriteVirtualMemory);
SYSTEMSERVICE(NtWriteVirtualMemory) = NewNtWriteVirtualMemory;
raus nehme funktioniert der OpenProcess hook wunderbar....
wie soll ich denn den WriteProtect deaktivieren ?
InterlochExchange führt auch zu keinen ergebnis... ^^
Jetzt hab ich alles ein bissl durcheinander beantwortet ich hoffe du verstehst alles
Deswegen mein ich ja, guck mal, ob an [NtWriteVirtualMemory] auch mov eax,index steht oder benutz mal einen hardcoded Index (XP: 115h, 7: 18Fh).
Kompiliert wird der Driver erfolgreich, aber laden lässt er sich nicht?
"raus nehme funktioniert der OpenProcess hook wunderbar...."
Hast es also auch getestet und evtl. mal mit DbgPrint den Wert in der DescriptorTable vor und nach dem Überschreiben ausgegeben und mit der Adresse deiner Funktion abgeglichen?
Edit:
Btw. DriverObject->DriverUnload = OnUnload; scheinst du vergessen zu haben
hey also wie ich das sehe ist dort auch mov eax, 18F ich kann nicht auf
SYSTEMSERVICE(NtWriteVirtualMemory) zugreifen sobald das igrendwo im code steht, lässt sich der driver registieren aber nicht mehr starten und somit fällt auch das "Hast es also auch getestet und evtl. mal mit DbgPrint den Wert in der DescriptorTable vor und nach dem Überschreiben ausgegeben und mit der Adresse deiner Funktion abgeglichen?" leider Flach..... leider weiß ich nicht wie ich das mit hardcoded so direkt umsetzen soll aber ich bin dran danke für die hilfe.......hier ist nochmal der funktionierende code
Wenn das funktionieren sollte, könntest du, um es wieder dynamischer zu gestalten, entweder eine OS-Abfrage implementieren und dann ein Array mit den Indizes von NtWriteVirtualMemory unter 2k, XP, Vista und 7 benutzen oder ntdll.dll manuell mappen und die Exports durchgehen, um so an NtWriteVirtualMemory und somit an das mov eax,index zu kommen
hey jo so gehts da ich das ehh nur für mich zum testen benutzen möchte ist das bis jetzt schon richtig cool vielen dank für deine hilfe
btw...womit entdeckt hshield ander programme weil mit ZwQuerySystemInformation hab ich den process aus dem TskManager genommen aber wird immer noch entdeckt, dass können ja jetzt nur noch ring 3 detections sein oder ?
und noch ne frage Wie kann ich Read und WriteVirtualMemory failen lassen also STATUS_ACCESS_DENIED oder STATUS_UNSUCCESSFULL oder NULL return geht alles nicht
womit entdeckt hshield ander programme weil mit ZwQuerySystemInformation hab ich den process aus dem TskManager genommen aber wird immer noch entdeckt
kA.. GG könnte auch über ein EPROCESS-Objekt die Prozessliste durchgehen, da dürfte ein ZwQuerySystemInformation-Hook nicht viel bringen, oder es wird nach Fenstern gesucht, weiß ich leider nicht
Quote:
Wie kann ich Read und WriteVirtualMemory failen lassen also STATUS_ACCESS_DENIED oder STATUS_UNSUCCESSFULL oder NULL return geht alles nicht
Was genau geht dabei denn nicht? Wenn du einfach mov eax,1
retn 14h
oder return 1;
an's Ende schreibst, sollte doch auch dieser Wert beim Caller ankommen, der diesen dann als fehlgeschlagen interpretiert.
kA.. GG könnte auch über ein EPROCESS-Objekt die Prozessliste durchgehen, da dürfte ein ZwQuerySystemInformation-Hook nicht viel bringen, oder es wird nach Fenstern gesucht, weiß ich leider nicht
Was genau geht dabei denn nicht? Wenn du einfach mov eax,1
retn 14h
oder return 1;
an's Ende schreibst, sollte doch auch dieser Wert beim Caller ankommen, der diesen dann als fehlgeschlagen interpretiert.
ach ich habs bei Cheat engine getestet und irgendwi kann ce trotzdem scanen aber bei eigenen programmen geht das....
@hackshield das problem ist halt ich würde gerne auch nachdem hackshield geladen ist eine dll injecten können nur ich schalte halt OpenProcess frei und dann wird anscheinend auch noch VirtualAllocEx gehooked aber auf Userebende... und ich würde halt gerne die Funktion auch freischalten aber geht ja nicht weil hackshield die hooks ja entdeckt .... boah das ist alles so kompliziert
<26.06.11> Chico™ Public Hook, //Invisible//Chams /Stamina/Mini Hook/NO CRASH VERSION 07/08/2011 - WarRock Hacks, Bots, Cheats & Exploits - 46 Replies 26.06.11 Hack Released
26.06.11 SuperNoSpread Problem Fixxen Status= Not in Hack
Hej Com, leider hab ich eine schlechte nachricht xP^^ aus egendeinen Grund verursacht bei mir SuperNoSpread einen Direkten Crash sobald man in game ist, deshalb habe ich es entfernt O,o
der Hack ist tortzdem nett und wird euch gefallen, sobald ich mehr addys habe kommen mehrere funktionen noch dazu ;)
http://img4.fotos-hochladen.net/uploads/public24e lfvtrw1u.png
STOP! VOR DEM DOWNLOAD!
Mit Dem...