李沉舟 发表于 2016-2-28 15:45

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
}


揰掵佲 发表于 2016-2-28 16:47

834914303 发表于 2016-2-28 21:39

看看,支持支持

Shark恒 发表于 2016-2-28 22:28

不错,期待更完美的教程!

kingone 发表于 2016-2-29 01:17

api hook是形式而 头部的inline hook只是手段,例如 导入表 到处表hook 虚表 hook 很多头部hook有点简化apihook了

oysjk 发表于 2017-2-7 11:05

小白没看懂
页: [1]
查看完整版本: APIHOOK学习笔记(一)