找回密码
 加入我们

QQ登录

只需一步,快速开始

搜索
查看: 23279|回复: 21

[源码]更正《WIN64驱动编程基础教程》里关于HOOK (S)SSDT的错误

  [复制链接]

857

主题

2632

回帖

2

精华

管理员

此生无悔入华夏,  长居日耳曼尼亚。  

积分
36130
发表于 2014-5-12 23:27:58 | 显示全部楼层 |阅读模式
原版源码的GetOffsetAddress的计算是错误的(当年没想到那个>>4竟然有如此深奥的含义)。

附上新版源码。没有故意加入的坑,可以直接编译运行。

ssdt_hook_ntcreatefile.rar

9.24 KB, 下载次数: 15793

sssdt_hook_ntusercreatewindowex.rar

27.57 KB, 下载次数: 17798

0

主题

94

回帖

0

精华

钻石会员

积分
3031
发表于 2014-5-13 00:08:36 | 显示全部楼层
感谢分享~~

0

主题

38

回帖

0

精华

铜牌会员

积分
102
发表于 2014-5-13 12:08:23 | 显示全部楼层
顶, 这个可以有 赞!!!!

1

主题

47

回帖

0

精华

铜牌会员

积分
134
QQ
发表于 2014-5-18 14:45:04 | 显示全部楼层
tesla不错,牛肉哈哈。

0

主题

36

回帖

0

精华

铜牌会员

积分
70
发表于 2014-6-17 15:20:22 | 显示全部楼层
突然发现Tesla经常换头像,而且是美女头,因此推断楼主是男,不太自信,有点宅。

857

主题

2632

回帖

2

精华

管理员

此生无悔入华夏,  长居日耳曼尼亚。  

积分
36130
 楼主| 发表于 2014-6-17 16:19:23 | 显示全部楼层
Bambo 发表于 2014-6-17 15:20
突然发现Tesla经常换头像,而且是美女头,因此推断楼主是男,不太自信,有点宅。 ...

连我的头像都这么在意???从没把网上的东西当回事。想换就换。

0

主题

36

回帖

0

精华

铜牌会员

积分
70
发表于 2014-6-20 15:00:38 | 显示全部楼层
Tesla.Angela 发表于 2014-6-17 16:19
连我的头像都这么在意???从没把网上的东西当回事。想换就换。

其实,老板几次用的头像都有个特征,还可以瞎推断一些东西的,不多说了,免得老板不高兴了。
总体来说,还是感谢老板放出的很多资料的。

点评

你看首富儿子的微博肯定也能推断出他很多信息,然而并没有什么卵用就是了。  发表于 2016-6-9 23:25

8

主题

31

回帖

0

精华

铂金会员

积分
2031
发表于 2014-7-27 00:27:44 | 显示全部楼层
还是不能HOOK NtCreateSection,
1: kd> dd fffff800`03edd300 + 4*47
fffff800`03edd41c  ffff3400 029e4000 02df7340 046fc205
fffff800`03edd42c  03dd8704 0412cd00 031782c1 031bab01
fffff800`03edd43c  02efec80 02d52300 04637102 03071007
fffff800`03edd44c  0298f841 04636902 03196000 02a08a4c

NtCreateSection在SSDT表中的值=ffff3400,怎么计算函数地址呢?

0

主题

30

回帖

0

精华

铜牌会员

积分
124
发表于 2014-7-31 11:31:55 | 显示全部楼层
支持大大,看看正确的是如何处理的

8

主题

69

回帖

2

精华

钻石会员

积分
3279
发表于 2015-4-2 21:29:18 | 显示全部楼层
```代码看了.>>4位 明白,  但是后来你的那些判断没明白为什么那么做啊

857

主题

2632

回帖

2

精华

管理员

此生无悔入华夏,  长居日耳曼尼亚。  

积分
36130
 楼主| 发表于 2015-4-3 14:24:39 | 显示全部楼层
