Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > C/C++
You last visited: Today at 19:32

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



speicher zugriff umleiten

Discussion on speicher zugriff umleiten within the C/C++ forum part of the Coders Den category.

Reply
 
Old   #1
 
Tyrar's Avatar
 
elite*gold: 0
Join Date: Oct 2008
Posts: 1,637
Received Thanks: 1,119
speicher zugriff umleiten

ich habe da grad ein kleines problem, es gibt da eine funktion die ich hooken muss, allerdings wird diese func gecheckt ob die geändert ist. ich habe mir schon überlegt nen exception handler in jedem thread zu installieren und der funktion die execute rechte zu entziehen, damit ich in dem exception handler dann direkt zu meiner func springen kann. hardware breakpoints sind keine lösung, die werden automatisch entfernt!

jemand ne idee?
Tyrar is offline  
Old 06/19/2012, 19:25   #2
 
elite*gold: 5
Join Date: Sep 2006
Posts: 385
Received Thanks: 218
Es wäre hilfreich zu wissen welche Maßnahmen das anti-cheat System ergreift.
Spontan würde ich die Funktion hooken, die den Arbeitsspeicher überprüft und dann ganz einfach meine Funktion immer als "Okay" melden.
Nightblizard is offline  
Old 06/19/2012, 20:00   #3
 
Tyrar's Avatar
 
elite*gold: 0
Join Date: Oct 2008
Posts: 1,637
Received Thanks: 1,119
geht um aktuelles hackshield, themida protected und mit kernelmode schutz!
exception handler werden von den hackshield funktionen überschrieben und damit wären access violations auch nicht zu nutzen!

aber mir bleibt anscheinend keine andere wahl als direkt die check func zu hooken
Tyrar is offline  
Old 06/19/2012, 23:05   #4


 
Ende!'s Avatar
 
elite*gold: 1
Join Date: Feb 2009
Posts: 6,379
Received Thanks: 7,998
Du könntest versuchen ein x64er System zu spoofen, damit HS denkt, dass es den ring0 Treiber nicht laden kann.



Das ist die offizielle API zum Abfragen, ob es sich um einen Wow64 Prozess handelt. Soweit ich das recht in Erinnerung habe, ruft diese dann intern NtQueryInformationProcess auf, um an die entsprechenden Informationen zu gelangen. An deiner Stelle würde ich also mal dort ansetzen.

PS:
Das ist, insofern es funktioniert, vermutlich keine permanente Lösung, da es zur Unterscheidung der 32 und 64 Bit-Version von Windows Möglichkeiten wie Sand am Meer gibt. Man sollte aber ja annehmen, dass die Leute bei AhnLab erstmal auf die offizielle Variante zurückgreifen .. bis sie dann merken, dass das ein Punkt für mögliche Angriffe ist ..
Ende! is offline  
Old 06/19/2012, 23:20   #5
 
Tyrar's Avatar
 
elite*gold: 0
Join Date: Oct 2008
Posts: 1,637
Received Thanks: 1,119
Quote:
Originally Posted by Ende! View Post
Du könntest versuchen ein x64er System zu spoofen, damit HS denkt, dass es den ring0 Treiber nicht laden kann.



Das ist die offizielle API zum Abfragen, ob es sich um einen Wow64 Prozess handelt. Soweit ich das recht in Erinnerung habe, ruft diese dann intern NtQueryInformationProcess auf, um an die entsprechenden Informationen zu gelangen. An deiner Stelle würde ich also mal dort ansetzen.

PS:
Das ist, insofern es funktioniert, vermutlich keine permanente Lösung, da es zur Unterscheidung der 32 und 64 Bit-Version von Windows Möglichkeiten wie Sand am Meer gibt. Man sollte aber ja annehmen, dass die Leute bei AhnLab erstmal auf die offizielle Variante zurückgreifen .. bis sie dann merken, dass das ein Punkt für mögliche Angriffe ist ..
grundsätzlich wäre das natürlich möglich, allerdings haben die einen signierten treiber, damit würde maximal der treiber garnicht erst geladen werden was zu falschen heartbeat packets führen würde...
2 möglichkeiten die wohl bleiben sind:
packets emulieren
check funcs hooken
Tyrar is offline  
Old 06/19/2012, 23:39   #6
 
Dr. Coxxy's Avatar
 
elite*gold: 0
Join Date: Feb 2011
Posts: 1,206
Received Thanks: 736
in der funktion auf irgendeine weise eine exception auslösen (z.b. in ner dauerschleife im thread nen pointer der in der funktion benutzt wird auf NULL setzen), die dann in nem exception handler abfangen und den fehler wieder korrigieren.
etc.

sicher, dass die ganze funktion gecheckt wird, und net nur der anfang auf nen e9?
Dr. Coxxy is offline  
Old 06/20/2012, 00:00   #7
 
Tyrar's Avatar
 
elite*gold: 0
Join Date: Oct 2008
Posts: 1,637
Received Thanks: 1,119
Quote:
Originally Posted by Dr. Coxxy View Post
in der funktion auf irgendeine weise eine exception auslösen (z.b. in ner dauerschleife im thread nen pointer der in der funktion benutzt wird auf NULL setzen), die dann in nem exception handler abfangen und den fehler wieder korrigieren.
etc.

