盗窃虚表指针
来源:互联网 发布:多普达s505软件 编辑:程序博客网 时间:2024/06/10 11:24
今天,跟公司的人讨论了一个问题,感觉收益颇丰,故记录下来,以备后用。
问题的大致跟虚表有关,这里的问题主要是利用小技巧窃取虚表指针,达到另类的hook。
#include "stdafx.h"
#include <iostream>
using namespace std;
class A
{
public:
virtual void f()
{
cout<<"A::f"<<endl;
}
private:
int x;
};
class B : public A
{
public:
virtual void f()
{
cout<<"B::f"<<endl;
}
private:
int y;
};
class C
{
public:
virtual void f()
{
cout<<"C::f"<<endl;
}
};
int main(int argc, char* argv[])
{
A* pA = new A;
B* pB = new B;
C* pC = new C;
memcpy(pA, pB, sizeof(A));
memcpy(pC, pB, sizeof(C));
pA->f();
pC->f();
return 0;
}
以上的类A,B, C; 经过memcpy后,B将自己的vptr指针拷贝到了对象A,C的结构中,于是出现了输出:
B::f
B::f
的现象。
由此我们可以想象,假设我们有某个dll和头文件,我们就可以利用这里的机制,来hook自己的成员函数了。为了防止运行时的错误,我们可以引出如下假设。
If(sizeof(C)<=sizeof(B))
{
BYTE __LocateAddress BYTE[sizeof(B)];
……
用的时候,
pC = new (__LoacateAddress) C;
……
memcpy(pC, pB, sizeof(B));
这样,我们就可以万无一失的利用B的虚拟函数了。
}
- 盗窃虚表指针
- 盗窃行为??
- 敏感资料盗窃者
- 判断盗窃者
- hdoj 1015 Safecracker---盗窃贼
- 【动态规划】Dejected Birthday-盗窃
- 方正盗窃源代码,究竟为什么?
- 虚函数表指针、虚基类表指针
- 虚函数表指针、虚基类表指针
- 虚函数表 & 指针
- 虚表指针
- 虚表指针
- 虚表指针初始化
- 远程破解盗窃QQ密码的内幕
- 如何防止木马病毒盗窃QQ密码?
- 教你如何盗窃QQ密码
- 绝密:远程破解盗窃QQ密码
- 小心你的文件被迅雷盗窃!
- 如何使鼠标经过按钮时按钮的图像发生改变
- 凝聚起民族复兴的力量——论伟大的抗震救灾精神-2
- 敏捷开发最佳实践:Model Storming
- ASP.NET 3.5 新特性开发向导实践(附项目源码下载)- Part 2
- 今天在csdn安家
- 盗窃虚表指针
- 漂在孟加拉(二)
- LINQ的经典实例
- 使用CImage加载PNG图片文件
- Mingle初体验
- Java编程那些事儿59——类(二)
- vc++访问javascript(2)--IDispatchEx是动态脚本语言的基础
- subversion服务器两种配置方式所用的配置文件及格式
- 2008-8-3