高级Hook示例(1)

NTSTATUS __stdcall lfOpenObjectByName(POBJECT_ATTRIBUTES ObjectAttributes, POBJECT_TYPE ObjectType, KPROCESSOR_MODE AccessMode, PACCESS_STATE AccessState, ACCESS_MASK DesiredAccess, PVOID ParseContext, PHANDLE Handle)
{
    NTSTATUS        Status  = STATUS_UNSUCCESSFUL;
    PUCHAR          InstPool= NULL; 
    UNICODE_STRING  ApiName = RTL_CONST_STRING( L"ObOpenObjectByName" );    
    PVOID           _ObOpenObjectByName = MmGetSystemRoutineAddress(&ApiName);
    
    if( _ObOpenObjectByName )
    {
        InstPool = (PUCHAR)ExAllocatePoolWithTag( NonPagedPool, 5, 'x360');        
        if( InstPool )
        {
            *InstPool = 0xC3;
            __asm
            {
                push loc_ret
                push Handle
                push ParseContext
                push DesiredAccess
                push AccessState
                push AccessMode
                push ObjectType
                push ObjectAttributes
                push InstPool
                mov  eax , _ObOpenObjectByName
                jmp  eax
            loc_ret:
                mov  Status, eax
            }
            
            ExFreePoolWithTag( InstPool,'x360' );
        }
    }
    
    return Status;
}

转载于:https://my.oschina.net/ejoyc/blog/93699

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值