VEH HOOK

VEH实现不修改代码HOOK函数,基本原理:在对应函数上触发异常(0xCC,硬件断点)然后VEH处理异常实现HOOK

异常处理函数,修改传入的参数值

LONG CALLBACK VEH2(struct _EXCEPTION_POINTERS* pEP){
    printf(("VEH2 Do something HOOK\n"));
    //以下的注释,可以取消以观察不同的输出结果
    if ((STATUS_SINGLE_STEP == pEP->ExceptionRecord->ExceptionCode) && pEP->ContextRecord->Eip == (DWORD)MessageBoxA){
    	pEP->ContextRecord->Eip += 2; //jmp mov edi,edi
    	DWORD	*pStack = (DWORD*)pEP->ContextRecord->Esp;
    	pStack[1] = 0;
    	pStack[2] = (DWORD)&"hooked!";
    	pStack[3] = (DWORD)&"caption hook";
    	for(int i=0;i<10;i++)
    	{
    		printf("%08x\n",pStack[i]);
    	}
    	
        return EXCEPTION_CONTINUE_EXECUTION;
    }
    return EXCEPTION_CONTINUE_SEARCH;
}
PVECTORED_LIST p_veh_list = (PVECTORED_LIST)AddVectoredExceptionHandler(0,VEH2);
auto hX3 = SetHardwareBreakpoint(GetCurrentThread(),HWBRK_TYPE_CODE,HWBRK_SIZE_1,MessageBoxA);
MessageBoxA(NULL,"test","hkbreak",0);//触发异常

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值