阅读:1361回复:3
Hook Native 时为什么总要 “+1”?
Und NT 书中在Hook Native api的时候总是有(PUCHAR)_function+1这一句,为什么要 \"+1\" 啊,
另外,如果有个函数没有被导出,而我只知道此函数的ID,是否可以将上面这一句该为(PUCHAR)ID+1 进行HOOK? |
|
沙发#
发布于:2005-04-10 13:02
kernel是从零开始算
user mode从一开始算 如果有个函数没有被导出 那有此函数的ID ?? |
|
板凳#
发布于:2005-04-10 15:29
那未被导出的函数可否调用吗,能给具体的段代码吗?
|
|
地板#
发布于:2005-04-11 08:32
因为是由NTDLL中的该函数的反汇编代码决定.
一般在32位WINDOWS下,函数开始的第1条指令是MOV EAX,ID 对应的机器码是B8XXXXXXXX,所以加1就是后面所对应的ID 不过在64位OS下,反汇编代码就完全不同了,而且NTDLL,和NTOSKRNL的机器码也不一样,所以需要动态获得SERVICE ID...... |
|
|