找回密码
 加入我们

QQ登录

只需一步,快速开始

搜索
楼主: Tesla.Angela

[原创开源]在WIN64上实现SSDT HOOK

 火... [复制链接]

0

主题

8

回帖

0

精华

铜牌会员

积分
52
发表于 2013-7-15 15:01:06 | 显示全部楼层
niub

0

主题

9

回帖

0

精华

铜牌会员

积分
48
发表于 2013-7-22 11:24:35 | 显示全部楼层
谢谢分享

1

主题

18

回帖

0

精华

铜牌会员

积分
166
发表于 2013-7-23 15:14:40 | 显示全部楼层
好东西瞅瞅~~~

0

主题

26

回帖

0

精华

铜牌会员

积分
77
发表于 2013-7-23 16:48:33 | 显示全部楼层
和lz学习学习,win64 啊 win64

0

主题

19

回帖

0

精华

铜牌会员

积分
96
发表于 2013-8-4 09:53:02 | 显示全部楼层
学习一下

0

主题

4

回帖

0

精华

初来乍到

积分
33
发表于 2013-8-6 21:09:49 | 显示全部楼层
最近正在研究SSDT HOOK參考一下  感謝

2

主题

46

回帖

0

精华

铜牌会员

积分
61
发表于 2013-8-21 14:42:18 | 显示全部楼层
学习一下

0

主题

10

回帖

0

精华

铜牌会员

积分
80
发表于 2013-8-22 20:08:58 | 显示全部楼层
学习一下,多谢楼主

0

主题

4

回帖

0

精华

初来乍到

积分
37
发表于 2013-9-5 23:29:48 | 显示全部楼层
看看

0

主题

11

回帖

0

精华

铜牌会员

积分
60
发表于 2013-9-14 17:30:51 | 显示全部楼层
学习学习~谢谢分享

0

主题

10

回帖

0

精华

铜牌会员

积分
35
发表于 2013-9-15 13:02:43 | 显示全部楼层
顶一下

0

主题

7

回帖

0

精华

金牌会员

积分
1175
发表于 2013-9-26 10:00:59 | 显示全部楼层
学习。最近可能要折腾这个。不用知道和32位差别大不大

0

主题

13

回帖

0

精华

论坛元老

积分
9881
发表于 2013-10-12 21:42:11 | 显示全部楼层
在WIN64上实现SSDT HOOK

0

主题

7

回帖

0

精华

初来乍到

积分
13
发表于 2013-10-15 13:14:41 | 显示全部楼层
看看有帮助吗?

0

主题

12

回帖

0

精华

初来乍到

积分
29
发表于 2013-10-23 10:20:19 | 显示全部楼层
学习下64下的hook

3

主题

14

回帖

0

精华

银牌会员

