能力值:
( LV5,RANK:60 )
|
-
-
2 楼
具体情况具体作,只要堆栈平衡没有问题。
|
能力值:
( LV9,RANK:610 )
|
-
-
3 楼
这种“精细”操作,肯定要用到汇编了~
|
能力值:
( LV15,RANK:670 )
|
-
-
4 楼
使用 naked 函数,内联汇编。
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
对于2楼.我明白你的意思...我现在的问题是能不能像ssdt hook那样子直接使用C++的函数来写..而不是用naked 汇编...不知道我表达清楚了没有...
|
能力值:
( LV12,RANK:210 )
|
-
-
6 楼
懒
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
不能这么说...只能说是有没有更方便的方法..如果只是用汇编写,,那真的挺麻烦的..必须在C++中用内联汇编.我还不是很牛
|
能力值:
( LV8,RANK:120 )
|
-
-
8 楼
也不是全部要汇编
你可以先写好一个stub,再跳到你的真正处理代码中去
_asm
xx1
xx2
call filter
yy1
yy2
...
|
能力值:
( LV2,RANK:10 )
|
-
-
9 楼
可能是我说的不清楚吧..
例. CreateFile:
mov edi,edi
push ebp
mov ebp,esp
sub esp, XX ;开辟栈帧空间
hook CreateFile:
mov edi,edi
push ebp
mov ebp,esp
jmp MyFunction; //这里替换成我的hook函数
问题出来了..到了我的hook函数后,前面的几条指令已经执行.堆栈已经变化,
这里MyFunction声明成 HANDLE New_CreateFile(
LPCTSTR lpFileName,
DWORD dwDesiredAccess,
DWORD dwShareMode,
LPSECURITY_ATTRIBUTES lpSecurityAttributes,
DWORD dwCreationDisposition,
DWORD dwFlagsAndAttributes,
HANDLE hTemplateFile
);
这里就不能直接跳到New_CreateFile里面,参数地址变化了..所以跳到这里会直接崩溃
问题就在这..我想有没有方法直接跳到New_CreateFile,而不用naked内联汇编慢慢来写
|
能力值:
( LV2,RANK:10 )
|
-
-
10 楼
_asm
寄存器保存
mov eax, dword ptr[esp + XXX] //找回参数
push eax
mov eax, dword ptr[esp + XXX]
push eax
...
...
call New_CreateFile
....
寄存器恢复
... 不就行啦
|
能力值:
( LV2,RANK:10 )
|
-
-
11 楼
谢谢~~这个问题解决了...还是用汇编吧..修改相关数据好些..HitIt谢谢你了..
|
|
|