laser314
发表于 2013-7-15 15:01:06
niub
wh0721
发表于 2013-7-22 11:24:35
谢谢分享
wykyang123
发表于 2013-7-23 15:14:40
好东西瞅瞅~~~
bubuwo
发表于 2013-7-23 16:48:33
和lz学习学习,win64 啊 win64
zhuxinlang
发表于 2013-8-4 09:53:02
学习一下
tony703333
发表于 2013-8-6 21:09:49
最近正在研究SSDT HOOK參考一下感謝
vip235689
发表于 2013-8-21 14:42:18
学习一下
garasmc
发表于 2013-8-22 20:08:58
学习一下,多谢楼主
vincentpra
发表于 2013-9-5 23:29:48
看看
xm2498262
发表于 2013-9-14 17:30:51
学习学习~谢谢分享
looyu
发表于 2013-9-15 13:02:43
顶一下
idt9
发表于 2013-9-26 10:00:59
学习。最近可能要折腾这个。不用知道和32位差别大不大
evanpw
发表于 2013-10-12 21:42:11
在WIN64上实现SSDT HOOK
bennywing
发表于 2013-10-15 13:14:41
看看有帮助吗?
w330820350
发表于 2013-10-23 10:20:19
学习下64下的hook
ramonliu
发表于 2013-10-28 00:04:26
本帖最后由 ramonliu 于 2013-10-30 12:41 编辑
不知道這是 Ring0 還是 Ring3 上來對 SSDT 處理,
回覆一下, 看看內容... {:soso_e121:}
嗯... include <ntddk.h> Ring0 的 {:soso_e149:}
疑, 我在網上扒到的鬼佬, 特徵碼 14個 BYTE {:soso_e122:}
char KiSystemServiceStart_pattern = "\x8B\xF8\xC1\xEF\x07\x83\xE7\x20\x25\xFF\x0F\x00\x00";
不過我用 WinDbg 找了一下位置...
kd> db nt!KiSystemServiceStart
fffff800`03ccfcde48 89 a3 d8 01 00 00 8b-f8 c1 ef 07 83 e7 20 25
唔... 不一樣... {:soso_e134:}
後來發現, nt!xxx 的API, 跟 nt!KeServiceDescriptorTable 的位置是固定相對, 然而 nt!KeServiceDescriptorTable 的位置
卻不一定每次相同, 所以找 nt!KeServiceDescriptorTable 的方式, 可以這麼寫:ULONG_PTR GetKeServiceDescriptorTable64()
{
//Pattern
ULONG kiServiceTable_patten = {
0x04134b00, 0x02f53600, 0xfff6f000, 0x02e80205,
0x031c3b06, 0x0312ba05, 0x02bacc01, 0x02b49200
};
/*
kd> dd nt!KeServiceDescriptorTable
fffff800`03f1594003cde800 fffff800 00000000 00000000
fffff800`03f1595000000191 00000000 03cdf48c fffff800
*/
//Scan boundaries
ULONG_PTR CodeScanStart = (ULONG_PTR)KdDebuggerNotPresent;
/*
kd> dd nt!KdDebuggerNotPresent
fffff800`03edf39100000000 00000000 bb000000 00db1dbb
fffff800`03edf3a100000000 14000000 00000000 00000000
*/
// offset: (fffff800`03f15940-fffff800`03edf391=0x365AF)
PULONG64 ptrSDT = (PULONG64) (CodeScanStart + 0x365AF);
ULONG_PTR ptrST = (ULONG_PTR) *ptrSDT;
if (!memcmp((char*)ptrST, (char*)&kiServiceTable_patten, sizeof(ULONG)*8))
{
return (ULONG_PTR)ptrSDT;
}
return 0;
}不知道換了 VISTA/8/8.1 X64, 相對位置是否有變化沒? {:soso_e132:}
哈哈, 這二天玩內核, VBOX 被我弄死好多次... {:soso_e117:}
不過也因為如此, 才知道, 位置不是固定的, 這次的偏差值在 0x36C8F
看來還是得用區間找尋法了... {:soso_e135:}
整理一下研究結果:
鬼佬的CODE, 主要是要找出 nt!KiSystemServiceStart 的位置, 再由它裡面的匯編 (0x4c8d)
fffff800`03c80ff2 4c8d1547782300lea r10,
fffff800`03c80ff9 4c8d1d80782300lea r11,
算出 nt!KeServiceDescriptorTable 的位置, 而尋找位置, 搜尋範圍,
&_strnicmp ~ &KdDebuggerNotPresent, 然而不知道是不是 VS2012的問題,
_strnicmp 的位置, 不是 nt!strnicmp 或 nt!_ascii_strnicmp, 而是 (your driver)!strnicmp
也因為如此會造成讀取錯過而重開機... 我重新找了2個點, 對於目前來說是正確...
如果有人用了, 失效了, 請跟我說喲~ {:soso_e113:}
ULONGLONG ptrStart = (ULONGLONG)KeSynchronizeExecution;
ULONGLONG ptrEnd = (ULONGLONG)KeBugCheck;
babyice3
发表于 2013-10-28 19:33:06
给力新东西?
Flhawker
发表于 2013-11-8 11:40:03
不是不能hook他么?
lizhuowu
发表于 2013-11-16 09:42:36
这个必须看看的~~~~
悠悠小楠
发表于 2013-11-29 13:41:37
谢谢分享哈哈哈
大师兄
发表于 2013-12-21 11:48:20
谢谢老大!!!!!!!
w3297425
发表于 2014-1-4 10:10:07
多谢楼主分享,研究了很久
thegfw
发表于 2014-1-17 18:00:41
来看看
wondayer
发表于 2014-2-10 20:43:50
学习下。谢谢分享
heitaizi
发表于 2014-2-23 13:53:34
向大神学习.....
catface0511
发表于 2014-2-25 14:43:33
学习下 谢谢
Yecate
发表于 2014-4-12 11:32:38
正在学习驱动啊
850390626
发表于 2014-4-12 20:52:20
学习一下
860000023
发表于 2014-4-16 14:41:17
学习中,这个只能先看下,目前功力还 不够。
860000023
发表于 2014-4-16 14:41:20
学习中,这个只能先看下,目前功力还 不够。
ugvjewxf
发表于 2014-5-4 16:21:59
论坛好像好久没更新了
dengwenming
发表于 2014-5-6 17:14:56
很给力!