




已阅读5页,还剩14页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Hook技术2 内存中修改模块开头代码为跳转语句这种霸道的技术,一般不推荐使用,除非无奈之下,不妨可以试试。原理也很简单,要导入一个Dll,把它在内存中的代码,前几代改为JUMP 我的函数地址然后,在我的里,再把他的几行代码改回去,把我自己的事做完之后,再调用它,也可以不调用。最后它返回后,又将它的前几行代码改为JUMP。原理非常简单:下面给出一个封装好的类: / ULHook.h #ifndef _ULHOOK_H_#define _ULHOOK_H_ #include class CULHookpublic: CULHook(LPSTR pszModName, LPSTR pszFuncName, PROC pfnHook); CULHook(); / 取消挂钩 void Unhook(); / 重新挂钩 void Rehook();protected: PROC m_pfnOrig; / 目标API函数的地址 BYTE m_btNewBytes8; / 新构建的个字节 BYTE m_btOldBytes8; / 原来个字节 HMODULE m_hModule; #endif / _ULHOOK_H_ / ULHook.cpp文件 #include ULHook.h CULHook:CULHook(LPSTR pszModName, LPSTR pszFuncName, PROC pfnHook) / jmp eax = 0xFF, 0xE0 / 生成新的执行代码 BYTE btNewBytes8 = 0xB8, 0x00, 0x00, 0x40, 0x00, 0xFF, 0xE0, 0x00 ; memcpy(m_btNewBytes, btNewBytes, 8); *(DWORD *)(m_btNewBytes + 1) = (DWORD)pfnHook; / 加载指定模块,取得API函数地址 m_hModule = :LoadLibrary(pszModName); if(m_hModule = NULL) m_pfnOrig = NULL; return; m_pfnOrig = :GetProcAddress(m_hModule, pszFuncName); / 修改原API函数执行代码的前个字节,使它跳向我们的函数 if(m_pfnOrig != NULL) DWORD dwOldProtect; MEMORY_BASIC_INFORMATION mbi; :VirtualQuery( m_pfnOrig, &mbi, sizeof(mbi) ); :VirtualProtect(m_pfnOrig, 8, PAGE_READWRITE, &dwOldProtect); / 保存原来的执行代码 memcpy(m_btOldBytes, m_pfnOrig, 8); / 写入新的执行代码 :WriteProcessMemory(:GetCurrentProcess(), (void *)m_pfnOrig, m_btNewBytes, sizeof(DWORD)*2, NULL); :VirtualProtect(m_pfnOrig, 8, mbi.Protect, 0); CULHook:CULHook() Unhook(); if(m_hModule != NULL) :FreeLibrary(m_hModule); void CULHook:Unhook() if(m_pfnOrig != NULL) DWORD dwOldProtect; MEMORY_BASIC_INFORMATION mbi; :VirtualQuery(m_pfnOrig, &mbi, sizeof(mbi); :VirtualProtect(m_pfnOrig, 8, PAGE_READWRITE, &dwOldProtect); / 写入原来的执行代码 :WriteProcessMemory(:GetCurrentProcess(), (void *)m_pfnOrig, m_btOldBytes, sizeof(DWORD)*2, NULL); :VirtualProtect(m_pfnOrig, 8, mbi.Protect, 0); void CULHook:Rehook() / 修改原API函数执行代码的前个字节,使它跳向我们的函数 if(m_pfnOrig != NULL) DWORD dwOldProtect; MEMORY_BASIC_INFORMATION mbi; :VirtualQuery( m_pfnOrig, &mbi, sizeof(mbi) ); :VirtualProtect(m_pfnOrig, 8, PAGE_READWRITE, &dwOldProtect); / 写入新的执行代码 :WriteProcessMemory(:GetCurrentProces
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年财产保险行业研究报告及未来行业发展趋势预测
- 2025云南保山昌宁县人民医院第二批就业见习人员招聘29人备考练习题库及答案解析
- 2025内蒙古赤峰北方电力职业技术学校招聘教师29人备考练习试题及答案解析
- 2025年车库产权交易合同范本(中介费全免)
- 2025版签约治疗合同协议书-儿童生长发育治疗服务
- 2025年度跨境人民币外币贷款融资协议
- 2025宁波慈溪市保德实验学校公开招聘派遣制工作人员1人考试参考试题及答案解析
- 2025湖南湘潭市大学生乡村医生招聘13人考试参考试题及答案解析
- 2025年甘肃省中材科技(酒泉)风电叶片有限公司招聘(70+人)考试参考试题及答案解析
- 2025年智能工厂临时工聘用及技能培训合同
- 图形动画毕业设计
- 2025年建筑工程-安全员C证-安全员(C证·上海)历年参考题库典型考点含答案解析
- 光伏项目施工组织设计方案
- 2025政府采购评审专家入库题库与答案
- 2025至2030医学混合成像系统行业产业运行态势及投资规划深度研究报告
- 仪表安全知识培训课件
- 2025年三级老年人能力评估师考试题库(附答案)
- 2025年内蒙古交通集团考试笔试试题(含答案)
- 工程设计图纸技术交底
- 低压安全隐患排查
- 学堂在线 高技术与现代局部战争 章节测试答案
评论
0/150
提交评论