Archive for Sep. 2011

MW2 Bot in C# – Teil 9

In Teil 9 geht es um einen Aimbot bzw. genauer gesagt eine Aimbot-Implementation. Die genaue Mathematik wird zwar nicht ausgelassen, aber nur angeschnitten.

Im Grunde genommen gibt es zwei Arten einen Aimbot zu schreiben:

  1. Man holt sich per GetTagPos() die Position des Kopfes, wandelt den Vector3 in Screenkoordinaten (Vector2) um und verwendet SetCursorPos() der WindowsAPI auf den Punkt an. Das entspricht einer “Mausbewegung” zum Gegner.
  2. Man verwendet etwas Vector-Mathematik und rechnet den Winkel von Pos1 (eigene Pos) zu Pos2 (Gegnerpos) aus. Nun addiert man diesen Differenzwinkel dem eigenen ViewAngle hinzu und schon aimed man auf das Ziel.

In diesem Artikel wird Methode 2 verwendet, da es einfach präziser und sauberer ist. Am Rand: Mein erster Versuch für einen MW2 Bot mit einem DirectX Overlay hat Methode 1 verwendet ;-)

Nachdem meine tollen Paint-Skillz versagt haben muss nun ein Bild herhalten. Eigentlich wollte ich das ganze über ein 3D-Koordinatensystem illustrieren… Wie immer sollte man sich das Bild nicht nur verkleinert anschauen ;-)

Oben links sind Debugausgaben zu sehen, u.a. auch meine aktuellen ViewAngles. Dabei befindet sich die Y-Achse exakt gerade aus (parallel zum Boden) und der X-Wert zeigt nach “Norden”.

Weiterlesen

3 people like this post.

Deobfuscation .NET

In diesem Post beschreibe ich meine Versuche zum .NET Metaformat mit dem Ziel einen kleinen Deobfuscator zu schreiben. Das ganze hört sich villeicht am Anfang relativ langweilig an, aber wer sich ein bisschen für .NET Reversing intressiert wird da sowieso nicht drumrum kommen :P

Ich werde in diesem Post NICHT irgendwelche Sachen bezüglich dem Metaformat erklären und wenn überhaupt nur anschneiden, denn das können andere viel besser, präziser und ausführlicher. Sondern dieser Post wird sich auf die persönlichen Erfahrungen beziehen, die ich in den letzen Wochen gemacht habe.

Wenn man etwas umgehen und reversen möchte, so muss man das System natürlich extremst gut kennen. SQL-Injections gehen nicht ohne gute (My)SQL-Kentnisse, einen Bufferoverflow kann man nicht schreiben wenn man keine Ahung hat was ein Stack ist. Und so ist es auch mit .NET. Daher begann ich mich in das “Hinter die Kulissen” einer .NET Anwendung einzuarbeiten.

Als Einstieg benutze ich die Anatomy of a .NET Assembly, geschrieben von Simon Cooper, einem Mitentwickler des Redgate .NET Reflectors. Paralell dazu verfolgte ich alles gelesene im CFF Explorer, ein einzigartiges Tool um in .NET Dateien hineinzu schauen. Nachdem soweit alle Grundlagen saßen, wurde der geniale Artikel The .NET File Format als Referenz zum Programmieren benutzt. Der Artikel ist übrigens vom Autor des CFF Explorers. Alternativ kann man sich die offizielle .NET Metadata Referenz von Microsoft anschauen, von dieser ich persönlich mir allerdings nicht viel abgewinnen konnte…

Weiterlesen

11 people like this post.