Question

Trois doutes 1) Supposons que je reçois la pile d’appel comme ci-dessous

    user32.dll!_InternalCallWinProc@20()  + 0x28 bytes  
user32.dll!_UserCallWinProcCheckWow@32()  + 0xb7 bytes  
user32.dll!_CallWindowProcAorW@24()  + 0x51 bytes   
user32.dll!_CallWindowProcW@20()  + 0x1b bytes  

Maintenant, quels sont les octets mentionnés à la fin de chaque fonction? Comme pour la première instruction, qu'est-ce que 0x28 octets?

2) Comment placer un point d'arrêt sur une dll système Windows sous VS? Dans windbg, je peux rechercher une fonction particulière de la DLL système Windows comme

>x wininet!*funcA*

Avec cette commande, je peux obtenir l'adresse de cette fonction et mettre un point d'arrêt. Puis-je faire la même chose dans Visual Studio?

3) Je n'ai pas le fichier Symbol d'une DLL. La pile d'appels que je reçois lors du désassemblage est

7814XXX0  call        dword ptr [__imp__WindowsFuncA@32 (781EXXXXh)] 

Qu'est-ce que __ imp __ dans la pile d'appels ci-dessus? Est-ce que cela signifie que cette fonction Windows est reliée à une autre DLL?

Était-ce utile?

La solution

1) Il s'agit du décalage d'octet de l'instruction en cours d'exécution dans ce cadre de pile, par rapport au début de la fonction.

2) Saisissez un élément similaire à celui-ci dans la boîte de dialogue Nouveau point d'arrêt:

{,,user32.dll}_SendMessageW@16

16 correspond au nombre d'octets de paramètres attendus par la fonction (sous Win32, il s'agit presque toujours de 4 fois le nombre de paramètres). Le W fait référence à la version Unicode de l'API; utilisez A si vous déboguez une application ANSI.

3) __ imp __ fait référence à la table d'importation DLL - le code du module actuel est redirigé via un JMP dans la DLL Windows réelle. et le symbole __ imp __ fait référence à ce JMP . Ces JMP résident dans une table de la DLL ou du fichier EXE effectuant l'appel.

Autres conseils

Pour la première partie de votre question, les décalages d'octets mentionnés sont la position dans la fonction en cours d'exécution qui a entraîné l'appel ultérieur plus haut dans la pile.

1) Ce sont les décalages du début de la fonction à la ligne en cours d'exécution lors de la création de la trace de pile.

2 & amp; 3 - ne sais pas. Désolé.

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