如何在api-ms上设置WinDbg中的断点 - *在Windows 10中调用

时间:2017-10-18 00:02:54

标签: winapi windbg

例如,IDA Pro在库api-ms-win-security-base-l1-2-0中显示包含函数CheckTokenMembership的导入表

检查API调用的MSDN信息https://msdn.microsoft.com/en-us/library/windows/desktop/aa376389(v=vs.85).aspx它是否在advapi32.dll中

然而尝试

bp advapi32!CheckTokenMembership

导致错误无法解决'advapi32!CheckTokenMembership'

中的错误

2 个答案:

答案 0 :(得分:1)

CheckTokenMembership始终将由advapi32.dll导出。问题是,如果您有所述模块的符号,WinDbg将使用符号名称。

我要做的是输入bp ADVAPI32!CheckTokenMembership,然后按标签,最后应该输入bp ADVAPI32!CheckTokenMembershipStub。这个技巧并不适用于所有事情,有时候你必须自己弄清楚前进或者看看ntdll.dll和kernelbase.dll导出。

api文件不包含代码,它们只是Microsoft出于某种原因强迫每个人进行的分层练习。我相信它们是MinWin实验的结果,它们可能有一天会包含代码,但即便如此,kernel32和朋友仍然会拥有转发器以保持兼容性,因此Microsoft以外的任何人都没有理由使用api文件(IMHO)。

答案 1 :(得分:0)

我在崩溃转储文件上验证了advapi32.dll导出CheckTokenMembership函数,因此应该可以设置断点。在您的方案中,模块可能尚未加载,那么如何尝试“bu”'代替?来自WinDbg帮助:

  • bu(Set Unresolved Breakpoint)命令设置延迟或未解决的断点。 bu断点设置在对命令中指定的断点位置的符号引用上(而不是在地址上),并且只要解析了带引用的模块,就会激活该断点。有关这些断点的详细信息,请参阅未解决的断点(bu断点)。
  

76b51ca2 advapi32!CheckTokenMembership()

相关问题