找回密码
 加入我们

QQ登录

只需一步,快速开始

搜索
查看: 7795|回复: 9

64位找SSDT的疑惑

 火.. [复制链接]

17

主题

89

回帖

0

精华

铜牌会员

积分
250
发表于 2012-2-17 09:47:14 | 显示全部楼层 |阅读模式
本帖最后由 wenh7788 于 2012-2-17 09:49 编辑

看到如下的代码,

  1. ULONGLONG GetKeServiceDescriptorTable64()
  2. {
  3. //Pattern
  4. char KiSystemServiceStart_pattern[14] = "\x8B\xF8\xC1\xEF\x07\x83\xE7\x20\x25\xFF\x0F\x00\x00";

  5. //Scan boundaries
  6. ×××××××××××××××××××××××××不明白×××××××
  7. ULONGLONG CodeScanStart = (ULONGLONG)&_strnicmp;
  8. ULONGLONG CodeScanEnd = (ULONGLONG)&KdDebuggerNotPresent;
  9. ×××××××××××××××××××××××××不明白×××××××

  10. //Another needed variables
  11. UNICODE_STRING Symbol;
  12. ULONGLONG i, tbl_address, b;

  13. //Loop - to find the KiSystemServiceStart function
  14. for (i = 0; i < CodeScanEnd - CodeScanStart; i++)
  15. {
  16. //Check if those bytes are equal to our pattern-bytes
  17. if (!memcmp((char*)(ULONGLONG)CodeScanStart +i, (char*)KiSystemServiceStart_pattern,14))
  18. {
  19. //Search lea rdx, * - by opcodes: 4c 8d
  20. for (b = 0; b < 50; b++)
  21. {
  22. tbl_address = ((ULONGLONG)CodeScanStart+i+b);

  23. //Check for lea rdx, * and calculate base address from relative address

  24. if (*(USHORT*) ((ULONGLONG)tbl_address ) == (USHORT)0x8d4c)
  25. return ((LONGLONG)tbl_address +7) + *(LONG*)(tbl_address +3);
  26. }
  27. }
  28. }
复制代码
搜索的范围为什么是×号代码处的地方?求解释.谢谢了。

857

主题

2632

回帖

2

精华

管理员

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

积分
36130
发表于 2012-2-18 23:38:14 | 显示全部楼层
这是外国人的搜索方法,我的搜索方法是特征码搜索。。。
已经通过短信回复你了。。。

17

主题

89

回帖

0

精华

铜牌会员

积分
250
 楼主| 发表于 2012-2-20 10:06:43 | 显示全部楼层
Tesla.Angela 发表于 2012-2-18 23:38
这是外国人的搜索方法,我的搜索方法是特征码搜索。。。
已经通过短信回复你了。。。 ...

大哥~~我总算看到你现身了~~你看看我都哭成啥样子了~~{:soso_e109:}

1.老外的方法肯定有他的道理,他为什么从那个地方搜,而不从其他的地方搜?
2.您说的方法我看了。我能明白您提到的有很多有用的寄存器我不知道,可是您是从什么地方了解到这方面的信息呢?
3.

  1.                         if( b1==0x4c && b2==0x8d && b3==0x15 ) //4c8d15
  2.                         {
  3.                                 memcpy(&templong,i+3,4);
  4.                                 addr = (ULONGLONG)templong + (ULONGLONG)i + 7; ×××××××
  5.                                 return addr;
  6.                         }
复制代码
麻烦您解释下这句代码好吗?
特别是××号出的地方。
-------------------------------我原来的问题--------------------------

  1. fffff800`03c7fff2 4c8d1547782300  lea     r10,[nt!KeServiceDescriptorTable (fffff800`03eb7840)]
  2. fffff800`03c7fff9 4c8d1d80782300  lea     r11,[nt!KeServiceDescriptorTableShadow (fffff800`03eb7880)]
复制代码
如何通过 前面的opcode 来算出 KeServiceDescriptorTable 即fffff800`03eb7840他的值
我通过代码观察好像是
fffff800`03c7fff9+237847