陌路人 发表于 2015-4-2 21:29
```代码看了.>>4位 明白,  但是后来你的那些判断没明白为什么那么做啊

坑爹的参数问题。。。

30

主题

693

回帖

0

精华

钻石会员

积分
2815
发表于 2015-5-31 13:57:21 | 显示全部楼层
楼主的认真精神值得学习

0

主题

87

回帖

0

精华

金牌会员

积分
1046
发表于 2015-6-21 00:09:22 | 显示全部楼层
感谢~~~~

0

主题

11

回帖

0

精华

铜牌会员

积分
49
发表于 2015-12-7 11:26:59 | 显示全部楼层
附件无法读取了

3

主题

23

回帖

0

精华

铜牌会员

积分
64
发表于 2016-1-12 17:00:39 | 显示全部楼层
GetOffsetAddress获取偏移地址没看懂

0

主题

7

回帖

0

精华

铜牌会员

积分
98
发表于 2017-7-24 13:27:02 | 显示全部楼层
如果没有理解错的话,应该是用低四位来保存了函数参数的个数,少于四个参数的记录为0,多于四个参数的就记录为参数个数-4.

4

主题

43

回帖

0

精华

铜牌会员

积分
85
发表于 2018-6-8 15:45:22 | 显示全部楼层
ssdt_hook_ntcreatefile.rar  
3个错误
LZ怎么解决的
1>errors in directory f:\vc工程\驱动工程\ssdt_hook_ntcreatefile
1>f:\vc工程\驱动工程\ssdt_hook_ntcreatefile\mydriver.obj : error LNK2019: unreso
lved external symbol __disable referenced in function _WPOFFx64@0
1>f:\vc工程\驱动工程\ssdt_hook_ntcreatefile\mydriver.obj : error LNK2019: unreso
lved external symbol __enable referenced in function _WPONx64@4
1>f:\vc工程\驱动工程\ssdt_hook_ntcreatefile\objfre_wxp_x86\i386\hookssdt_x64.sys
: error LNK1120: 2 unresolved externals
BUILD: Finish time: Fri Jun 08 15:47:51 2018
BUILD: Done

    3 files compiled - 1 Warning
    1 executable built - 3 Errors

4

主题

43

回帖

0

精华

铜牌会员

积分
85
发表于 2018-6-8 16:01:13 | 显示全部楼层
不行 错误一堆堆

4

主题

43

回帖

0

精华

铜牌会员

积分
85
发表于 2018-6-9 06:58:37 | 显示全部楼层
请问管理员 你这什么编译的 我VS2010+WDK 7600.16385.1
无法找到 _readcr0   __writecr0
添加头文件  intrin.h  编译器又说找不到

5

主题

116

回帖

0

精华

铜牌会员

积分
174
发表于 2022-6-10 11:01:44 | 显示全部楼层
还有3-3 计算SSDT地址
那汇编代码没看懂
        mov rax, rcx ;rcx=index
        lea r10,[rdx] ;rdx=ssdt
        mov edi,eax
        shr edi,7   ;为什么右移7...C代码都没这个操作
        and edi,20h
        mov r10, qword ptr [r10+rdi]
        movsxd r11,dword ptr [r10+rax*4]
        mov rax,r11
        sar r11,4
        add r10,r11
        mov rax,r10
        ret

自己写了一个
;-------------------------------------
GetSSDTFunctionAddress PROC
mov qword ptr [rsp+8h],rcx       ;rcx=Native API   index
mov qword ptr [rsp+10h],rdx    ;rdx=ssdt base
push rbp                     
push rdi                     
sub rsp,0C8h                  
mov rbp,rsp                  
mov rdi,rsp                  
mov ecx,32h                  
mov eax,0CCCCCCCCh            
rep stosd      
;-------------------------------------
mov rax,qword ptr[rbp+0C8h+8h*2+1*8h]
mov rdx,qword ptr[rbp+0C8h+8h*2+2*8h]
mov  r10,qword ptr [rdx]
mov edi,eax
shl edi,2h
mov r10d, dword ptr [r10+rdi]
shr r10d,4h
mov r11,qword ptr [rdx]
mov rax,r11
add rax,r10
;----------------------------------------------
lea rsp, [rbp+0C8h]
pop rdi                     
pop rbp                     
ret            
GetSSDTFunctionAddress ENDP

EXTERN_C   UINT_PTR GetSSDTFunctionAddress(UINT64 idx, UINT64 uSSDT_base);

5

主题

116

回帖

0

精华

铜牌会员

积分
174
发表于 2022-6-10 11:48:10 | 显示全部楼层
565710420 发表于 2018-6-9 06:58
请问管理员 你这什么编译的 我VS2010+WDK 7600.16385.1
无法找到 _readcr0   __writecr0
添加头文件  intri ...

7600 没有这个的
您需要登录后才可以回帖 登录 | 加入我们

本版积分规则

快速回复 返回顶部 返回列表