sicher, dass die ganze funktion gecheckt wird, und net nur der anfang auf nen e9?
verstehe grad nicht worauf du mit der dauerschleife hinaus willst

checksum der gesamten wichtigen funktionen, da ist dann egal was ich da rein schreibe
Tyrar is offline  
Old 06/20/2012, 01:05   #8
 
Dr. Coxxy's Avatar
 
elite*gold: 0
Join Date: Feb 2011
Posts: 1,206
Received Thanks: 736
EDIT:

vergiss es, ich kann mal wieder net lesen und hab das hier komplett übersehen:

Quote:
exception handler werden von den hackshield funktionen überschrieben und damit wären access violations auch nicht zu nutzen!
Dr. Coxxy is offline  
Old 06/21/2012, 02:05   #9


 
MrSm!th's Avatar
 
elite*gold: 7110
Join Date: Jun 2009
Posts: 28,904
Received Thanks: 25,394
Die Signatur des Treibers ist ziemlich egal, der Patchguard verbietet Kernel Patches jeglicher Art, weshalb Anti-Cheat Treiber auf x64 unmöglich sind.

HWBPs werden entfernt, ja? Versuch doch einen HWBP auf SetThreadContext und einen auf GetThreadContext bzw. auf die internen Funktionen zu setzen, um zu verhindern, dass jemand deine HWBPs sieht bzw. sie überschreiben kann.

Werden alle HWBPs entfernt oder nur die on execute? Du könntest auch einen on read machen und dann immer das originale Byte stattdessen zurückgeben bzw. dadurch die Funktion finden, die den Memory checkt und diese patchen.

Access Violations wären ohnehin ***** lahm geworden.

Werden alle Exception Handler überschrieben, also auch die Vectored oder nur die Unhandled Variante?

Ansonsten könntest du ja auch da nen HWBP platzieren, hast ja 4 Stück.

Quote:
treiber garnicht erst geladen werden was zu falschen heartbeat packets führen würde...
Nein, tut es nicht, da es legitim ist, dass er nicht geladen wird.

Ich musste damals lediglich die Hack Detection abschalten und die Sache war gegessen. Das ging in S4 sogar ohne den Callback zu finden, weil man einfach den Part noppen/überspringen konnte, der die "Hack Detected" Message angezeigt und dann ExitProcess aufgerufen hat.

Quote:
checksum der gesamten wichtigen funktionen, da ist dann egal was ich da rein schreibe
Ist es eine Windows API oder eine Spielfunktion?
Bei APIs kann es auch manchmal helfen, die interne Variante zu hooken, weil nur die Win32 Version gecheckt wird.

Aber du bist sicher, dass die ganze Funktion mithilfe einer Checksum (die sich übrigens sogar leicht modifizieren ließe) bzw. eines Hashes geprüft wird und nicht nur die ersten Bytes?
MrSm!th is offline  
Old 06/21/2012, 17:07   #10
 
Tyrar's Avatar
 
elite*gold: 0
Join Date: Oct 2008
Posts: 1,637
Received Thanks: 1,119
Quote:
Originally Posted by MrSm!th View Post
Die Signatur des Treibers ist ziemlich egal, der Patchguard verbietet Kernel Patches jeglicher Art, weshalb Anti-Cheat Treiber auf x64 unmöglich sind.

HWBPs werden entfernt, ja? Versuch doch einen HWBP auf SetThreadContext und einen auf GetThreadContext bzw. auf die internen Funktionen zu setzen, um zu verhindern, dass jemand deine HWBPs sieht bzw. sie überschreiben kann.

Werden alle HWBPs entfernt oder nur die on execute? Du könntest auch einen on read machen und dann immer das originale Byte stattdessen zurückgeben bzw. dadurch die Funktion finden, die den Memory checkt und diese patchen.

Access Violations wären ohnehin arsch lahm geworden.

Werden alle Exception Handler überschrieben, also auch die Vectored oder nur die Unhandled Variante?

Ansonsten könntest du ja auch da nen HWBP platzieren, hast ja 4 Stück.

Nein, tut es nicht, da es legitim ist, dass er nicht geladen wird.

Ich musste damals lediglich die Hack Detection abschalten und die Sache war gegessen. Das ging in S4 sogar ohne den Callback zu finden, weil man einfach den Part noppen/überspringen konnte, der die "Hack Detected" Message angezeigt und dann ExitProcess aufgerufen hat.

Ist es eine Windows API oder eine Spielfunktion?
Bei APIs kann es auch manchmal helfen, die interne Variante zu hooken, weil nur die Win32 Version gecheckt wird.

Aber du bist sicher, dass die ganze Funktion mithilfe einer Checksum (die sich übrigens sogar leicht modifizieren ließe) bzw. eines Hashes geprüft wird und nicht nur die ersten Bytes?
access violations wären bei checks für alle 30secs noch akzeptabel
hwbps an die internen funktionen zu setzen habe ich noch nicht probiert, werde ich mal machen!

