您的位置:首页 > 其它

批量劫持

2015-08-15 16:50 288 查看

批量劫持

#include<stdio.h>

#include<stdlib.h>

#include"detours.h"

#include<Windows.h>

#pragma comment(lib,"detours.lib")

static int num1(int a, int b)

{

return a + b;

}

static int num2(int a, int b)

{

return a - b;

}

static int num3(int a, int b)

{

return a*b;

}

static int num4(int a, int b)

{

return a / b;

}

int newnum1(int a, int b)

{

printf("\n%d+%d=%d",a,b,a+b);

return a + b;

}

int newnum2(int a, int b)

{

printf("\n%d-%d=%d", a, b, a -b);

return a -b;

}

int newnum3(int a, int b)

{

printf("\n%d*%d=%d", a, b, a *b);

return a * b;

}

int newnum4(int a, int b)

{

printf("\n%d/%d=%d", a, b, a/b);

return a / b;

}

static int(*pold[4])(int a, int b) = { num1, num2, num3, num4 };

int(*pnew[4])(int a, int b) = { newnum1, newnum2, newnum3, newnum4 };

void Hook()

{

DetourRestoreAfterWith();

DetourTransactionBegin();

DetourUpdateThread(GetCurrentThread);

for (int i = 0; i < 4; i++)

{

DetourAttach((void**)&pold[i], &pnew[i]);

}

DetourTransactionCommit();

}

void UnHook()

{

DetourTransactionBegin();

DetourUpdateThread(GetCurrentThread);

for (int i = 0; i < 4; i++)

{

DetourDeAttach((void**)&pold[i], &pnew[i]);

}

DetourTransactionCommit();

}

int main()

{

for (int i = 0; i < 4; i++)

{

printf("\n%d",pold[i](10,2));

}

printf("\n%d", num1(10, 2));

printf("\n%d", num2(10, 2));

printf("\n%d", num3(10, 2));

printf("\n%d", num4(10, 2));

Hook();

printf("\n%d", num1(10,2));

printf("\n%d", num2(10, 2));

printf("\n%d", num3(10, 2));

printf("\n%d", num4(10, 2));

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: