Kann man mit AutoIT einen S4 Bypass schreiben?

11/03/2013 14:44 MaSteX3laSteX#1
Ja wie man unschwer am Titel erkennen kann wollte ich fragen ob man mit AutoIT einen S4 League Bypass schreiben kann.

- Wenn ja dann ist meine zweite Frage wie?
11/03/2013 14:47 alpines#2
Ja und nein zugleich, du hast dich wohl nicht ganz gut ausgedrückt, um den Hackshield zu bypassen musst du reversen und z.B. die Funktionen mit OllyDbg rausfinden, dies anzuwenden geht in C++ aber auch in AutoIt aber ist in C++ häufiger vorzufinden.
11/03/2013 15:16 snow#3
Nein, ein Bypass für XTrap dürfte inzwischen nicht mehr mit AutoIt machbar sein, dafür musst du zu viel im Client patchen, zumindest wenn es ein richtiger Bypass sein soll.
Wenn du nur EnumProcesses nopen willst wie es mal ziemlich populär war, reicht AutoIt, das bringt aber auch nichts.

Im Prinzip kannst du HGWC und XTrap mit AutoIt emulieren, wird aber eine unnötig umständliche Arbeit.
11/03/2013 20:40 YatoDev#4
Quote:
Originally Posted by snow911 View Post
wird aber eine unnötig umständliche Arbeit.
warum ?
11/03/2013 20:46 alpines#5
Du musst die Packets vom Clienten parsen und das richtige natürlich zurückschicken, eventuell kommt noch das Crypten dazu.
11/03/2013 20:48 YatoDev#6
Quote:
Originally Posted by alpines View Post
Du musst die Packets vom Clienten parsen und das richtige natürlich zurückschicken, eventuell kommt noch das Crypten dazu.
In anderen sprachehn nicht ?
Crypten = DllCall und TCP UDP ist sowieso schnell
11/03/2013 21:06 snow#7
Alleine um XTrap zu entfernen, benötigst du bereits eine DLL, die du wohl so nicht mit AutoIt schreiben kannst. :)

Ansonsten benötigst du tatsächlich noch die komplette Encryption / Decryption der Packets, Klassen / Structs / Unions für die Verwaltung der Packets & es gibt ein paar Funktionen bei der Obfuscation der Keep Alives, das kann dann so aussehen:
Code:
*(reinterpret_cast<DWORD *>(keys) + 4 * (((*reinterpret_cast<DWORD *>(receivedBuffer + 0x8 + i)) & 0xFu) % 0xA)) = receivedBuffer[0x02 + i];
- Code, den ich nicht unbedingt gerne in AutoIt schreiben muss.
Geht mit Sicherheit auch, wird aber eine mühevolle Kleinstarbeit.
11/03/2013 21:30 YatoDev#8
Quote:
Originally Posted by snow911 View Post
Alleine um XTrap zu entfernen, benötigst du bereits eine DLL, die du wohl so nicht mit AutoIt schreiben kannst. :)

Code:
*(reinterpret_cast<DWORD *>(keys) + 4 * (((*reinterpret_cast<DWORD *>(receivedBuffer + 0x8 + i)) & 0xFu) % 0xA)) = receivedBuffer[0x02 + i];
- Code, den ich nicht unbedingt gerne in AutoIt schreiben muss.
Geht mit Sicherheit auch, wird aber eine mühevolle Kleinstarbeit.
1.) Was für eine dll ? :o
2.) Warum muss man in autoit denn mehr schreiben als in c++ zb. ?
11/03/2013 22:35 alpines#9
Ich glaube er meint um XTrap zu NOPen.

C++ eignet sich einfach besser dafür, weil eine Encryption + Decryption deutlich schneller geht und performanter ist.
11/03/2013 23:04 YatoDev#10
Quote:
Originally Posted by alpines View Post
Ich glaube er meint um XTrap zu NOPen.

C++ eignet sich einfach besser dafür, weil eine Encryption + Decryption deutlich schneller geht und performanter ist.
ich glaube nicht das man in autoit soviel verlusst hat durch dllcalls ? KA weis nicht ^^
Ich sag auch nichts dagegen das C++ nicht besser wäre aber autoit auszuschließen find ich nicht ok ^^
Meint er mit der .dll daser im prozess sachen verändert ? Das ist sicherlich viel besser und einfacher.....

Ok aber ist da jetzt beim crypten so ein großer unterschied ?
11/03/2013 23:18 alpines#11
Beim Crypten ist ein extremer Unterschied. In MMOs rasen in der Sekunde sehr viele Pakete durch deine Leitung, mit AutoIt kommst du da einfach nicht mehr hinterher, deshalb ist es besser eine Sprache zu nehmen die das schneller kann.

Der Geschwindigkeitsverlust bei AutoIt3 kommt durch den Interpreter zustande:
AutoIt3: AutoIt -> Interpreter -> C++ -> Assembler -> Maschinencode
C++: C++ -> Assembler -> Maschinencode

Ich denk die Anordnung ist so richtig.
11/03/2013 23:52 snow#12
Die Geschwindigkeit ist fast egal, HGWC ist da relativ tolerant.
Und ja, du brauchst ne DLL, um den Prozess zu patchen. Rein theoretisch kannst du das auch mit WriteProcessMemory machen, das ist dann aber ne reine Glückssache, ob es geht oder nicht.
Ich sage ja auch nicht, dass es unmöglich ist, aber jeder der beide Sprachen beherrscht, wird C++ eher als AutoIt für ein solches Projekt verwenden.

Ein weiteres kleines Snippet, das du gerne mit AutoIt programmieren kannst:

Code:
for (BYTE b : MACAddressString)
{
	if (b == BYTE(0x2D))
	{
		p << wchar_t(b);
		continue;
	}

	BYTE upperBits = b;
	upperBits &= ~0xF;
	upperBits >>= 4;
	if (upperBits < 0xA)
		upperBits += 0x30;
	else
		upperBits += 0x41 - 0xA;

	BYTE lowerBits = b;
	lowerBits &= ~(0xF << 4);
	if (lowerBits < 0xA)
	        lowerBits += 0x30;
	else
		lowerBits += 0x41 - 0xA;

	p << wchar_t(upperBits) << wchar_t(lowerBits);
}
Ich weiß nicht, wie es dir dabei geht, aber das ganze Shifting etc. mache ich lieber maschinennah. :D
11/04/2013 00:04 YatoDev#13
Ok ihr habt recht ^^

Hab den Interpret garnicht bedacht bei autoit :o

Bin überzeugt das C++ wesentlich besser wäre als autoit ^^