2017-10-18 12 views
0

Par exemple IDA Pro montre importation tableau contenant CheckTokenMembership de fonction dans la bibliothèque api-ms-win-sécurité-base l1-2-0Comment mettre en Breakpoint WinDbg sur api-ms- * Appels dans Windows 10

Vérification d'information MSDN pour les appels API https://msdn.microsoft.com/en-us/library/windows/desktop/aa376389(v=vs.85).aspx il dit qu'il est en advapi32.dll

Cependant essayer

pb advapi32! CheckTokenMembership

Résultats en erreur Impossible de résoudre l'erreur à 'advapi32! CheckTokenMembership'

Répondre

0

CheckTokenMembership est et sera toujours exporté par advapi32.dll. Le problème est que WinDbg utilise le nom du symbole si vous avez des symboles pour ce module.

Ce que je voudrais faire est de type bp ADVAPI32!CheckTokenMembership puis appuyez sur Tab et vous devriez finir avec bp ADVAPI32!CheckTokenMembershipStub. Cette astuce ne fonctionne pas pour tout, parfois vous devez comprendre le transfert vous-même ou jeter un coup d'œil aux exportations ntdll.dll et kernelbase.dll. Les fichiers api ne contiennent pas de code, ils sont juste un exercice de superposition que Microsoft impose à tout le monde pour une raison quelconque. Je crois qu'ils sont le résultat de l'expérience MinWin et ils pourraient éventuellement contenir du code mais même alors kernel32 et ses amis auront toujours des redirecteurs pour maintenir la compatibilité, donc il n'y a aucune raison pour quiconque en dehors de Microsoft d'utiliser les fichiers (IMHO).

+1

La décomposition des exportations utilisateur (et noyau) en * api-ms -. Fichiers \ * dll * fait partie d'établir des ensembles API. Il s'agit d'un effort d'ingénierie qui jette les bases de l'exécution de Windows sur * tout * périphérique, et c'est essentiellement ce qui permet la plate-forme Windows universelle. Il permet d'exécuter le même code sur un PC, une tablette, un téléphone, HoloLens, un appareil IoT, une Xbox, etc. – IInspectable

+0

Les jeux d'API ne sont généralement pas implémentés en tant que fichiers réels. Le chargeur les mappe à la DLL d'implémentation en fonction du mappage dans apisetschema.dll. (Actuellement sur les systèmes Windows 10, apisetschema.dll est généralement le seul fichier "api * .dll" dans System32.) Lier wth mincore.lib ou onecore.lib utilisera des jeux d'API. – eryksun

0

J'ai vérifié sur un fichier de vidage sur incident que advapi32.dll exporte la fonction CheckTokenMembership, donc la définition d'un point d'arrêt devrait être possible. Il est probable que dans votre scénario le module n'a pas encore été chargé, alors pourquoi ne pas essayer 'bu' à la place? A partir de l'aide WinDbg:

  • La commande bu (Set Unresolved Breakpoint) définit un point d'arrêt différé ou non résolu. Un point d'arrêt bu est défini sur une référence symbolique à l'emplacement du point d'arrêt spécifié dans la commande (pas sur une adresse) et est activé chaque fois que le module avec la référence est résolu. Pour plus d'informations sur ces points d'arrêt, voir Points d'arrêt non résolus (bu Breakpoints).

76b51ca2 advapi32 CheckTokenMembership()