hook api的一个简单的例子

vc++ 6.0使用dbghelp.dll生成dmp内存转储文件 vc++ 6.0使用dbghelp.dll生成dmp内存转储文件,包含h、lib和dbghelp.dll文件,仅供参考。 立即下载
 

一个简单的console工程,vc6,vc7在win2k pro,server上调试通过.
#include <stdio.h>
#include <windows.h>
#include <Dbghelp.h>
#pragma comment(lib,"Dbghelp.lib")
#pragma comment(lib,"User32.lib")
typedef int (__stdcall *OLD_MessageBox)( HWND hWnd, LPCTSTR lpText, LPCTSTR lpCaption,UINT uType );
OLD_MessageBox g_procOldMessageBox = NULL;
int __stdcall HOOK_MessageBox( HWND hWnd, LPCTSTR lpText, LPCTSTR lpCaption,UINT uType)
{
 printf("%s/t%d/r/n",__FUNCTION__,__LINE__);
 if (NULL != g_procOldMessageBox)
  return g_procOldMessageBox(hWnd,lpText,"不好意思,hook到了!",uType); 
 else
  return MessageBox(hWnd,lpText,lpCaption,uType); ;
}

int replace_IAT(const char *pDllName,const char *pApiName,bool bReplace)
{
 HANDLE hProcess = ::GetModuleHandle (NULL);
 DWORD dwSize = 0;
 PIMAGE_IMPORT_DESCRIPTOR pImageImport = (PIMAGE_IMPORT_DESCRIPTOR)ImageDirectoryEntryToData(hProcess,TRUE,
  IMAGE_DIRECTORY_ENTRY_IMPORT,&dwSize);
 if (NULL == pImageImport)
  return 1;
 PIMAGE_IMPORT_BY_NAME pImageImportByName = NULL;
 PIMAGE_THUNK_DATA  pImageThunkOriginal = NULL;
 PIMAGE_THUNK_DATA  pImageThunkReal  = NULL;
 while (pImageImport->Name)
 {
  if (0 == strcmpi((char*)((PBYTE)hProcess+pImageImport->Name),pDllName))
  {
   break;
  }
  ++pImageImport;
 }
 if (! pImageImport->Name)
  return 2;
 pImageThunkOriginal = (PIMAGE_THUNK_DATA)((PBYTE)hProcess+pImageImport->OriginalFirstThunk  );
 pImageThunkReal = (PIMAGE_THUNK_DATA)((PBYTE)hProcess+pImageImport->FirstThunk   );
 while (pImageThunkOriginal->u1.Function)
 {
  if ((pImageThunkOriginal->u1 .Ordinal & IMAGE_ORDINAL_FLAG) != IMAGE_ORDINAL_FLAG)
  {
   pImageImportByName = (PIMAGE_IMPORT_BY_NAME)((PBYTE)hProcess+pImageThunkOriginal->u1 .AddressOfData );
   if (0 == strcmpi(pApiName,(char*)pImageImportByName->Name))
   {
    MEMORY_BASIC_INFORMATION mbi_thunk;
    VirtualQuery(pImageThunkReal, &mbi_thunk, sizeof(MEMORY_BASIC_INFORMATION));
    VirtualProtect(mbi_thunk.BaseAddress,mbi_thunk.RegionSize, PAGE_READWRITE, &mbi_thunk.Protect);
    if (true == bReplace)
    {
     g_procOldMessageBox =(OLD_MessageBox) pImageThunkReal->u1.Function;
     pImageThunkReal->u1.Function = (DWORD)HOOK_MessageBox;
    }
    else
     pImageThunkReal->u1.Function = (DWORD)g_procOldMessageBox;
    DWORD dwOldProtect;
    VirtualProtect(mbi_thunk.BaseAddress, mbi_thunk.RegionSize, mbi_thunk.Protect, &dwOldProtect);
    break;
   }
  }
  ++pImageThunkOriginal;
  ++pImageThunkReal;
 }
 return 0;
}
int main()
{
 replace_IAT("User32.dll","MessageBoxA",true);
 MessageBox(NULL,"EnumIAT User32.dll MessageBoxA true;","",MB_OK);
 replace_IAT("User32.dll","MessageBoxA",false);
 MessageBox(NULL,"EnumIAT User32.dll MessageBoxA false;","",MB_OK);
 return getchar();
}

dbghelp.h 使用dbghelp.dll生成dmp内存转储文件 立即下载

相关推荐

hook一个实现API拦截的具体例子学习钩子的实例

hook一个实现API拦截的具体例子学习钩子的实例,新手可以快速上手哦 解压密码:http://www.99616.net/

VC6下使用dbghelp及注意事项

VC6环境下如果没有安装WDK或WINDBGTOOLS

nbabn的专栏 3589

简单的api hook

这是一个关于api hook的小程序,C++,VC6.0,源代码

hook api的一个自己写的例子

