首页
社区
课程
招聘
[求助]inlinehook如何使用参数
发表于: 2015-5-6 21:09 3859

[求助]inlinehook如何使用参数

2015-5-6 21:09
3859
在linlinehook的时候读取如何读取参数

NTSTATUS __declspec(naked)(__stdcall MyNtOpenProcess)(
                                                    PHANDLE ProcessHandle,
                                                                                                ACCESS_MASK DesiredAccess,
                                                                                                POBJECT_ATTRIBUTES ObjectAttributes,
                                                                                                PCLIENT_ID ClientId)
{

        if( ClientId != NULL )
        {
           if(ClientId->UniqueProcess!=NULL)
           {
                   if(ClientId->UniqueProcess==MyPID)
                   {
                                ProcessHandle = NULL; //这个是关键
                        __asm
                                {
                                        retn 0x10   //执行保护后的返回
                                }
                   }
           }

        }

        __asm
        {
                push  0x0C4
                mov edx,RealNtOpenProcess
                add edx,5
                jmp edx
        }

}

if(ClientId->UniqueProcess!=NULL)

这句老是出问题,<Memory access error>,一分钟左右崩溃,如何解决了,弄了好久了。

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 60
活跃值: (444)
能力值: ( LV5,RANK:65 )
在线值:
发帖
回帖
粉丝
2
解决了,不能直接访问,需要用寄存器
2015-5-7 20:31
0
雪    币: 6911
活跃值: (9074)
能力值: ( LV17,RANK:797 )
在线值:
发帖
回帖
粉丝
3
可以直接访问吧?

你看看这段代码吧。

char *pMessageBoxA;
DWORD caller;
int WINAPI _MessageBox(
    HWND hWnd,          // handle of owner window
    LPCTSTR lpText,     // address of text in message box
    LPCTSTR lpCaption,  // address of title of message box
    UINT uType          // style of message box
    )
{   
    _asm{push esi};
    char *t="你被HOOK了!";
    printf("源参数:%s\n",lpText);
    lpText=(LPCTSTR)t;
    _asm
    {
            pop esi
                //修改返回指针
            push [ebp+4]
            pop caller
 
            push _newEip
            pop [ebp+4]
 
        mov eax,pMessageBoxA
        add eax,5
        mov esp,ebp
        jmp eax
_newEip:
        mov eax,0x1447
 
        jmp caller
    }
 
    return 0;
}
2015-5-8 21:37
0
雪    币: 60
活跃值: (444)
能力值: ( LV5,RANK:65 )
在线值:
发帖
回帖
粉丝
4
谢这位哥的回答,但这不是naked函数啊
2015-5-9 00:16
0
雪    币: 6911
活跃值: (9074)
能力值: ( LV17,RANK:797 )
在线值:
发帖
回帖
粉丝
5
你不是想访问参数吗?同时还想用变量,这个适合你。
2015-5-9 11:14
0
游客
登录 | 注册 方可回帖
返回
//