2009-02-13 13 views
5

Ich habe eine Windows-EXE-App, die zum Senden von Paketen an einen Server im Klartext verwendet. Diese App (wir nennen sie die Client-App) ist definitiv naheliegend, aber einige clevere Hacker haben die Binärdatei hex-editiert und dazu veranlasst, Pakete zu versenden, die verschlüsselt sind.Wie kann ich verschlüsselte Pakete in einer Windows App zurückentwickeln?

Nun, offensichtlich sind diese Pakete in einer Weise verschlüsselt, die entzifferbar ist (sonst würde der Server nicht in der Lage sein, es zu verstehen), aber was ich tun wollte, ist einen Emulator zu schreiben, der diese binäre App emuliert, sendet gleiche Pakete zum Server und in der Lage sein, die Antwort zu entschlüsseln (wenn es verschlüsselt ist).

Der hexadezimale Client benötigt eine zusätzliche DLL, um ausgeführt zu werden, was der alte Client nicht getan hat. Ich gehe davon aus, dass irgendwie der hexadezimale Client es schaffte, diese DLL zu laden (lasst es client.dll nennen), und die Funktion dieser DLL besteht darin, das Scrambeln/Entschlüsseln zu implementieren, indem sie in einige Windows-APIs einwählt, die alle von der client.exe Prozess.

Wenn es jemanden gibt, der mich anleiten kann, wie man überhaupt anfängt zu erarbeiten, wie das alles funktioniert, und wie ich das Scrambing zurückentwickeln kann, würde das wirklich geschätzt werden.

Ich habe keine Ahnung, welche Art von Informationen zu bieten, aber wenn es etwas fehlt, einfach antworten, und ich werde mit mehr Details veröffentlichen, und wenn jemand die Binärdateien will, ich freue mich, es zu liefern.


binären herunterladen für alle Interessenten:

http://dl.getdropbox.com/u/46623/client.dll

http://dl.getdropbox.com/u/46623/newClient.exe

http://dl.getdropbox.com/u/46623/originalClient.exe

Diese laufen wont, weil die Ressourcen-Dateien benötigt werden - sie sind etwa 3 Gigs, so zu groß, um sie überall hochzuladen. Namen wurden geändert, um die Schuldigen zu schützen =), aber das schützt wahrscheinlich nicht den Namen der DLL ...

Antwort

3

Ich gehe davon aus, dass die Person, die diese Haken codiert, die Verschlüsselung zu dem Paket hinzufügt I/O für die zuvor erwähnte Programm entweder der relevanten Windows-Socket-APIs gehakt (WSASend, send, usw.) oder verhakt die internen Programmfunktionen zum Senden/Empfangen von Daten.

Dies wird gesagt, ich würde vorschlagen, Sie verwenden ein Hakenerkennungsprogramm (z. B. RkUnhooker), um herauszufinden, was tatsächlich süchtig ist. Sobald Sie wissen, welche APIs süchtig sind, sollten Sie auch wissen, wohin diese Hooks gehen und von dort an müssen Sie die Hook-Funktionen manuell zurückentwickeln.

Wie für das Thema zu lernen, wie dies zu tun ist, konnte ich Sie nicht nur zu einem Tutorial, um Sie alles lehren, aber ich schlage vor, Sie betrachten die Tuts4You Website, es hat eine Fülle von Tutorials, die alle treffen würde deiner Bedürfnisse.

Wenn möglich, laden Sie eine Kopie des bearbeiteten Clients & die Hook-DLL, wenn ich die Zeit habe, werde ich Sie codieren Replik-Verschlüsselung & Entschlüsselungsfunktionen.

+0

danke für das angebot von hilfe - ich kann sicherlich die binäre und dll hochladen, wenn du magst, aber du wirst nicht in der lage, es ohne die unterstützung ressourcen dateien, die kommt mit einem schweren 3 gigs (es ist ein spiel client immerhin). Und nein, ich versuche nicht zu schummeln, versuche nur, den Kunden nachzuahmen. – Chii

+1

Laden Sie einfach eine Kopie des Hook-Moduls hoch, ich sollte in der Lage sein, die Verschlüsselungs- und Entschlüsselungsalgorithmen daraus zu extrahieren. – Irwin

+0

hochgeladen und bearbeitet den ursprünglichen Beitrag am Ende. Prost! – Chii

2

Sie müssen die Funktionen, die von der zusätzlichen DLL exportiert werden, einhaken und in die Funktionen schauen, die gerufen werden, und die Parameter sind ging zu ihnen. Dies wird nicht einfach sein, da Sie keine Typinformationen haben (z. B. die Funktionssignaturen für die DLL-Exporte.)

Weitere Informationen zum API-Hooking finden Sie unter here. Sie brauchen auch einen guten Debugger versuchen Windbg von Microsoft.

Soweit ich sehen kann, ist die einzige Option, die Sie hier haben, Black Box Testing dh geben Sie bekannten Input für beide Systeme und vergleichen Sie die Antworten gegeneinander, um die Unterschiede und Gemeinsamkeiten zu finden.

 
       +--------------+ 
Input--------->| Original App |--------->Response1 
       +--------------+ 

       +------------+ 
Input--------->| Modded App |--------->Response2 
       +------------+ 

Nun, wenn Sie herausfinden, wie Sie die Funktionen aus der zusätzlichen DLL verwenden Sie es selbst in der gleichen Art und Weise funktioniert die ursprüngliche App verwenden können.