5

J'ai une application Windows exe qui permet d'envoyer des paquets à un serveur en clair. Cette application (appelons-la l'application client) est très proche, mais un hacker malin a édité le binaire et l'a fait envoyer des paquets qui sont brouillés. Maintenant, évidemment, ces paquets sont brouillés d'une manière qui est déchiffrable (sinon le serveur ne serait pas en mesure de le comprendre), mais ce que je voulais faire est d'écrire un émulateur qui émule cette application binaire, en envoyant le mêmes paquets au serveur, et être capable de déchiffrer la réponse (si elle est brouillée).Comment puis-je effectuer le reverse engineering de paquets brouillés dans une application Windows?

Le client hex-ed nécessitait une DLL supplémentaire pour s'exécuter, ce qui n'était pas le cas de l'ancien client. Je suppose qu'en quelque sorte le client hex-ed a réussi à charger cette DLL (appelons-la client.dll) et la fonction de cette DLL est d'implémenter le brouillage/désembrouillage, en accrochant dans certaines fenêtres api qui dérouté tous les paquets envoyés à partir du processus client.exe.

S'il y a quelqu'un qui peut me dire comment commencer à travailler sur comment tout cela fonctionne, et comment je peux inverser le processus, cela serait vraiment apprécié.

Je n'ai aucune idée de ce type d'informations à fournir, mais s'il y en a manquant, il suffit de répondre, et je posterai avec plus de détails, et si quelqu'un veut les binaires, je suis heureux de le fournir.


téléchargement binaire pour toutes les parties intéressées:

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

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

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

Ces wont fonctionnent parce que les fichiers de ressources sont nécessaires - ils sont environ 3 concerts, donc trop grand pour télécharger n'importe où. Les noms ont été changés pour protéger le coupable =), mais cela ne protège probablement pas le nom de la DLL ...

Répondre

3

Je suppose que la personne qui codée ce crochet qui ajoute le cryptage pour le paquet d'E/S pour le programme mentionné ci-dessus a soit accroché les API de prise de fenêtres correspondantes (WSASend, send, etc.) ou accroché les fonctions de programme internes utilisées pour envoyer/recevoir des données.Cela étant dit, je vous suggère d'utiliser un programme de détection de crochet (par exemple, RkUnhooker) pour savoir ce qui est réellement accroché. Une fois que vous savez quelles API sont connectées, vous devez également savoir où vont ces hooks et à partir de là, vous devrez inverser manuellement les fonctions de hook. Pour ce qui est d'apprendre comment faire cela, je ne pourrais pas vous diriger vers un seul tutoriel pour vous apprendre tout mais je vous suggère fortement de regarder le site Tuts4You, il y a une pléthore de tutoriels qui répondraient à tous de vos besoins.

Si possible, téléchargez une copie du client édité & la DLL hook, si j'ai le temps je vais vous coder réplication & des fonctions de décryptage.

+0

merci pour l'offre d'aide - je peux certainement télécharger le binaire et dll si vous le souhaitez, mais vous ne serez pas capable de l'exécuter sans les fichiers de ressources de soutien, qui vient à un solide 3gigs (c'est un client de jeu après tout). Et non, je n'essaie pas de tricher, essayant juste d'imiter le client. – Chii

+1

Il suffit de télécharger une copie du module de crochet, je devrais être en mesure d'extraire les algorithmes de chiffrement et de décryptage de celui-ci. – Irwin

+0

téléchargé, et modifié le message d'origine en bas. à votre santé! – Chii

2

Vous devez accrocher les fonctions exportées par la DLL supplémentaire et regarder dans les fonctions appelées et les paramètres étant passé à eux. Cela ne va pas être facile puisque vous n'avez pas d'informations de type (par exemple les signatures de fonction pour les exportations DLL.)

Regardez here pour obtenir des informations sur l'accrochage API. Vous aurez également besoin d'un bon débogueur essayez Windbg de Microsoft. Autant que je peux voir la seule option que vous avez ici est le test de boîte noire c.-à-d. Donner la contribution connue aux deux systèmes et comparer les réponses l'un contre l'autre pour trouver les différences et les similitudes.

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

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

Maintenant, une fois que vous avez compris comment utiliser les fonctions de la dll supplémentaire que vous pouvez utiliser vous-même de la même manière l'application d'origine fait.

Questions connexes