Question

J'ai un petit utilitaire écrit à l'origine dans VS2005.

Je dois faire une petite modification, mais le code source d'une des DLL a été perdu quelque part.

Existe-t-il un outil gratuit ou peu coûteux permettant de procéder au reverse engineering de la DLL en code C ++?

Était-ce utile?

La solution

Le décompilateur Hex-Rays est un excellent outil, mais le code sera assez dur à lire et vous devrez passer beaucoup de temps à procéder au reverse engineering de la totalité de la DLL.

Autres conseils

Vous pouvez également consulter OllyDbg , qui est un débogueur analyseur de niveau assembleur 32 bits. Il est utilisé pour analyser le code binaire dans les scénarios où vous n'avez pas de code source. C'est un débogueur de poids léger. OllyDbg est un shareware permettant de télécharger & amp; utilisez-le gratuitement .. !!

Visitez OllyDbg est la page d'accueil ici

PS: Dans la journée, les pirates ont utilisé SoftICE à partir de NuMega pour le débogage dans un exécutable & amp; saisir un instantané des valeurs des registres. SoftICE était un débogueur avancé. C'était certainement l'outil préféré des crackers. Je ne connais pas le statut actuel du produit. Le site de NuMega ne contenait aucune information à ce sujet. Je l’ai peut-être oublié mais je n’ai pas pu le trouver. Je vous recommande de mettre la main sur une ancienne version (4.0x) de SoftICE & amp; appliquer le correctif Windows XP pour SoftICE. Travailler avec SoftICE est une "expérience".

Pour en savoir plus: Inverser: les secrets de la rétro-ingénierie par Eldad Eilam

Je ne connais pas votre situation exacte ni le niveau de fonctionnalité implémenté par la DLL pour votre application. Mais je dirais que dans la plupart des cas, il serait préférable de réécrire la DLL manquante en fonction des fonctionnalités connues.

Cela est particulièrement vrai si vous avez de la documentation à ce sujet.

Essayer de procéder au reverse engineering du code binaire en assembleur, puis en C ++, puis de le modifier pour fournir les fonctionnalités existantes sera dans la plupart des cas fastidieux et peut-être même impossible.

Si votre petite modification consiste à modifier du texte ou à ignorer certaines routines, vous pouvez utiliser un éditeur hexadécimal ou un désassembleur, mais vous ne pourrez pas voir le code C ++ d'origine, et même si vous trouvez un outil transforme la DLL en code, tous les noms de variables auraient disparu et le désordre serait grand.

Un peu en fonction de votre situation, je voudrais conserver la DLL héritée / binaire en l'état et écrire une DLL wrapper qui changera et / ou ajoutera tout comportement supplémentaire.

L'idée est d'agréger les anciennes fonctionnalités dans une nouvelle DLL qui importe l'ancienne.

Vous devez le faire comme les crackers de jeux et d'applications: utilisez un désassembleur et piratez le code Assembler.

Vous ne pouvez pas transformer la viande en animal et même si vous le pouviez, vous auriez un animal mort: P

SI cela a été fait en .NET, pourquoi ne pas utiliser le réflecteur dotNet.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top