Tesla.Angela 发表于 2014-5-12 23:27:58

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

原版源码的GetOffsetAddress的计算是错误的(当年没想到那个>>4竟然有如此深奥的含义)。

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

mysmartid 发表于 2014-5-13 00:08:36

感谢分享~~

mayl8822 发表于 2014-5-13 12:08:23

顶, 这个可以有 赞!!!!

csanycall 发表于 2014-5-18 14:45:04

tesla不错,牛肉哈哈。

Bambo 发表于 2014-6-17 15:20:22

突然发现Tesla经常换头像,而且是美女头,因此推断楼主是男,不太自信,有点宅。

Tesla.Angela 发表于 2014-6-17 16:19:23

Bambo 发表于 2014-6-17 15:20
突然发现Tesla经常换头像,而且是美女头,因此推断楼主是男,不太自信,有点宅。 ...

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

Bambo 发表于 2014-6-20 15:00:38

Tesla.Angela 发表于 2014-6-17 16:19
连我的头像都这么在意???从没把网上的东西当回事。想换就换。

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

网游天下 发表于 2014-7-27 00:27:44

还是不能HOOK NtCreateSection,
1: kd> dd fffff800`03edd300 + 4*47
fffff800`03edd41cffff3400 029e4000 02df7340 046fc205
fffff800`03edd42c03dd8704 0412cd00 031782c1 031bab01
fffff800`03edd43c02efec80 02d52300 04637102 03071007
fffff800`03edd44c0298f841 04636902 03196000 02a08a4c

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

rkq1991 发表于 2014-7-31 11:31:55

支持大大,看看正确的是如何处理的

陌路人 发表于 2015-4-2 21:29:18

```代码看了.>>4位 明白,但是后来你的那些判断没明白为什么那么做啊

Tesla.Angela 发表于 2015-4-3 14:24:39

陌路人 发表于 2015-4-2 21:29
```代码看了.>>4位 明白,但是后来你的那些判断没明白为什么那么做啊

坑爹的参数问题。。。

upring 发表于 2015-5-31 13:57:21

楼主的认真精神值得学习

zoandcom 发表于 2015-6-21 00:09:22

感谢~~~~

windxiang 发表于 2015-12-7 11:26:59

附件无法读取了

faraway 发表于 2016-1-12 17:00:39

GetOffsetAddress获取偏移地址没看懂

萌新 发表于 2017-7-24 13:27:02

如果没有理解错的话,应该是用低四位来保存了函数参数的个数,少于四个参数的记录为0,多于四个参数的就记录为参数个数-4.

565710420 发表于 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

565710420 发表于 2018-6-8 16:01:13

不行 错误一堆堆

565710420 发表于 2018-6-9 06:58:37

请问管理员 你这什么编译的 我VS2010+WDK 7600.16385.1
无法找到 _readcr0   __writecr0
添加头文件intrin.h编译器又说找不到

376408384 发表于 2022-6-10 11:01:44

还有3-3 计算SSDT地址
那汇编代码没看懂
        mov rax, rcx ;rcx=index
        lea r10, ;rdx=ssdt
        mov edi,eax
        shr edi,7   ;为什么右移7...C代码都没这个操作
        and edi,20h
        mov r10, qword ptr
        movsxd r11,dword ptr
        mov rax,r11
        sar r11,4
        add r10,r11
        mov rax,r10
        ret

自己写了一个
;-------------------------------------
GetSSDTFunctionAddress PROC
mov qword ptr ,rcx       ;rcx=Native API   index
mov qword ptr ,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
mov rdx,qword ptr
movr10,qword ptr
mov edi,eax
shl edi,2h
mov r10d, dword ptr
shr r10d,4h
mov r11,qword ptr
mov rax,r11
add rax,r10
;----------------------------------------------
lea rsp,
pop rdi                     
pop rbp                     
ret            
GetSSDTFunctionAddress ENDP

EXTERN_C   UINT_PTR GetSSDTFunctionAddress(UINT64 idx, UINT64 uSSDT_base);

376408384 发表于 2022-6-10 11:48:10

565710420 发表于 2018-6-9 06:58
请问管理员 你这什么编译的 我VS2010+WDK 7600.16385.1
无法找到 _readcr0   __writecr0
添加头文件intri ...

7600 没有这个的
页: [1]
查看完整版本: [源码]更正《WIN64驱动编程基础教程》里关于HOOK (S)SSDT的错误