2017-10-18 64 views

回答

0

CheckTokenMembership是且始終將由advapi32.dll導出。問題是WinDbg使用符號名稱,如果你有所述模塊的符號。

我會做的是類型bp ADVAPI32!CheckTokenMembership,然後按Tab鍵你應該bp ADVAPI32!CheckTokenMembershipStub結束。這個技巧並不適用於所有事情,有時候你必須自己弄清楚前進方向,或者查看ntdll.dll和kernelbase.dll輸出。

api-文件不包含代碼,它們只是Microsoft出於某種原因強制強制每個人的分層練習。我相信他們是MinWin實驗的結果,他們可能有一天會包含代碼,但即使如此,kernel32和朋友仍然會擁有轉發器來保持兼容性,所以沒有任何理由讓微軟以外的任何人使用api-文件(恕我直言)。

+1

的用戶(和內核)出口分解爲* API-MS - !\ *。dll的*文件是建立API集的一部分。這是一項工程工作,爲Windows在任何*設備上運行奠定了基礎,實質上也就是啓用通用Windows平臺的基礎。它允許在PC,平板電腦,手機,HoloLens,物聯網設備,Xbox等上運行相同的代碼。 – IInspectable

+0

API集一般不作爲真實文件實現。加載器根據apisetschema.dll中的映射將它們映射到實現DLL。 (目前在Windows 10系統中,apisetschema.dll通常是System32中唯一的「api * .dll」文件。)鏈接wth mincore.lib或onecore.lib將使用API​​集。 – eryksun

0

我在崩潰轉儲文件中驗證了advapi32.dll導出CheckTokenMembership函數,因此應該可以設置斷點。在你的場景中,模塊可能還沒有被加載,所以如何嘗試'bu'呢?來自WinDbg的幫助:

  • bu(Set Unresolved Breakpoint)命令設置延遲或未解析的斷點。在斷點位置的符號引用上設置了一個斷點,該斷點位置在命令中指定(不是在地址上),並在具有引用的模塊被解析時激活。有關這些斷點的更多信息,請參閱無法解析的斷點(bu斷點)。

76b51ca2 ADVAPI32 CheckTokenMembership()