[源码]更正《WIN64驱动编程基础教程》里关于HOOK (S)SSDT的错误
原版源码的GetOffsetAddress的计算是错误的(当年没想到那个>>4竟然有如此深奥的含义)。附上新版源码。没有故意加入的坑,可以直接编译运行。 感谢分享~~ 顶, 这个可以有 赞!!!! tesla不错,牛肉哈哈。 突然发现Tesla经常换头像,而且是美女头,因此推断楼主是男,不太自信,有点宅。 Bambo 发表于 2014-6-17 15:20
突然发现Tesla经常换头像,而且是美女头,因此推断楼主是男,不太自信,有点宅。 ...
连我的头像都这么在意???从没把网上的东西当回事。想换就换。 Tesla.Angela 发表于 2014-6-17 16:19
连我的头像都这么在意???从没把网上的东西当回事。想换就换。
其实,老板几次用的头像都有个特征,还可以瞎推断一些东西的,不多说了,免得老板不高兴了。
总体来说,还是感谢老板放出的很多资料的。 还是不能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,怎么计算函数地址呢? 支持大大,看看正确的是如何处理的 ```代码看了.>>4位 明白,但是后来你的那些判断没明白为什么那么做啊 陌路人 发表于 2015-4-2 21:29
```代码看了.>>4位 明白,但是后来你的那些判断没明白为什么那么做啊
坑爹的参数问题。。。 楼主的认真精神值得学习 感谢~~~~ 附件无法读取了 GetOffsetAddress获取偏移地址没看懂 如果没有理解错的话,应该是用低四位来保存了函数参数的个数,少于四个参数的记录为0,多于四个参数的就记录为参数个数-4. 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 不行 错误一堆堆 请问管理员 你这什么编译的 我VS2010+WDK 7600.16385.1
无法找到 _readcr0 __writecr0
添加头文件intrin.h编译器又说找不到 还有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);
565710420 发表于 2018-6-9 06:58
请问管理员 你这什么编译的 我VS2010+WDK 7600.16385.1
无法找到 _readcr0 __writecr0
添加头文件intri ...
7600 没有这个的
页:
[1]