-
-
[求助]调试老手们, 一个局部对象调用一个接口类的方法后, 自己this被破坏.
-
发表于:
2011-5-14 02:27
4041
-
[求助]调试老手们, 一个局部对象调用一个接口类的方法后, 自己this被破坏.
详细内容: WinXP + VC6.0平台 C++代码.
首先 class A 是一个接口类, 放在一个DLL中, 用DLL中的函数创建返回 class A* 指针使用.
class A
{
...
virtual int Func3(const unsigned char*, int, unsigned char, const char) = 0;
...
}
class Rand 是一个本地类.
{
...
class A* m_pA;
...
};
麻烦如下:
定义一个局部变量(堆栈) Rand R, 在 R 的一个成员函数中在其中使用了 m_pA->Fun3();
结果 m_pA->Fun3() 返回后, R 的 this 指针被破坏了, 注意是 R 的 this 不是 m_pA 的.
我把 R 的 this 指针加入内存断点监视, 地址为 0X0013E57C, 可在 m_pA->Fun3() 运行中, 0X0013E57C指向的内存都没任何变化.
可一返回 R 的 this 指针和其指向的数据成员就全变了, 部分数据成员: CXX0030:Error: expression cannot be evaluated (表达式不能被评估)
我觉得 0X0013E57C 应该就是堆栈中的 R, 实在不知道 R 究竟在内存那里, 谁能告诉我为什么.
总不可能在 m_pA->Fun3() 这函数中监视包含它的 R 的 this 指针, 所以我实在没办法了.
(在DLL中的其它 A 的方法都运行正常)
[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法