-
-
[旧帖] [求助]我添加了SSDT新的服号,但是怎么在R3调用都不成功,求教. 0.00雪花
-
发表于: 2011-9-15 16:05 1063
-
我添加了一个SSDT函数。
服号为254. 0X11C。直接指向的NtOpenProcess的地址。我用WinDbg查看地址是修改成功了的
然后我在R3修改了OpenProcess给Eax传递的0x7A。为0x11c
结果无论如何都无法调用成功。
我不知道是哪里出了问题。也没办法跟踪Syst指令,就找不到问题出在哪里。
还请高人给条建议。
--------------
刚才查阅了一下资料
说根本不需要处理SYSENTER和那些段寄存器什么的。
只需要修改KiFastSystemCall里面的服号。
我在R3已经修改好了。用OD跟踪到Sysenter都没问题。
那么久是驱动没处理好了?
下面是我的代码。
VOID AddSSDT_Ser()
{
WPOFF();
KeServiceDescriptorTable->NumberOfService++;
WPON();
}
VOID SubSSDT_Ser()
{
WPOFF();
KeServiceDescriptorTable->NumberOfService--;
WPON();
}
---
处理部分:
Address9 = (ULONG)KeServiceDescriptorTable->ServiceTableBase + 0x11c * 4;
*((ULONG*)Address9) = (ULONG)NtOpenProcess;
我已经用Xt.KD.WinDbg查看并且证实当前地址是指向了原始的NtOpenProcess
----------
我现在只能猜测:
1.是不是函数的原始地址和模块没有导致。
2.没有函数名导致??
3.或者只能KeAddSystemServiceTable这样做?必须添加一张表?
服号为254. 0X11C。直接指向的NtOpenProcess的地址。我用WinDbg查看地址是修改成功了的
然后我在R3修改了OpenProcess给Eax传递的0x7A。为0x11c
结果无论如何都无法调用成功。
我不知道是哪里出了问题。也没办法跟踪Syst指令,就找不到问题出在哪里。
还请高人给条建议。
--------------
刚才查阅了一下资料
说根本不需要处理SYSENTER和那些段寄存器什么的。
只需要修改KiFastSystemCall里面的服号。
我在R3已经修改好了。用OD跟踪到Sysenter都没问题。
那么久是驱动没处理好了?
下面是我的代码。
VOID AddSSDT_Ser()
{
WPOFF();
KeServiceDescriptorTable->NumberOfService++;
WPON();
}
VOID SubSSDT_Ser()
{
WPOFF();
KeServiceDescriptorTable->NumberOfService--;
WPON();
}
---
处理部分:
Address9 = (ULONG)KeServiceDescriptorTable->ServiceTableBase + 0x11c * 4;
*((ULONG*)Address9) = (ULONG)NtOpenProcess;
我已经用Xt.KD.WinDbg查看并且证实当前地址是指向了原始的NtOpenProcess
----------
我现在只能猜测:
1.是不是函数的原始地址和模块没有导致。
2.没有函数名导致??
3.或者只能KeAddSystemServiceTable这样做?必须添加一张表?
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)
赞赏
他的文章
看原图
赞赏
雪币:
留言: