当前位置: 首页 > wzjs >正文

wordpress分享视频企业网站设计优化公司

wordpress分享视频,企业网站设计优化公司,网络客户服务平台,svg图片做网站背景IAT HOOK 什么是IAT Hook? IAT Hook(Import Address Table Hook,导入地址表钩子)是一种Windows平台下的API钩取技术,通过修改目标程序的导入地址表(IAT)来拦截和重定向API调用 在我们之前学习pe文件结构的导入表时&am…

IAT HOOK


什么是IAT Hook?

IAT Hook(Import Address Table Hook,导入地址表钩子)是一种Windows平台下的API钩取技术,通过修改目标程序的导入地址表(IAT)来拦截和重定向API调用

在我们之前学习pe文件结构的导入表时,有讲到过IMAGE_IMPORT_DESCRIPTOR这个结构体,其中有个FirstThunk参数,这个参数是指在程序运行中,存放着要执行的函数地址

在这里插入图片描述
我们在调用MessageBox这类的函数时,在程序运行时,会把函数的地址放到IAT表当中,我们就是通过修改这个执行的地址来达到我们Hook的目的

我们来代码实践一下

注入的dll模块

#include<iostream>
#include<windows.h>#ifdef _WIN64
#define IMAGE_ORDINAL_FLAG 0x8000000000000000
#else
#define IMAGE_ORDINAL_FLAG 0x80000000
#endifPDWORD_PTR g_pIatEntry = NULL;      // 指向IAT条目
DWORD_PTR g_origMessageBoxW = 0;    // 原始函数地址
DWORD g_dwOldProtect = 0;// 编写我们要替换的函数(hook的函数)
int WINAPI HookMessageBoxW(HWND hWnd, LPCWSTR lpText, LPCWSTR lpCaption, UINT uType) {return MessageBoxA(hWnd, "MessageBox已被Hook!", "HOOK", uType);
}// 安装钩子
BOOL InstallHook() {if (!g_pIatEntry) return FALSE;// 保存原始地址g_origMessageBoxW = *g_pIatEntry;// 修改内存属性,改为可以读可以写,可以执行VirtualProtect(g_pIatEntry, sizeof(PDWORD_PTR), PAGE_EXECUTE_READWRITE, &g_dwOldProtect);// 这里填写我们想要替换的函数的地址*g_pIatEntry = (DWORD_PTR)HookMessageBoxW;// 还原之前的内存属性VirtualProtect(g_pIatEntry, sizeof(PDWORD_PTR), g_dwOldProtect, NULL);return TRUE;
}
// 卸载钩子
BOOL UnInstallHook() {if (!g_pIatEntry || !g_origMessageBoxW) return FALSE;// 修改内存属性,改为可以读可以写,可以执行VirtualProtect(g_pIatEntry, sizeof(PDWORD_PTR), PAGE_EXECUTE_READWRITE, &g_dwOldProtect);*g_pIatEntry = (DWORD_PTR)g_origMessageBoxW;// 还原之前的内存属性VirtualProtect(g_pIatEntry, sizeof(PDWORD_PTR), g_dwOldProtect, NULL);return TRUE;
}PDWORD_PTR GetIatAddr(PCSTR dllName, PCSTR dllFunName) {// 获取当前进程的模块句柄HMODULE hModule = GetModuleHandle(0);DWORD_PTR dwHModule = (DWORD_PTR)hModule;// 获取DOS头PIMAGE_DOS_HEADER pDOsHeader = (PIMAGE_DOS_HEADER)dwHModule;// 获取NT头PIMAGE_NT_HEADERS pNtHeader = (PIMAGE_NT_HEADERS)(dwHModule + pDOsHeader->e_lfanew);// 获取可选PE头PIMAGE_OPTIONAL_HEADER pOptHeader = (PIMAGE_OPTIONAL_HEADER)&pNtHeader->OptionalHeader;// 获取数据目录表PIMAGE_DATA_DIRECTORY pDataDir = (PIMAGE_DATA_DIRECTORY)&pOptHeader->DataDirectory[IMAGE_DIRECTORY_ENTRY_IMPORT];// 在硬盘中需要转换,在内存中不需要转换 获取导入表地址PIMAGE_IMPORT_DESCRIPTOR pImageImportTable = (PIMAGE_IMPORT_DESCRIPTOR)(dwHModule + pDataDir->VirtualAddress);// 遍历导入表获取符合条件的函数while (pImageImportTable->Name) {PCHAR iatDllName = (PCHAR)pImageImportTable->Name + dwHModule;// 找到了我们需要的Hook的dllif (_stricmp(dllName, iatDllName) == 0) {// 获取导入名称表 获取函数名称PIMAGE_THUNK_DATA pThunkINT = (PIMAGE_THUNK_DATA)(dwHModule + pImageImportTable->OriginalFirstThunk);// 获取导入地址表 获取函数地址PIMAGE_THUNK_DATA pThunkIAT = (PIMAGE_THUNK_DATA)(dwHModule + pImageImportTable->FirstThunk);while (pThunkINT->u1.Function) {// 判断是不是按名称来导入的if ((pThunkINT->u1.Ordinal & IMAGE_ORDINAL_FLAG) == 0) {PIMAGE_IMPORT_BY_NAME pImageImportByname = (PIMAGE_IMPORT_BY_NAME)(pThunkINT->u1.Function + dwHModule);// 忽略大小写比较方法名称if (strcmp(dllFunName, pImageImportByname->Name) == 0) {// 找到到函数了返回函数地址return (PDWORD_PTR)pThunkIAT;}}pThunkINT++;pThunkIAT++;}}pImageImportTable++;}
}BOOL WINAPI DllMain(HINSTANCE hInstance, DWORD dwCallReason, LPVOID lpReserved) {if (dwCallReason == DLL_PROCESS_ATTACH) {// 获取ida表函数地址g_pIatEntry = GetIatAddr("user32.dll", "MessageBoxW");InstallHook();}else if (dwCallReason == DLL_PROCESS_DETACH){// 进程退出时卸载钩子UnInstallHook();}return TRUE;
}

我这边提前写好了一个小程序,就是点按钮弹出一个MessageBox消息出来

在这里插入图片描述

我们来Hook掉弹窗中的内容

用到我们之前写dll注入的程序,执行一下

在这里插入图片描述
可以看到,我们已经返了我们修改后的弹窗

注:在MFC或者其他的库中,弹窗的函数可能实际上并不是MessageBoxW,像MFC是对MessageBox又做了一层封装,导致我们Hook不到

http://www.dtcms.com/wzjs/302228.html

相关文章:

  • 网站建设消费者群体分析百度我的订单查询
  • 网站开发可以申请著作权吗惠州seo外包平台
  • 最好的网站建设组织网站建设优化
  • 怎么做网络推广挣钱seo优化人员
  • 济南做html5网站建设百度关键词排名靠前
  • 领英定制通网站建设电商网站设计论文
  • 网站设计与开发实验报告品牌策划包括哪几个方面
  • wampserver做动态网站关键词排名优化报价
  • 高级seo百度seo价格
  • 动漫制作专业的高职实训室疫情二十条优化措施
  • 国外中文网站排行榜单seo引擎优化工具
  • 项目网络由箭线和节点构成seo顾问是什么
  • 网站扫码登录怎么做app开发工具
  • 该怎么做网站编辑主要做什么新媒体营销六种方式
  • 在线图片编辑器好用吗网站页面优化方法
  • 手机端网站模板下载百度宁波运营中心
  • 做网站 请示快速优化系统
  • 即墨网站建设哪家好广告推广赚钱在哪接
  • 建设监督网站如何开通自己的网站
  • 网站展示型和营销型有什么区别百度推广需要多少钱
  • 公司网站建设 wordpress晚上看b站
  • 企业网站制作设seo和sem哪个工资高
  • 做网站卖东西流程3小时百度收录新站方法
  • 传统电商平台有哪些seo基础教程
  • 浙江商会网站建设策划方案互联网网络推广公司
  • 做网站开发要安装哪些软件关键词推广营销
  • 大连做网站的科技公司同城推广有什么平台
  • 网站开发和java二十四个关键词
  • 唯美网站建设网络营销swot分析
  • 赌场网站建站seo关键词排名点击工具