ATL Thunk机制的一个例子
来源:互联网 发布:ug编程和模具设计 编辑:程序博客网 时间:2024/05/19 01:29
转自:http://blog.csdn.net/tttyd/article/details/4562233
//涂远东 2009 09 17 深圳//声明函数类型。typedef void (*TESTFUN)(void*);//定义修改代码的结构。#pragma pack(push,1)struct Thunk{DWORD m_mov; // 修改参数指令DWORD m_this; //修改后的参数BYTE m_jmp;// jmp TESTFUN,跳转指令。DWORD m_relproc;// relative jmp,相对跳转的位置。//初始化跳转代码。void Init(TESTFUN pFun, void* pThis){//设置参数指令m_mov = 0x042444C7; //C7 44 24 0C//设置修改后的参数m_this = PtrToUlong(pThis);//设置跳转指针。m_jmp = 0xe9;//设置跳转的相对地址。m_relproc = (int)pFun - ((int)this+sizeof(Thunk));//把CPU里的缓冲数据写到主内存。FlushInstructionCache(GetCurrentProcess(),this, sizeof(Thunk));}};#pragma pack(pop)//测试动态修改内存里的指令数据。class CTest{public://保存动态修改代码的内存。Thunk m_Thunk;//真实运行的函数。static void TestFun(void* p){CTest* pTest = (CTest*)p;pTest->Print();}void Print(){printf("这里仅仅是一个测试/n TestFun函数的参数被修改了/n");}};int main(int argc, char* argv[]){//如下调用这个类://测试运行。CTest Test;Test.m_Thunk.Init(Test.TestFun,&Test);TESTFUN pTestFun = (TESTFUN)&(Test.m_Thunk);char* psz = "test";pTestFun((void*)psz); return 0;}
- ATL Thunk机制的一个例子
- ATL thunk机制
- ATL Thunk机制学习
- ATL thunk机制
- ATL中的Thunk机制学习
- ATL中的Thunk机制学习
- 一个简单的ATL的例子
- 一个简单的ATL的例子 url
- ATL之thunk技术
- Thunk 技术的一个改进
- Thunk 技术的一个改进
- Thunk 技术的一个改进
- Thunk 技术的一个改进
- ATL Thunk技术简单解析
- Thunk 技术的一个改进(转)
- atl的一个问题
- 几句话概括atl thunk技术
- 一个利用java反射机制的例子
- jsp写css
- iOS中使用自定义字体
- 博弈
- 爱是永久相思情
- 玩转 Android MediaPlayer之视频预加载(优化)
- ATL Thunk机制的一个例子
- 关于MVC中返回JSON格式数据提示下载的问题
- FastDFS--原理篇
- Android推送参考资源
- MTK编译笔记
- 我们都一样
- 为什么曹操能号令诸侯?
- Hash算法
- 给Super-smack的gen-data程序添加time格式支持