疑惑1:算KeServiceDescriptorTable 的地址怎么会跟fffff800`03c7fff9有关呢?
疑惑2:按照32位的系统来看的话KeServiceDescriptorTable 的值应该直接对应的是47782300这个值才对啊。

是不是64位下有什么不同的算法呢?还是lea指令的问题?

不知道我表达的是否清楚呢?

再次表示对您的感谢!

PS
我用的火狐浏览器,普通回复的模式下看不到验证码。请了解。

17

主题

89

回帖

0

精华

铜牌会员

积分
250
 楼主| 发表于 2012-2-20 16:54:25 | 显示全部楼层
好吧,这个可以结贴了。我承认我汇编不及格。

评分

参与人数 1水晶币 +20 收起 理由
Tesla.Angela + 20 请先好好学习汇编,至少要不断补习汇编。。.

查看全部评分

17

主题

89

回帖

0

精华

铜牌会员

积分
250
 楼主| 发表于 2012-2-21 16:45:46 | 显示全部楼层
哇,居然给了20分,那我就说下原因吧。也省的以后大家会犯迷糊。
其实大家可以去翻翻汇编的书,找到jmp指令的那一节,王爽的自不必说。

newAddress-oldAddress-sizeof(cmd)==bytearray
通过这个就可以算出来了。

我用xp 32位的计算器举个例子吧
里面的一段代码

  1. 010125B0    74 04       je short calc.010125B6  从这里跳
  2. 010125b2    3C 20       cmp al,20
  3. 010125b4    76 F2       jbe short alc.010125A8
  4. 010125b6    895D B4   mov dword ptr ss:[ebp-4C],ebx   跳到这里
复制代码
根据上面的公式
010125B6  - 010125B0   -2=6-2=4

那么按照上面问题中的汇编代码,类比下吧(不知道准不准确)
SSDT(地址未知)-03C7FFF2-7=237847
所以
SSDT地址=237847+7+03C7FFF2=3EB7840

反正我是这么理解的,具体的还是请参考jmp指令吧。

PS
老大你再给我点分呗,我就可以去下载你其他的源码看了,拜托了~~~{:soso_e106:}

评分

参与人数 1水晶币 +100 收起 理由
Tesla.Angela + 100 赞一个!

查看全部评分

17

主题

89

回帖

0

精华

铜牌会员

积分
250
 楼主| 发表于 2012-2-22 09:22:39 | 显示全部楼层
多谢老大!{:soso_e142:}

17

主题

89

回帖

0

精华

铜牌会员

积分
250
 楼主| 发表于 2012-2-28 09:55:41 | 显示全部楼层
第一论坛上有源码的。真心的不会蓝屏,肯定是能找到的ssdt的地址的

4

主题

183

回帖

3

精华

钻石会员

积分
4965
发表于 2012-5-28 19:19:59 | 显示全部楼层
Tesla.Angela 发表于 2012-2-18 23:38
这是外国人的搜索方法,我的搜索方法是特征码搜索。。。
已经通过短信回复你了。。。 ...

也回复我一份吧,哈哈哈

857

主题

2632

回帖

2

精华

管理员

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

积分
36130
发表于 2012-5-28 19:49:35 | 显示全部楼层
watchsky 发表于 2012-5-28 19:19
也回复我一份吧,哈哈哈

真无语。。。我那个HOOK SSDT开源的帖子,不是你第一个回复的么?

http://www.m5home.com/bbs/thread-6495-1-1.html

4

主题

183

回帖

3

精华

钻石会员

积分
4965
发表于 2012-5-29 10:35:08 | 显示全部楼层
Tesla.Angela 发表于 2012-5-28 19:49
真无语。。。我那个HOOK SSDT开源的帖子,不是你第一个回复的么?

http://www.m5home.com/bbs/thread-64 ...

哦,你的那个收索方法我看到了,原来在restore ssdt里,哈哈
您需要登录后才可以回帖 登录 | 加入我们

本版积分规则

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