首页
社区
课程
招聘
[旧帖] 为何HookZwLoadDriver处理后调用原函数失败 0.00雪花
发表于: 2011-2-18 22:40 3110

[旧帖] 为何HookZwLoadDriver处理后调用原函数失败 0.00雪花

2011-2-18 22:40
3110
编程语言:Asm
编译工具:Masm32
程序功能:SSDT.HOOk.ZwLoadDriver.有驱动加载则通过读写映射内存方式通知R3程序,让程序决定是否允许加载.
问题: 整个HOOK过程以及处理过程都没出现问题.但在用户层返回允许加载指令后..驱动调用原函数地址.却无法成功加载驱动.

问题代码:
MyZwLoadDriver  Proc   DriverServiceName
    local   liDelayTime:LARGE_INTEGER
    local  ansi:ANSI_STRING
    or   liDelayTime.HighPart,-1    
    mov   liDelayTime.LowPart,-1000000
;    invoke  PsGetCurrentProcess
;    add  eax,dwImageFileNameOffset
;    mov  ecx,16
;    mov  edi,output
;    add  edi,8
;    mov  esi,eax
;    rep  movsb

    mov  eax,output
    mov  dword ptr [eax],1  ;置1 表示有驱动加载
    .while  1
      invoke  KeDelayExecutionThread,KernelMode,0,addr liDelayTime
      mov  eax,output
      mov  eax,[eax]
      .if  !eax    ;如果等于0则跳出 表示用户层已经处理完成
        .break
      .endif
    .endw
    
    mov  eax,output
    mov  eax,[eax + 4]  ;判断是否允许加载
    .if  eax == 1
      int  3
      push  DriverServiceName 
      call  lpRealZwLoadDriver 
    .elseif  eax == 0
      mov  eax,STATUS_ACCESS_DENIED
    .endif
    ret
    
MyZwLoadDriver  Endp

push  DriverServiceName 
call  lpRealZwLoadDriver    ;这是问题代码 调用老返回错误 ..不知道那出的问题 大牛们帮忙看下

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

上传的附件:
收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
是我问题没说清楚嘛?为什么没人帮忙呢
2011-2-19 13:33
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
在顶顶
2011-2-19 17:26
0
雪    币: 1689
活跃值: (379)
能力值: ( LV15,RANK:440 )
在线值:
发帖
回帖
粉丝
4
首先你确定下原始的地址值是不是正确,我想那里应该有些问题。还有一个地方有些错误,不知道是不是影响程序运行了。你的那个函数有一个参数的,最后应该是一条ret 4的指令。你再试试。小鸟持续关注……
2011-4-1 22:36
0
游客
登录 | 注册 方可回帖
返回
//