假设我在名为“Overflow.dll”的DLL中有一个名为“溢出”的函数,但我没有它的PDB。
我知道我可以通过“GetProcAddress”获取它开始的地址,但是我能以某种方式得到它结束的地址或它的大小吗?
(Windows中的C ++)
我问这个的原因是我有一个地址,我想知道它是否在我的特定功能中。所以我假设(如果我错了请纠正我),如果出现以下情况,地址就在我的功能中:
StartAddress< =我的地址< = EndAddress
谢谢:)
答案 0 :(得分:0)
所以我假设(如果我错了,请纠正我)
我在“纠正”。问题是你的函数本身没有函数调用的可能性极小。例如,位置可能位于函数调用的printf
调用内,但指令指针不在函数本身中。
您可以为x86指令实现解析器,查找返回指令以查找结束地址,假设您知道函数中只有一个返回值。如果您不知道只有一个返回,那么您需要PDB。