APIHOOK学习笔记(一)
啥是APIHOOK?说白了APIHOOK就是把一个过程的头部代码改成jmp,跳转到另一个过程,该技术也被广泛应用。用C++写一个简单的APIHOOK(小弟C++水平不高,代码写的不好请见谅)
#include <iostream>
#include <windows.h>
using namespace std;
void sub1(){cout << "I come from sub1";}
void sub2(){cout << "I come from sub2";}
int main()
{
int addr = int(&sub2); ///在这里取出sub2的头部地址
unsigned char code = {184,0,0,0,0,255,224};///mov eax,0000 jmp eax
///184是mov eax的机器码,后面跟4个0是它的第二个参数
unsigned char addrr = {0,0,0,0};///留一个缓冲区,等下把addr转换成unsigned char数组
memcpy(addrr,&addr,4); ///把int地址转换为char数据,便于赋值,就是把addr拷贝到addrr数组
///设置mov eax,的第二个参数,也就是sub2的首地址
code = addrr;
code = addrr;
code = addrr;
code = addrr;
///结束设置
WriteProcessMemory((HANDLE)-1,&sub1,code,7,0); ///把sub1的子程序头改写成mov eax,sub2 jmp eax
sub1();///调用sub1就相当于调用了sub2
}
看看,支持支持 不错,期待更完美的教程! api hook是形式而 头部的inline hook只是手段,例如 导入表 到处表hook 虚表 hook 很多头部hook有点简化apihook了 小白没看懂
页:
[1]