2017-10-18 93 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()