Hook技术2内存中修改模块开头代码为跳转语句Word格式文档下载.docx

上传人:b****7 文档编号:22587865 上传时间:2023-02-04 格式:DOCX 页数:7 大小:15.07KB
下载 相关 举报
Hook技术2内存中修改模块开头代码为跳转语句Word格式文档下载.docx_第1页
第1页 / 共7页
Hook技术2内存中修改模块开头代码为跳转语句Word格式文档下载.docx_第2页
第2页 / 共7页
Hook技术2内存中修改模块开头代码为跳转语句Word格式文档下载.docx_第3页
第3页 / 共7页
Hook技术2内存中修改模块开头代码为跳转语句Word格式文档下载.docx_第4页
第4页 / 共7页
Hook技术2内存中修改模块开头代码为跳转语句Word格式文档下载.docx_第5页
第5页 / 共7页
点击查看更多>>
下载资源
资源描述

Hook技术2内存中修改模块开头代码为跳转语句Word格式文档下载.docx

《Hook技术2内存中修改模块开头代码为跳转语句Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《Hook技术2内存中修改模块开头代码为跳转语句Word格式文档下载.docx(7页珍藏版)》请在冰豆网上搜索。

Hook技术2内存中修改模块开头代码为跳转语句Word格式文档下载.docx

下面给出一个封装好的类:

//////////////////////////////////////////////////////////

//ULHook.h

#ifndef__ULHOOK_H__

#define__ULHOOK_H__

#include<

windows.h>

classCULHook

{

public:

CULHook(LPSTRpszModName,LPSTRpszFuncName,PROCpfnHook);

~CULHook();

//取消挂钩

voidUnhook();

//重新挂钩

voidRehook();

protected:

PROCm_pfnOrig;

//目标API函数的地址

BYTEm_btNewBytes[8];

//新构建的个字节

BYTEm_btOldBytes[8];

//原来个字节

HMODULEm_hModule;

};

#endif//__ULHOOK_H__

///////////////////////////////////////////

//ULHook.cpp文件

#include"

ULHook.h"

CULHook:

:

CULHook(LPSTRpszModName,LPSTRpszFuncName,PROCpfnHook)

//jmpeax==0xFF,0xE0

//生成新的执行代码

BYTEbtNewBytes[8]={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)

DWORDdwOldProtect;

MEMORY_BASIC_INFORMATIONmbi;

:

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()

Unhook();

if(m_hModule!

FreeLibrary(m_hModule);

voidCULHook:

Unhook()

VirtualQuery(m_pfnOrig,&

mbi,sizeof(mbi));

//写入原来的执行代码

m_btOldBytes,sizeof(DWORD)*2,NULL);

Rehook()

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 党团工作 > 入党转正申请

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1