帮同学写了个hook api的例子程序,顺便post到这儿,免得将来到处找.一个简单的console工程,vc6,vc7在win2k pro,server上调试通过.#include #include #include #pragma comment(lib,"Dbghelp.lib")#pragma comment(lib,"User32.lib")typedef int (__stdcall

ZHENG017的专栏 1741

Vitis HLS 学习指南与实践教程

Vitis HLS 学习指南与实践教程摘要:本文系统介绍了AMD Vitis HLS工具及其应用。HLS技术将C/C++代码自动转换为硬件描述语言,显著提升FPGA开发效率(5-10倍)。文章对比了HLS与传统RTL设计的优势,包括抽象级别高、开发周期短、代码重用性强等特点。详细讲解了Vitis HLS工具链的核心功能,包括支持的C/C++特性(如任意精度数据类型)、开发流程(项目创建-代码编写-仿真-综合)以及关键优化技术(流水线、循环展开、数组分割等编译指示)。通过具体代码示例展示了HLS设计方法,为F

weixin_44707118的博客 1401

夸克缓存视频合并小工具

原理 使用windows的命令行的copy命令来合并 copy /b 0+1+2+3 new.ts 分析缓存目录结构,发现都是一个m3u8文件带一个同名文件夹 所以分析m3u8并把原来的路径换成这个缓存文件夹路径并按顺序合并即可。 其中碰到的难点是Qprocess在windows不好使,索性直接存成.bat批处理文件再执行 还有就是中文问题,具体在代码里都说了。 代码 (环境Qt5.7.0) 这是mainwindow.h #ifndef MAINWINDOW_H #defin.

natural_Caduceus 1万+

VC6中实现__FUNCTION__(VC6 在函数体内获取函数名)

这篇文章综合了我在网上找到的一些相关文章这里整理一下:     在VC6以后的VS版本中可以在函数体内 通过 __FUNCSIG__ 等方式获取函数的名字; 但是在VC6中要自己实现,以下是我找到的方法: 方法1: #pragma once #include

chinabinlang的专栏 9088

基于PID的定速巡航控制系统设计【MATLAB源码+Word文档】

本文详细介绍了定速巡航控制是一种车辆驾驶辅助系统,它能让驾驶者在高速或长途驾驶时,设定一个固定的车速,然后车辆会自动维持这个速度行驶,无需驾驶者持续踩油门。这大大减轻了驾驶者的疲劳,同时也提高了行驶的安全性。PID定速巡航控制系统是一种利用比例(Proportional)、积分(Integral)和微分(Derivative)控制算法来实现车辆定速巡航的先进系统。这种系统能够根据设定的速度,自动调整油门开度或制动力度,使车辆保持恒定的速度行驶。这种控制系统具有响应速度快、控制精度高、稳定性好等优点。

weixin_761237174的博客 1667

php api 接口 hook,PHP的HOOK简单例子

PHP中函数的hook不像windows里面的api函数hook,它的本质其实就是调用PHP的call_user_func。下面看个例子function nowamagic($a,$b){echo $a;echo $b;}call_user_func('nowamagic', "111","222");call_user_func('nowamagic', "333","444");//显示 11...

weixin_33166692的博客 247

告别深度学习!用5个麦克风搞定多说话人分离:ReTM算法保姆级教程

本文详细介绍了ReTM算法,这是一种无需深度学习、仅需5个麦克风即可实现多说话人语音分离的创新信号处理方法。它通过估计相对传递矩阵,利用空间物理信息在混响环境中分离语音,具有数据需求低、计算复杂度小、无需先验几何信息等优势,特别适合嵌入式设备和资源受限场景。

desk3的博客 156

手把手教你用示波器实测CAN总线波形:快速区分高速、低速及常见故障

本文详细介绍了如何使用示波器实测CAN总线波形,快速区分高速CAN总线和低速CAN总线,并诊断常见故障。通过实战案例和波形分析,帮助工程师掌握CAN总线信号特征,提升故障排查效率,适用于汽车电子和工业控制领域。

weixin_33217202的博客 409

api hook 例子

  DLL主单元代码:------------------------------------------------------------------------------------------------------------------library hookDll;uses  SysUtils,  windows,  Classes,  unitHook in u

hack_wg的专栏 1050

GPIB通讯的代码怎么写

GPIB(General Purpose Interface Bus)是一种用于连接计算机和测试设备的接口标准。 在写 GPIB 通讯的代码时,首先需要在计算机上安装 GPIB 驱动程序。然后,使用相应的编程语言和 GPIB 库函数来操作 GPIB 设备。 下面是一个使用 Python 语言和 pyvisa 库来实现 GPIB 通讯的示例代码: import visa# 创建 Visa 资源管理器...

weixin_35752645的博客 1545

一个API HOOK的例子

一个API HOOK的例子 2010年07月20日   /* 编译环境 VC++6.0 WIN2K/WINXP,工程类型WIN32 APP,编译参数见最后的说明 */   #include   #include /*线程操作API*/   HINSTANCE hInst;/* 任务实例ID */   HWND MainFrmhWnd; /* 主窗口句柄 */...

ukn660dm 192

