-
-
[讨论][讨论]关于获取callstack
-
发表于:
2010-7-16 20:35
6079
-
看到过codeproject上有人的stackwarker, 需要调用dbghlp.dll
来获得callstack信息,
现在自己有个想法,希望有过相应经验的兄弟指点一二:
1). 应用环境是在c++中 并且 callstack信息不需要完全精确
所以我的想法是
2). 在触发需要获得callstack的场景下,调用一个内嵌汇编的函数:
该函数通过ebp回溯eip, 然后根据eip比对函数地址大致确定函数名。
因为不需要十分精确,所以大致上认为该方案有一定的可行性
想法是将代表函数调用的eip纪录下来,事后生成callstack
所以现在的问题是:
1). 如何将eip换算成在模块内的偏移,然后根据该偏移确定是哪个函数
2). 如果 1) 无可行性, 想最本的方法,记录所有函数地址,然后比对,确定callstack
有什么方便的方法获取函数地址么
还有如何获得callstack基地址, 是固定的么?
由于我的kx都用来买邀请码了,就不讲该贴列为悬赏贴了
希望各位大神不吝赐教
谢谢
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!