gpt4 book ai didi

c++ - 什么是 RtlPcToFileHeader?

转载 作者:可可西里 更新时间:2023-11-01 11:14:46 48 4
gpt4 key购买 nike

我正在使用 VerySleepy 0.7 分析应用程序。该应用程序使用 C++ 和 Qt 4.6.x 编写,使用 VS 2005 编译并在 Windows 7 Ultimate x64 上运行。

目前使用率最高的是调用 RtlPcToFileHeader

Exclusive Inclusive %Exclusive %Inclusive Module
33.67s 33.67s 15.13% 15.13% ntdll

从文档中我不清楚 RtlPcToFileHeader 是什么,但因为它在“错误处理函数”下被引用,所以它似乎不应该存在。话虽这么说,因为它基本上在我的分析捕获过程中一直在使用,所以它也可能是一些非常基本的函数调用(即类似 main 的东西)或分析本身的副作用。

RtlPcToFileHeader 函数的用途是什么?

更新:根据 Mike 的建议,我确实进入了正在运行的进程,并且有几次它在堆栈跟踪中包含 RtlPcToFileHeader,它似乎以某种方式与 dynamic_cast 相关联。我还更改为问题,以更好地反射(reflect)我正在尝试确定 RtlPcToFileHeader 的实际作用。

最佳答案

以下 MSDN 帖子暗示 Microsoft 的 RTTI 例程的 x64 实现(在 dynamic_cast 期间调用)比 x86 慢。

http://blogs.msdn.com/b/junfeng/archive/2006/10/17/dynamic-cast-is-slow-in-x64.aspx

这些 64 位系统上的 RTTI 指针似乎只是模块基地址的偏移量。要解除对它们的引用,您需要模块基地址——它由 API 函数::RtlPcToFileHeader() 检索。

如果这是正确的,那么您似乎对此无能为力,只能重构您的代码以尽量减少使用 dynamic_casts 并更多地依赖虚拟方法。或者它可能只是分析器的一个缺陷——它在 dynamic_casts 中丢失了?

关于c++ - 什么是 RtlPcToFileHeader?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3959403/

48 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com