ntdll.dll 中不需要的断点!_LdrpSnapThunk@36() + 0xf5 字节

Posted

技术标签:

【中文标题】ntdll.dll 中不需要的断点!_LdrpSnapThunk@36() + 0xf5 字节【英文标题】:Unwanted breakpoint in ntdll.dll!_LdrpSnapThunk@36() + 0xf5 bytes 【发布时间】:2014-05-17 06:39:48 【问题描述】:

我正在以下环境中调试 Outlook 加载项 DLL: 视窗 7 x64 Office 2013 即点即用 x86 视觉工作室 2010 仅限本机 (C++)

“显示加载程序快照”在系统级别和 x86 和 x64 注册表中的 Outlook.exe 均已禁用,并且我已验证任何地方都没有覆盖“GlobalFlag”注册表值。

系统中唯一的“GlobalFlag”值设置为0x00000400(仅FLG_POOL_ENABLE_TAGGING)并且在CurrentControlSet中。

当我将 VS 调试器附加到 OUTLOOK.EXE(我的 DLL 已经加载)时,我可以按预期调试它(符号加载等),但在随机时间我会遇到这个断点,不管我在做什么。

为什么我会在 LdrpSnapThunk 中获得断点?我什至找不到任何选项来设置/启用此类断点(加载程序快照应该只打印调试字符串,而不是导致断点,AFAIK)。

这真的很烦人 - 我在调试时遇到这个断点会随机阻止我。

谢谢!

【问题讨论】:

Google 搜索结果表明 EMET(增强型缓解体验工具包)​​可能与此有关。与您的 LAN 管理员讨论此问题。 可能是这个,我去看看!你能指出确切的结果或搜索词吗?搜索“LdrpSnapThunk emet”(无引号)没有给我相关结果。谢谢! 是的,解决了!以供将来参考 - 您需要在 EMET 的“应用程序配置”窗口中为 OUTLOOK.EXE 关闭“导出地址表访问过滤”(EAF)。 【参考方案1】:

汉斯上面的评论帮助我解决了这个问题。供将来参考 - 您需要在 EMET 的“应用程序配置”窗口中关闭 OUTLOOK.EXE 的“导出地址表访问过滤”(EAF)。

【讨论】:

以上是关于ntdll.dll 中不需要的断点!_LdrpSnapThunk@36() + 0xf5 字节的主要内容,如果未能解决你的问题,请参考以下文章

java与ntdll.dll的关系

Win32环境下从ntdll.dll调用Nt函数,C++

ntdll.dll 没有 PDB 文件

Win32 应用程序是不是自动链接到 ntdll.dll?

读取 ntdll.dll + offset 会导致访问冲突

将用户模式 ​​dll 中的高级函数映射到 NTDLL.dll