Trouver Les Paramètres De Fonction Dll

Comment puis-je trouver les paramètres d'un sans-papiers fonction de Dll?

j'ai cherché partout sur internet et finit par trouver un moyen: il s'agit décorées fonctions. Cependant, je ne peux pas trouver un moyen de les obtenir.

Toute aide serait appréciée.

17
demandé sur Jean 2008-11-15 08:15:21

7 réponses

vous devez désassembler l'application en utilisant, comme Paul l'a noté, quelque chose comme IDA Pro (ou la version libre de la même chose).

une bonne ressource d'introduction est le Wikibook, x86 désassemblage. Plus précisément, jetez un oeil à la section fonctions et stack frames. La déduction des paramètres de fonction peut être simple pour des fonctions simples en prenant quelques paramètres de type standard.

Probablement la meilleure façon de commencer avec ce genre de chose est de créer un petit DLL test, créer quelques fonctions avec des paramètres connus, puis démonter votre DLL pour voir les modèles. Apprenez le démontage à partir de vos propres fonctions (pour lesquelles vous avez le code source et connaissez la signature complète) plutôt que de vous lancer dans le démontage de choses de tiers.

7
répondu 2008-11-16 07:36:26

j'ai fait une assez approfondie réponse ici, ReactOS est votre meilleur pari, car il semble de nouveau, tout le monde voici un peu décalé.

je fortement décourager tentative de démonter les DLL système.

beaucoup plus aventureux (et je ne crois pas discuté si loin de l'apparence des choses), la technique est d'énumérer le contenu de PDB's.

les fichiers PDB sont des symboles de débogage comme vous le savez peut-être, cependant, Microsoft est tenu, en raison de l'action des affaires anti-trust tribunal, de publier de grandes quantités d'informations non documentées par ailleurs.

des informations entièrement exactes, utilisables et mises à jour pour une quantité massive de L'API Windows est documentée via les fichiers PDB. La convention d'appel, le nombre d'arguments et même les types d'arguments et les noms sont documentés (cependant pas les détails concernant l'utilisation de course:).

passer en revue le SDK DIA, dia2dump est un bon exemple distribué avec Visual Studio, pour approfondir, il fournit également une solution à fonction undécorate, pour parler spécifiquement à votre question.

en outre, kernel32 fournit UnDecorateSymbolName, de sorte que vous pouvez l'utiliser aussi si vous ne souhaitez pas de lien vers les bibliothèques SDK de débogage.

7
répondu RandomNickName42 2017-05-23 11:33:16

la seule façon de le faire est de démonter la fonction et de voir comment elle utilise les registres et la pile. IDA Pro est le meilleur outil pour le faire, mais ce n'est pas quelque chose d'insignifiant.

5
répondu Paul Betts 2008-11-15 05:34:02

est-ce que C'est COM Dll? Si C'est un COM Dll, alors enregistrez-le, utilisez OLE view pour connaître les interfaces et les paramètres.

4
répondu Vinay 2008-11-16 07:24:19

si la seule information que vous avez est le nom de la fonction non-decorée, alors malheureusement il n'est pas possible de déduire les paramètres de la fonction à partir de cela seul.

si vous êtes bon avec l'assemblage, il pourrait être possible de démonter le code de la machine pour la fonction et de l'ingénierie inverse. Mais c'est assez difficile à faire pour toutes les fonctions sauf les plus simples.

1
répondu Greg Hewgill 2008-11-15 05:34:26

Je ne suis pas vraiment familier avec le format PE que Windows utilise, mais je suis assez sûr qu'il n'y a pas de façon très facile de le faire. Si la table de symboles n'a pas été dépouillée, vous pouvez être en mesure de trouver certaines informations (Pas sûr comment Windows stocke les informations de débogage en PE) mais il est presque certain qu'il ne vous aiderait pas avec les types de paramètre. La meilleure chose à faire est de charger la DLL dans un débogueur et de l'expérimenter... surveiller la mémoire brute sur les cadres de la pile, envoyer différents types de variables, etc.

même si vous trouvez une bonne ressource sur les informations de débogage dans un fichier PE, il n'y aura presque certainement pas d'informations pour une fonction privée.

1
répondu Jason Coco 2008-11-15 05:34:37