机器人在果园内行巡检仿真(2D雷达、realsense相机)

DiffBot是一种具有两个轮子的自主差动驱动机器人。它的主要处理单元是一个运行Ubuntu Mate 20.04和ROS 1 (ROS Noetic)中间件的Raspberry pi4b。该存储库包含ROS驱动包、真实机器人的ROS控制硬件接口和模拟DiffBot的配置。修改配置文件orchard_world.launch。

如果想成为中心,那么就到中心去吧。 1311

倍福控制第三方伺服走CSV模式--以汇川伺服为例

在使用TwinCAT软件控制标准CiA402协议的EtherCAT伺服时使用TwinCAT软件NC自带的运动控制指令控制伺服,此时伺服驱动器一般工作在CSP/CSV/CST模式。最常见伺服驱动器工作在CSP模式,轨迹规划运行在TwinCAT软件,位置环速度环电流环运行在伺服驱动器中。该模式下速度波动较大,需要极度平稳的速度需要采用CSV模式。本文讲述的是伺服驱动器工作在CSV模式,此时轨迹规划和位置环均运行在TwinCAT软件,速度环电流环运行在伺服驱动器中。为了简化文字描述,本文采用图文结合的方式介绍伺服

weixin_41883890的博客 4847

hook api 例子(转)

hook api的一例子 C+/VC [ 2008-7-30 22:33:00 | 发表者 : zihe ]帮同学写了个hook api的例子程序,顺便post到这儿,免得将来到处找.一个简单的console工程,vc6,vc7在win2k pro,server上调试通过.#include #include #include #pragma comment(lib,

hello1979cn的专栏 695

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

通过windbg 得到我们要 hook 的api 地址的方法以及 hook NtOpenProcess 的例子。。。

今天,突然想对 hook 进行一些学习,因为对于一些底层的操作,都是在于ANTI-HOOK 。。。然后才能得到最后的使用权,为此,自己也要掌握这种很强大的编程手法,那么首先,我们应该知道的一些是,在 win2000 以后,对于 SSDT 的操作,系统都是写了保护的,那么我们首先应该做的是怎么样来解除掉它们,替换我们的执行地址,当然在这里,我们必须要知道这个结构:typedef stru

xum2008的专栏 3003

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

跑了一下hook api的例子,不行

来自于《windows核心编程》就是不行:(看了一下网上的文章,中文的编译都不通过。俄文的我看不懂。

redguardtoo的专栏 1276

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

delphi - api hook 例子,截获封包(转载)

有时候我们需要对其它应用程序发送和接收的网络数据进行拦截,比如要对IE发送的HTTP头进行分析,得到请求的地址等.这次我们可以用一些例如WPE, Sniffer之类的工具来达到目的.但是工具功能有限,要想实现更强大的功能,还是我们自己动手来DIY吧.      拦截网络数据封包的方法有三种,一是将网卡设为混杂模式,这次就可以监视到局域网上所有的数据包,二是HOOK目标进程的发送和接收的API函数,

hack_wg的专栏 4496

Hook API相关技术以及例子,Hook API的原理其实是通过核心函数强制修改原API的头部指针

Hook API的原理其实是通过核心函数强制修改原API的头部指针,使其无条件跳转到自定义函数指针来实现的,如果学过汇编原理,其实就是jmp xxxlibrary HookComPort;uses  Windows,  SysUtils,  Classes;type  TCreateFile = function(lpFileName: PAnsiChar; dwDesiredAcce

乱弹的专栏 954

api hook 例子,截获封包(转载)

api hook 例子,截获封包(转载) api hook 例子,截获封包(转载) 有时候我们需要对其它应用程序发送和接收的网络数据进行拦截,比如要对IE发送的HTTP头进行分析,得到请求的地址等.这次我们可以用一些例如WPE, Sniffer之类的工具来达到目的.但是工具功能有限,要想实现更强大的功能,还是我们自己动手来DIY吧....

weixin_30622107的博客 182

hook api的一例子 C+/VC

 hook api的一例子 C+/VC[ 2008-7-30 22:33:00 | 发表者 : zihe ]帮同学写了个hook api的例子程序,顺便post到这儿,免得将来到处找.一个简单的console工程,vc6,vc7在win2k pro,server上调试通过.#include #include #include #pragma comment(lib,"dbghelp.lib")#p

1178

APIHOOK VC 6.0 源程序例子

 APIHOOK VC 源程序例子, 其实也只是参考了别人的研究,Copy 了别人的代码而已。当然大家也可以完全使用我的所有代码。很久没有写东西。所以只能这样将就的搞一点东西上来。另外,以前几篇文章里面提供的源程序或者是图像URL 都无效了。我已经改好了。本例子里面实现了对TextOut 这个API 的hook另外如何实现其他API, 可以自己参考这个方法:void CTestAP

阿呆 - 音乐是流动的字符,字符是沉睡的阿呆 2241
上一篇: 详谈HOOK API的技术
下一篇: 从printf谈可变参数函数的实现
ShenRui
博客等级 码龄20年 63粉丝 36原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值