Quote:
Originally Posted by bassbanane
Du musst dich mal ein wenig mit dem HS beschäftigen, und es dann "bypassen"
Du musst halt die Funktionen hooken, die dafür verantwortlich sind, dass dein Spiel beendet wird. Du musst mal nach "hackshied bypass" oder so bei google suchen, dort gibt es eine alte Anleitung, aber wenn man Ahnung hat, kann man die auch auf die neueren Version vom HS anwenden und somit bypassen.
Wie genau man HS bypasst wird dir hier wohl niemand sagen.
|
nicht unbedingt, wenn API Funktionen gecheckt werden.
Mir sind nur Tutorials bekannt, bei denen der HS Callback gehookt wird.
Dadurch wäre das Hooken zwar undetected, wenn Memory Changes auch an den Callback gesendet werden.
Naja, da wären aber noch ein paar Funktionen, wie HS_StarService, die den Treiber laden.
Außerdem kann man Pech haben und es werden CRC Packets gesendet oder zumindest die Korrektheit von System APIs.
Warum einfach, wenns umständlich geht?
Für gewöhnlich reicht es, wenn man an nem Offset hookt.
send und recv sind __stdcall Funktionen, also kann man den __stdcall Prolog
Code:
mov edi, edi
push ebp
mov ebp, esp
überspringen und macht dann die eigene Hookfunktion zu einer __cdecl Funktion, damit der Prolog nicht 2 mal ausgeführt wird.
Also:
Code:
mov edi, edi
push ebp
mov ebp, esp
jmp your_cdecl_function
Ich bin mir nicht mehr ganz sicher, evtl könnte es Stack Probleme geben, weshalb man entweder die Register in der eigenen Funktion sichern sollte oder den jmp hinter dem sub Befehl zu positionieren (am Anfang ist ja meist ein sub, um Platz für lokale Variablen zu schaffen).