devil209
驱动牛犊
驱动牛犊
  • 注册日期2007-01-25
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分732分
  • 威望94点
  • 贡献值0点
  • 好评度73点
  • 原创分0分
  • 专家分0分
阅读:1531回复:8

hook ssdt怎么受driverstudio的影响呢?

楼主#
更多 发布于:2007-10-24 22:25
在我的XP系统里面我hook了zwopenprocess,BSOD发生了,但同样的代码在一些机器上运行正常。我在本机装上Compuware_DriverStudio_v3.1准备调试,结果装完后又好了,但我卸载了driverstudio以后又发生了BSOD。然后我用windbg分析dump文件,结果是:

FAULTING_IP:
ProSer!HookSystemCall+25 [d:\proser_w2k\proser.c @ 96]
f7b00651 c704815205b0f7  mov    dword ptr [ecx+eax*4],offset ProSer!NewZwOpenProcess (f7b00552)

我的源码是:

typedef struct ServiceDescriptorEntry

{
    unsigned int  *ServiceTableBase;
    unsigned int  *ServiceCounterTableBase; //Used only in checked build
    unsigned int  NumberOfServices;
    unsigned char *ParamTableBase;
} ServiceDescriptorTableEntry_t, *PServiceDescriptorTableEntry_t;

__declspec(dllimport)  ServiceDescriptorTableEntry_t KeServiceDescriptorTable;
#define SYSTEMSERVICE(_function) KeServiceDescriptorTable.ServiceTableBase[ *(PULONG)((PUCHAR)_function+1)]

VOID HookSystemCall()
{
OldZwOpenProcess = (ZW_OPENPROCESS)(SYSTEMSERVICE(ZwOpenProcess));
_asm cli
  (ZW_OPENPROCESS)(SYSTEMSERVICE(ZwOpenProcess)) = NewZwOpenProcess;
_asm sti
}

我的问题是,以上代码有什么不对劲吗?但是为什么又在某些机器上运行正常?并且怎么受driverstudio的影响呢?
wowocock
VIP专家组
VIP专家组
  • 注册日期2002-04-08
  • 最后登录2016-01-09
  • 粉丝16
  • 关注2
  • 积分601分
  • 威望1651点
  • 贡献值1点
  • 好评度1227点
  • 原创分1分
  • 专家分0分
沙发#
发布于:2007-10-25 07:13
老掉牙的问题了,内存写保护,SOFTICE会自动进行写保护禁止,所以你没事,没看见很多家伙修改的时候不是搞CR0,就是搞MDL,当他们吃饱了撑的阿???
花开了,然后又会凋零,星星是璀璨的,可那光芒也会消失。在这样 一瞬间,人降生了,笑者,哭着,战斗,伤害,喜悦,悲伤憎恶,爱。一切都只是刹那间的邂逅,而最后都要归入死亡的永眠
devil209
驱动牛犊
驱动牛犊
  • 注册日期2007-01-25
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分732分
  • 威望94点
  • 贡献值0点
  • 好评度73点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2007-10-25 09:32
谢谢wowocock ,那为什么上面的代码在大多数机器还是可以正常运行呢?我一直以为 cli指令打开了cr0.
wangjianfeng
驱动小牛
驱动小牛
  • 注册日期2004-05-28
  • 最后登录2013-10-02
  • 粉丝0
  • 关注0
  • 积分1002分
  • 威望263点
  • 贡献值0点
  • 好评度260点
  • 原创分0分
  • 专家分0分
地板#
发布于:2007-10-25 19:47
晕,又是一只和我一样菜的牛犊.

像ssdt 修改,网上的代码太多了,不用来问的 哦哦cock牛 的.
lazydog
驱动牛犊
驱动牛犊
  • 注册日期2004-07-08
  • 最后登录2009-10-30
  • 粉丝0
  • 关注0
  • 积分4分
  • 威望85点
  • 贡献值0点
  • 好评度72点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2007-10-26 14:09
这些家伙其实就是吃饱了撑的  
devil209
驱动牛犊
驱动牛犊
  • 注册日期2007-01-25
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分732分
  • 威望94点
  • 贡献值0点
  • 好评度73点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2007-10-31 12:42
就是搞不懂为什么有些机器运行很正常,而且这些机器并没有装softice呀.
WQXNETQIQI
驱动大牛
驱动大牛
  • 注册日期2006-06-12
  • 最后登录2010-10-26
  • 粉丝0
  • 关注0
  • 积分13分
  • 威望1076点
  • 贡献值0点
  • 好评度895点
  • 原创分1分
  • 专家分0分
6楼#
发布于:2007-11-01 22:18
不是所有的机器都会开启system code write protection的

只有当Win2000的系统内存> 128MB(XP 或2003 >255MB)时,系统才会开启这一机制
驱动开发者 呵呵
zhangleierli
驱动小牛
驱动小牛
  • 注册日期2007-01-31
  • 最后登录2017-05-24
  • 粉丝1
  • 关注0
  • 积分3分
  • 威望158点
  • 贡献值0点
  • 好评度146点
  • 原创分0分
  • 专家分0分
  • 社区居民
7楼#
发布于:2007-12-28 13:38
remove lock确实比计数器好用,
ks12345
驱动小牛
驱动小牛
  • 注册日期2006-09-21
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分7分
  • 威望223点
  • 贡献值0点
  • 好评度189点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2008-01-31 12:48
Thinking
游客

返回顶部