[Tutorial] Hackshields mit AutoIt bypassen

05/31/2012 16:43 K1ramoX#1
Hallo,

ich hab mal wieder etwas langeweile und desswegen möchte ich wieder ein bisschen Wissen mit euch teilen.

Sicherlich kennt ihr es, ihr möchtet einen Trainer für irgend ein beliebiges Spiel machen und habt Probleme mit der detection.

Natürlich könnte man sich in C++ eine Dll machen und verschiedene Funktionen hooken doch es gibt viele die alles in allem machen wollen. Wer meint dass man lieber C++ nutzen sollte der sollte nicht weiterlesen ;<

Verschiedene Funktionen ermöglichen das detecten von Programmen. Darunter zählen zB. folgende Funktionen:

- EnumProcesses
- K32EnumProcesses
- EnumWindows

Diese 3 Funktionen werden häufig genutzt. Wer wissen möchte was diese Funktionen genau können der sollte am besten auf msdn.microsoft.com nachschauen. Doch kommen wir nun weiter zum eigentlichen Teil. Angenommen, unser Script sieht so aus:


Wie man erkennen kann, soll dieser Trainer prüfen ob wir die Funktion Godmode an oder aus haben wollen und demnach entscheidet er dann auch.

Da dieses ganze Schema hier ingame basierend ist, müssen wir etwas gegen unsere "Hackdetection" tun. Eine Möglichkeit wäre, unser AutoIt Script ohne die gewöhnliche AutoIt Signatur zu compilen, doch in diesem Tutorial möchte ich auf die 2. Möglichkeit eingehen.

Jedes Programm nutzt Funktionen, Funktionen, die wir manipulieren können. Doch in unserem Fall wollen wir die Funktionen so manipulieren dass das Anti Hackprogramm nichts mehr mit den gegebenen Resultaten anfangen kann.

In dem folgenden Scriptbeispiel zeige ich euch wie ihr die Funktion EnumProcesses komplett entschärfen könnt:


Jetzt werdet ihr euch fragen wieso die Bytelänge 19 ist. Hier seht ihr einen Screen von der Funktion:

[Only registered and activated users can see links. Click Here To Register...]

Wer richtig zählen kann wird auf 17 nutzvolle Bytes kommen.

Doch achtung. Bei manchen Hackshields werden die ersten 2 Bytes der Funktion gecheckt. Was nun? Da die ersten 2 Bytes zu einem mov gehören, der nur als Funktionsanfang dient, können wir diesen auch in Ruhe lassen. Wie? Indem wir $EnumProcesses mit 0x2 addieren.

So, dass soll's zu meinem Tutorial gewesen sein. Fall's ihr Fragen habt bezüglich anderer Funktionen, zum Script oder zu irgend einem anderen Thema dann fragt mich ruhig in diesen Thread oder schreibt mir eine PM ;)

Zum Schluss möchte ich mich für eure erwiesene Aufmerksamkeit bedanken und ich hoffe doch dass es euch etwas weiterbringt.

Einen schönen Tag noch, euer K1ramoX :)
05/31/2012 19:46 K1ramoX#2
Quote:
Originally Posted by Cuben View Post
Something interesting, nice.
But i don't think it will work with all hackshields, like GameGuard etc ...
Why not? I dont think that they check all bytes. And you musn't nop the function like I do, you can change the registers or something else ;)
05/31/2012 20:15 nulled31#3
Looks great but i don't understand could you translate it in English ?
05/31/2012 20:27 -STORM-#4
Diese Funktionen erkennen Prozesse bzw. Fenster aber nur anhand ihres Namen bzw. Classname etc. (vermutlich Autoit v3 Gui), richtig?
D.h. alles was verhaltensbasiert erkannt wird, also wenn mein Trainer erst bei Zugriff auf bestimmte Memorybereiche detected wird o.ä., kann so nicht umgangen werden?
05/31/2012 20:35 K1ramoX#5
Quote:
Originally Posted by -STORM- View Post
Diese Funktionen erkennen Prozesse bzw. Fenster aber nur anhand ihres Namen bzw. Classname etc. (vermutlich Autoit v3 Gui), richtig?
D.h. alles was verhaltensbasiert erkannt wird, also wenn mein Trainer erst bei Zugriff auf bestimmte Memorybereiche detected wird o.ä., kann so nicht umgangen werden?
Damit kannste AutoIt detections umgehen. Bei XTrap Games funktioniert es ;D
06/03/2012 01:12 PsychoXReaper#6
yeah i liked doing it in CE long time ago ;)
01/16/2013 19:19 karuka#7
If i try it doing for s4 league will it work ?????

I mean all i have to do is copy and paste your code in autoit right ?
01/16/2013 19:30 Achat#8
Quote:
Originally Posted by karuka View Post
If i try it doing for s4 league will it work ?????
[26.12.2012 21:22:27] [Only registered and activated users can see links. Click Here To Register...]: xtrap reversen ist nicht schwer
[26.12.2012 21:22:31] [Only registered and activated users can see links. Click Here To Register...]: kann jeder mit bissl übung

My Translation:
  • reversing xtrap isn't difficult
  • everyone can do it with a little practice

Quote:
Originally Posted by karuka View Post
I mean all i have to do is copy and paste your code in autoit right ?
[Only registered and activated users can see links. Click Here To Register...]

[Only registered and activated users can see links. Click Here To Register...]

Well you can try it but please don't cry later.

Kind Regards
01/17/2013 23:50 Hemoglobien²10#9
hehehe lölchen wie geil ist das den
04/23/2013 16:02 FacePalmMan#10
brauche hilfe! bei mir kommt immer fehler

D:\Programme\AutoIt3\Include\SecurityConstants.au3 (67,39) : ERROR: $TOKEN_QUERY previously declared as a 'Const'.
Global Const $TOKEN_QUERY = 0x00000008

und

D:\Programme\AutoIt3\Include\SecurityConstants.au3 (69,51) : ERROR: $TOKEN_ADJUST_PRIVILEGES previously declared as a 'Const'.
Global Const $TOKEN_ADJUST_PRIVILEGES = 0x00000020

€dit: in der NomadMemory.au3 waren diese Variablen schon deklariert.
04/28/2013 01:33 *-Elsword_Hacker-*#11
müsste das enumprocesses nicht irgendwie deklariert werden ? und was meinste mit dazu addieren ? , bissl unverständlich das script , ansonsten nice tutorial
05/16/2013 21:51 Punkter124#12
Ich kappier nicht ganz was man jetzt verändern muss um den bypass zum laufen zu bringen ... (bei mir wird der immer detectet)
05/22/2013 10:02 LitleFrog#13
can you make english?
05/23/2013 16:29 K1ramoX#14
Quote:
Originally Posted by *-Elsword_Hacker-* View Post
müsste das enumprocesses nicht irgendwie deklariert werden ? und was meinste mit dazu addieren ? , bissl unverständlich das script , ansonsten nice tutorial
enumprocesses ist eine api die in psapi.dll definiert ist. selber brauch man das nicht definieren da man sich einfach die adresse hole kann die dann auf diese funktion zeigt durch getprocadress.

mit dazu addieren meine ich dass du an der adresse die auf enumprocesses zeigt ein paar bytes dazu rechnest um memoryscanner zu umgehen die oftmals nur die ersten 2 bytes einer funktion scannen (muss nicht immer so sein, manche funktionen werden auch komplett geprüft). enumprocesses + 7 wär eine gute stelle da dort der jmp zu K32EnumProcesses ist.

Quote:
Originally Posted by Punkter124 View Post
Ich kappier nicht ganz was man jetzt verändern muss um den bypass zum laufen zu bringen ... (bei mir wird der immer detectet)
wäre damit jetzt auch beantwortet.

Quote:
Originally Posted by LitleFrog View Post
can you make english?
no im lazy D;
05/24/2013 20:11 carlox02#15
So the number 90, is every asm nop function, and all you have to do is change the number 90 in the script, to the one that has nop?
like if the nop's were on 96, I had to change it to 96 on the script?