假设我在名为“Overflow.dll”的 DLL 中有一个名为“Overflow”的函数,但我没有它的 PDB。
我知道我可以获取它以“GetProcAddress”开头的地址,但我能以某种方式获取它结束的地址或其大小吗?
(Windows 中的 C++)
我问这个的原因是我有一个地址,我想知道它是否在我的特定函数内。所以我假设(如果我错了请纠正我)地址在我的函数中,如果:
StartAddress <= 我的地址 <= EndAddress
谢谢:)
最佳答案
So I assume (and please correct me if I'm wrong)
我正在“纠正”。问题是您的函数极不可能在其内部没有函数调用。例如,该位置可能在您的函数调用的 printf
调用内部,但指令指针不会在您的函数本身中。
假设您知道函数中只有一个返回,您可以为 x86 指令实现一个解析器,该解析器查找返回指令以找到结束地址。如果您不知道只有一个返回,那么您需要 PDB。
关于c++ - 没有 PDB 的符号函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4641243/