sobald der treiber nicht geladen wurde und/oder nicht darauf zugegriffen werden kann gibts da auch nen fail!
den treiber habe ich so modifiziert, dass ich auf den prozess auch vollen zugriff habe! zu debug zwecken definitiv sehr nützlich.

checksums werden von spielfunktionen/hs funktionen/winapi funktionen geprüft. interessanter weise werden die unhandled exception methoden gecalled (allerdings nur bei hwbps)! wenn ich einen read access bp setze, ist die exception address:
Code:
add al, [ebx]
pop ebx ; <-- hier
aber danke für die tipps, ich werd ma versuchen damit was zu erreichen!
Tyrar is offline  
Old 06/21/2012, 17:19   #11
 
link's Avatar
 
elite*gold: 1
Join Date: Jul 2005
Posts: 553
Received Thanks: 451
Soweit ich weiß, ist die offizielle x64 Methode, sich "in's System einzuhooken", Filter über ObRegisterCallbacks zu installieren.
Auf diese Weise funktionieren auch x64 AVs. Der Spielraum ist natürlich stark eingeschränkt im Vergleich zu x86, aber ohne Funktion sind sie nicht und natürlich auch nicht unmöglich.

Du könntest evtl. auch, um dich nicht mit den Check-Funktionen herumschlagen zu müssen, PatchGuard auf deinem System deaktivieren und die Funktionen zum Abfragen der HW BPs sowie dem Löschen der Exception Handler in der SSDT hooken, sodass deine Hooks erhalten bleiben dürften.
Nicht unbedingt eine dauerhafte, noch sehr stabile Methode, aber zum Testen wär's ein Versuch wert.

Einen PatchGuard Bypass findest du .
link is offline  
Thanks
1 User
Old 06/21/2012, 21:14   #12


 
MrSm!th's Avatar
 
elite*gold: 7110
Join Date: Jun 2009
Posts: 28,904
Received Thanks: 25,394
Quote:
sobald der treiber nicht geladen wurde und/oder nicht darauf zugegriffen werden kann gibts da auch nen fail!
den treiber habe ich so modifiziert, dass ich auf den prozess auch vollen zugriff habe! zu debug zwecken definitiv sehr nützlich.
Das mag sein, er kann aber keine effektiven Veränderungen am Kernel vornehmen.

edit:

Ah danke link, wusste ich gar nicht. Wieder was neues gelernt.
MrSm!th is offline  
Reply


Similar Threads Similar Threads
Metin2 HS Umleiten
06/19/2012 - Metin2 - 1 Replies
Moin Com ich wollte gerade hs umleiten und mit olly attach ja und fehler und entpacken mit pe kann ich sie auch nicht haben die was geändert?
[Hilfe] FreeBSD kein zugriff als root / kein FTP zugriff
03/25/2012 - Metin2 Private Server - 5 Replies
Hallo Community, ich beschäftige mich jetzt seit 3 Stunden mit einem Problem auf meinem FreeBSD-Server. Ich Installiere FreeBSD über die .iso in Virtual box und wen es installier ist Loge ich mich mit root ein. Dann aber habe ich mit root keinerlei Zugriffsrechte. Ich kann als normal angelegter User auf den FTP Server zugreifen aber als root nicht. Und ich kann nicht in /etc/ssh/sshd_config die Einlogrechte ändern weil dann Permissen denied kommt. Bitte um Hilfe mein Skype: passilp Ich...
ip umleiten
04/09/2011 - Technical Support - 3 Replies
hey leute ich hab nen server für nen spiel, bloß das problem das sich ja meine ip nach spätestens 24 h ändert.. und da wollt ich mal fragen obs die möglichkeit gibt die ip umzuleiten über ne domain also quasi das ich mir ne free domain erstelle, dann läuft auf meinem pc ein programm das dann meine ip in ne textdatei auf nem ftp server schreibt, und die domain dann auf die ip in der txt umeleitet... geht das? falls ihr verstanden habt was ich meine xD gruß waldi
Wie websiten umleiten ?
10/20/2010 - Main - 5 Replies
Hallo ich wollte fragen wir ich websiten umleiten kann im Beispiel: ich öffne Google und dann soll eBay: Neue und gebrauchte Elektronikartikel, Autos, Kleidung, Sammlerstücke, Sportartikel und mehr ? alles zu günstigen Preisen kommen Geht das irgendwie:? Ich meine es so :) das es nur bei mir so ist wenn ich z.b lol.de eingebe das google.de kommt
Seite umleiten
11/01/2009 - Technical Support - 5 Replies
Hey ;) Ich hab gehört man kann Seiten automatisch umleiten lassen, das heißt ich will z.B auf e*pvp aber der Browser leitet statt auf e*pvp direkt auf google o.ä um. Jemand hat im Chip Forum das hier geschrieben: Nur... ich blick da ehrlich gesagt nicht ganz was ich machen muss. Was muss ich genau eingeben nachdem ich cmd->ok gemacht gemacht habe? Sagen wir ich möchte die Seite



All times are GMT +2. The time now is 19:32.


Powered by vBulletin®
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2024 elitepvpers All Rights Reserved.