游戏外挂设计方法(14)

发布时间:2021-06-07

游戏外挂设计方法

(DWORD)(pImportDesc->FirstThunk));

//循环查找被截API函数的IAT项,并使用替代函数地址修改其值。

while(pOrigThunk->u1.Function)

{

//检测此Thunk是否为IAT项。

if((pOrigThunk->u1.Ordinal & IMAGE_ORDINAL_FLAG) != IMAGE_ORDINAL_FLAG)

{

//获取此IAT项所描述的函数名称。

PIMAGE_IMPORT_BY_NAME pByName =(PIMAGE_IMPORT_BY_NAME)((DWORD)hModule+(DWORD)(pOrigThunk->u1.AddressOfData)); if(pByName->Name[0] == '\0') return FALSE;

//检测是否为挡截函数。

if(strcmpi(pHookApi->szFunc, (char*)pByName->Name) == 0)

{

MEMORY_BASIC_INformATION mbi_thunk;

//查询修改页的信息。

VirtualQuery(pRealThunk, &mbi_thunk, sizeof(MEMORY_BASIC_INformATION)); //改变修改页保护属性为PAGE_READWRITE。

VirtualProtect(mbi_thunk.BaseAddress,mbi_thunk.RegionSize, PAGE_READWRITE,

&mbi_thunk.Protect);

//保存原来的API函数地址。

if(pHookApi->pOldProc == NULL)

pHookApi->pOldProc = (PROC)pRealThunk->u1.Function;

//修改API函数IAT项内容为替代函数地址。

pRealThunk->u1.Function = (PDWORD)pHookApi->pNewProc;

//恢复修改页保护属性。

DWORD dwOldProtect;

&dwOldProtect);

}

}

pOrigThunk++;

pRealThunk++;

}

SetLastError(ERROR_SUCCESS); //设置错误为ERROR_SUCCESS,表示成功。

return TRUE;

}

(4) 定义替代函数,此实例中只给MessageBoxA和recv两个API进行挡截。代码如下:

static int WINAPI MessageBoxA1 (HWND hWnd , LPCTSTR lpText, LPCTSTR lpCaption, UINT VirtualProtect(mbi_thunk.BaseAddress, mbi_thunk.RegionSize, mbi_thunk.Protect,

游戏外挂设计方法(14).doc 将本文的Word文档下载到电脑

精彩图片

热门精选

大家正在看

× 游客快捷下载通道(下载后可以自由复制和排版)

限时特价:7 元/份 原价:20元

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219