积分
531
发表于 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[14] = "\x8B\xF8\xC1\xEF\x07\x83\xE7\x20\x25\xFF\x0F\x00\x00";
不過我用 WinDbg 找了一下位置...
kd> db nt!KiSystemServiceStart
fffff800`03ccfcde  48 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 的方式, 可以這麼寫:
  1. ULONG_PTR GetKeServiceDescriptorTable64()
  2. {
  3.         //Pattern
  4.         ULONG kiServiceTable_patten[8] = {
  5.                 0x04134b00, 0x02f53600, 0xfff6f000, 0x02e80205,
  6.                 0x031c3b06, 0x0312ba05, 0x02bacc01, 0x02b49200
  7.         };
  8.         /*
  9.         kd> dd nt!KeServiceDescriptorTable
  10.         fffff800`03f15940  03cde800 fffff800 00000000 00000000
  11.         fffff800`03f15950  00000191 00000000 03cdf48c fffff800
  12.         */
  13.         
  14.         //Scan boundaries
  15.         ULONG_PTR CodeScanStart = (ULONG_PTR)KdDebuggerNotPresent;
  16.         /*
  17.         kd> dd nt!KdDebuggerNotPresent
  18.         fffff800`03edf391  00000000 00000000 bb000000 00db1dbb
  19.         fffff800`03edf3a1  00000000 14000000 00000000 00000000
  20.         */

  21.         // offset: (fffff800`03f15940-fffff800`03edf391=0x365AF)
  22.         PULONG64 ptrSDT = (PULONG64) (CodeScanStart + 0x365AF);
  23.         ULONG_PTR ptrST = (ULONG_PTR) *ptrSDT;

  24.         if (!memcmp((char*)ptrST, (char*)&kiServiceTable_patten[0], sizeof(ULONG)*8))
  25.         {
  26.                 return (ULONG_PTR)ptrSDT;
  27.         }

  28.         return 0;
  29. }
复制代码
不知道換了 VISTA/8/8.1 X64, 相對位置是否有變化沒? {:soso_e132:}


哈哈, 這二天玩內核, VBOX 被我弄死好多次... {:soso_e117:}
不過也因為如此, 才知道, 位置不是固定的, 這次的偏差值在 0x36C8F
看來還是得用區間找尋法了... {:soso_e135:}


整理一下研究結果:
鬼佬的CODE, 主要是要找出 nt!KiSystemServiceStart 的位置, 再由它裡面的匯編 (0x4c8d)
        fffff800`03c80ff2 4c8d1547782300  lea     r10,[nt!KeServiceDescriptorTable (fffff800`03eb8840)]
        fffff800`03c80ff9 4c8d1d80782300  lea     r11,[nt!KeServiceDescriptorTableShadow (fffff800`03eb8880)]
算出 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;

3

主题

15

回帖

1

精华

铂金会员

积分
1529
发表于 2013-10-28 19:33:06 | 显示全部楼层
给力新东西?

0

主题

14

回帖

0

精华

金牌会员

积分
1013
发表于 2013-11-8 11:40:03 | 显示全部楼层
不是不能hook他么?

0

主题

67

回帖

0

精华

铂金会员

积分
2141
发表于 2013-11-16 09:42:36 | 显示全部楼层
这个必须看看的~~~~

0

主题

11

回帖

0

精华

初来乍到

积分
19
发表于 2013-11-29 13:41:37 | 显示全部楼层
谢谢分享哈哈哈

0

主题

8

回帖

0

精华

初来乍到

积分
6
发表于 2013-12-21 11:48:20 | 显示全部楼层
谢谢老大!!!!!!!

1

主题

19

回帖

0

精华

铜牌会员

积分
43
发表于 2014-1-4 10:10:07 | 显示全部楼层
多谢楼主分享,研究了很久

0

主题

49

回帖

0

精华

钻石会员

积分
2911
发表于 2014-1-17 18:00:41 | 显示全部楼层
来看看

2

主题

12

回帖

0

精华

铜牌会员

积分
76
发表于 2014-2-10 20:43:50 | 显示全部楼层
学习下。谢谢分享

0

主题

9

回帖

0

精华

初来乍到

积分
17
发表于 2014-2-23 13:53:34 | 显示全部楼层
向大神学习.....

3

主题

28

回帖

2

精华

钻石会员

积分
2827
发表于 2014-2-25 14:43:33 | 显示全部楼层
学习下 谢谢

1

主题

22

回帖

0

精华

铜牌会员

积分
156
发表于 2014-4-12 11:32:38 | 显示全部楼层
正在学习驱动啊

0

主题

14

回帖

0

精华

铂金会员

积分
2276
发表于 2014-4-12 20:52:20 | 显示全部楼层
学习一下

3

主题

55

回帖

0

精华

铂金会员

积分
2015
发表于 2014-4-16 14:41:17 | 显示全部楼层
学习中,这个只能先看下,目前功力还 不够。

3

主题

55

回帖

0

精华

铂金会员

积分
2015
发表于 2014-4-16 14:41:20 | 显示全部楼层
学习中,这个只能先看下,目前功力还 不够。

0

主题

18

回帖

0

精华

铂金会员

积分
2252
发表于 2014-5-4 16:21:59 | 显示全部楼层
论坛好像好久没更新了

6

主题

25

回帖

0

精华

铂金会员

积分
1349
发表于 2014-5-6 17:14:56 | 显示全部楼层
很给力!
您需要登录后才可以回帖 登录 | 加入我们

本版积分规则

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