1. 首先选择一个带界面的程序explorer.exe进行附加
  1. kd> !process explorer.exe
  2. PROCESS ffff86893dd075c0
  3. SessionId: Cid: 0d48 Peb: 00d50000 ParentCid: 0d30
  4. DirBase: 42d9a000 ObjectTable: ffffe28598bb1800 HandleCount: .
  5. Image: explorer.exe
  1. 读取msr = 0xC0000082的值
  1. kd> .process ffff86893dd075c0
  2. Implicit process is now ffff8689`3dd075c0
  3. WARNING: .cache forcedecodeuser is not enabled
  4. kd> rdmsr 0xc0000082
  5. msr[c0000082] = fffff803`201f7280
  1. 对读取的值进行反汇编,找到 KeServiceDescriptorTableShadow 的地址
  1. kd> u fffff803`201f7280 l50
  2. nt!KiSystemCall64:
  3. fffff803`201f7280 0f01f8 swapgs
  4. fffff803`201f7283 mov qword ptr gs:[10h],rsp
  5. fffff803`201f728c 65488b2425a8010000 mov rsp,qword ptr gs:[1A8h]
  6. fffff803`201f7295 6a2b push 2Bh
  7. fffff803`201f7297 65ff342510000000 push qword ptr gs:[10h]
  8. fffff803`201f729f push r11
  9. fffff803`201f72a1 6a33 push 33h
  10. fffff803`201f72a3 push rcx
  11. fffff803`201f72a4 498bca mov rcx,r10
  12. fffff803`201f72a7 4883ec08 sub rsp,
  13. fffff803`201f72ab push rbp
  14. fffff803`201f72ac 4881ec58010000 sub rsp,158h
  15. fffff803`201f72b3 488dac2480000000 lea rbp,[rsp+80h]
  16. fffff803`201f72bb 48899dc0000000 mov qword ptr [rbp+0C0h],rbx
  17. fffff803`201f72c2 4889bdc8000000 mov qword ptr [rbp+0C8h],rdi
  18. fffff803`201f72c9 4889b5d0000000 mov qword ptr [rbp+0D0h],rsi
  19. nt!KiSystemServiceUser:
  20. fffff803`201f72d0 c645ab02 mov byte ptr [rbp-55h],
  21. fffff803`201f72d4 65488b1c2588010000 mov rbx,qword ptr gs:[188h]
  22. fffff803`201f72dd 0f0d8b90000000 prefetchw [rbx+90h]
  23. fffff803`201f72e4 0fae5dac stmxcsr dword ptr [rbp-54h]
  24. fffff803`201f72e8 650fae142580010000 ldmxcsr dword ptr gs:[180h]
  25. fffff803`201f72f1 807b0300 cmp byte ptr [rbx+],
  26. fffff803`201f72f5 66c785800000000000 mov word ptr [rbp+80h],
  27. fffff803`201f72fe 0f84b1000000 je nt!KiSystemServiceUser+0xe5 (fffff803`201f73b5)
  28. fffff803`201f7304 488945b0 mov qword ptr [rbp-50h],rax
  29. fffff803`201f7308 48894db8 mov qword ptr [rbp-48h],rcx
  30. fffff803`201f730c 488955c0 mov qword ptr [rbp-40h],rdx
  31. fffff803`201f7310 f6430303 test byte ptr [rbx+],
  32. fffff803`201f7314 4c8945c8 mov qword ptr [rbp-38h],r8
  33. fffff803`201f7318 4c894dd0 mov qword ptr [rbp-30h],r9
  34. fffff803`201f731c je nt!KiSystemServiceUser+0x53 (fffff803`201f7323)
  35. fffff803`201f731e e80d53ffff call nt!KiSaveDebugRegisterState (fffff803`201ec630)
  36. fffff803`201f7323 f6430304 test byte ptr [rbx+],
  37. fffff803`201f7327 742e je nt!KiSystemServiceUser+0x87 (fffff803`201f7357)
  38. fffff803`201f7329 4c8955e0 mov qword ptr [rbp-20h],r10
  39. fffff803`201f732d 4c8955d8 mov qword ptr [rbp-28h],r10
  40. fffff803`201f7331 0f2945f0 movaps xmmword ptr [rbp-10h],xmm0
  41. fffff803`201f7335 0f294d00 movaps xmmword ptr [rbp],xmm1
  42. fffff803`201f7339 0f295510 movaps xmmword ptr [rbp+10h],xmm2
  43. fffff803`201f733d 0f295d20 movaps xmmword ptr [rbp+20h],xmm3
  44. fffff803`201f7341 0f296530 movaps xmmword ptr [rbp+30h],xmm4
  45. fffff803`201f7345 0f296d40 movaps xmmword ptr [rbp+40h],xmm5
  46. fffff803`201f7349 fb sti
  47. fffff803`201f734a 488bcc mov rcx,rsp
  48. fffff803`201f734d e89e105a00 call nt!PsPicoSystemCallDispatch (fffff803`207983f0)
  49. fffff803`201f7352 e900040000 jmp nt!KiSystemServiceExitPico (fffff803`201f7757)
  50. fffff803`201f7357 f6430380 test byte ptr [rbx+],80h
  51. fffff803`201f735b je nt!KiSystemServiceUser+0xc6 (fffff803`201f7396)
  52. fffff803`201f735d b9020100c0 mov ecx,0C0000102h
  53. fffff803`201f7362 0f32 rdmsr
  54. fffff803`201f7364 48c1e220 shl rdx,20h
  55. fffff803`201f7368 480bc2 or rax,rdx
  56. fffff803`201f736b 483983f0000000 cmp qword ptr [rbx+0F0h],rax
  57. fffff803`201f7372 je nt!KiSystemServiceUser+0xc6 (fffff803`201f7396)
  58. fffff803`201f7374 488b93f0010000 mov rdx,qword ptr [rbx+1F0h]
  59. fffff803`201f737b 0fba6b7408 bts dword ptr [rbx+74h],
  60. fffff803`201f7380 66ff8be6010000 dec word ptr [rbx+1E6h]
  61. fffff803`201f7387 mov qword ptr [rdx+80h],rax
  62. fffff803`201f738e fb sti
  63. fffff803`201f738f e8ac0f0000 call nt!KiUmsCallEntry (fffff803`201f8340)
  64. fffff803`201f7394 eb0b jmp nt!KiSystemServiceUser+0xd1 (fffff803`201f73a1)
  65. fffff803`201f7396 f6430340 test byte ptr [rbx+],40h
  66. fffff803`201f739a je nt!KiSystemServiceUser+0xd1 (fffff803`201f73a1)
  67. fffff803`201f739c 0fba6b7410 bts dword ptr [rbx+74h],10h
  68. fffff803`201f73a1 488b45b0 mov rax,qword ptr [rbp-50h]
  69. fffff803`201f73a5 488b4db8 mov rcx,qword ptr [rbp-48h]
  70. fffff803`201f73a9 488b55c0 mov rdx,qword ptr [rbp-40h]
  71. fffff803`201f73ad 4c8b45c8 mov r8,qword ptr [rbp-38h]
  72. fffff803`201f73b1 4c8b4dd0 mov r9,qword ptr [rbp-30h]
  73. fffff803`201f73b5 fb sti
  74. fffff803`201f73b6 48898b88000000 mov qword ptr [rbx+88h],rcx
  75. fffff803`201f73bd mov dword ptr [rbx+80h],eax
  76. fffff803`201f73c3 66666666660f1f840000000000 nop word ptr [rax+rax]
  77. nt!KiSystemServiceStart:
  78. fffff803`201f73d0 4889a390000000 mov qword ptr [rbx+90h],rsp
  79. fffff803`201f73d7 8bf8 mov edi,eax
  80. fffff803`201f73d9 c1ef07 shr edi,
  81. fffff803`201f73dc 83e720 and edi,20h
  82. fffff803`201f73df 25ff0f0000 and eax,0FFFh
  83. nt!KiSystemServiceRepeat:
  84. fffff803`201f73e4 4c8d1595142a00 lea r10,[nt!KeServiceDescriptorTable (fffff803`)]
  85. fffff803`201f73eb 4c8d1dcea22800 lea r11,[nt!KeServiceDescriptorTableShadow (fffff803`204816c0)]
  1. KeServiceDescriptorTableShadow 是两张表,第一张是KeServiceDescriptorTable, 第二张才是Shadow SSDT
  1. kd> dq KeServiceDescriptorTableShadow
  2. fffff803`204816c0 fffff803`203d1b40 `
  3. fffff803`204816d0 `000001cc fffff803`203d2274
  4. fffff803`204816e0 ffff8063`9353d000 `
  5. fffff803`204816f0 ` ffff8063`9353e6fc
  6. fffff803` fffff803`203d1b40 `
  7. fffff803` `000001cc fffff803`203d2274
  8. fffff803` ffff8063`9353eba0 `
  9. fffff803` ` ffff8063`9354029c
  1. dd命令,找到的就是Shadow SSDT函数相对于Shadow SSDT Table的偏移
  1. kd> dd ffff8063`9353d000
  2. ffff8063`9353d000 ffa4a4c0 ffa4a580 ffa4a640 ffa4a700
  3. ffff8063`9353d010 ffa4a7c1 ffa4a880 ffa4a940 ffa4aa00
  4. ffff8063`9353d020 ffa4aac0 ffa4ab80 ffa4ac43 ffa4ad07
  5. ffff8063`9353d030 ffa4adc0 ffa4ae80 ffa4af40 ffa4b000
  6. ffff8063`9353d040 ffa4b0c0 ffa4b180 ffa4b240 ffa4b300
  7. ffff8063`9353d050 ffa4b3c0 ffa4b480 ffa4b540 ffa4b600
  8. ffff8063`9353d060 ffa4b6c0 ffa4b780 ffa4b840 ffa4b901
  9. ffff8063`9353d070 ffa4b9c0 ffa4ba80 ffa4bb40 ffa4bc04

64位使用windbg获取Shadow SSDT的更多相关文章

  1. Shadow SSDT详解、WinDbg查看Shadow SSDT

    一.获取ShadowSSDT 好吧,我们已经在R3获取SSDT的原始地址及SDT.SST.KiServiceTbale的关系里面提到:所有的SST都保存在系统服务描述表(SDT)中.系统中一共有两个S ...

  2. 32位程序在64位系统上获取系统安装时间(要使用KEY_WOW64_64KEY标记)

    众所周知,取系统的安装时间可取注册表HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion的子项InstallDate,此值是个 ...

  3. 两种方法获取shadow ssdt

    ULONG GetShadowSsdtCurrentAddresses( PSSDT_ADDRESS   AddressInfo, PULONG          Length ) { PSYSTEM ...

  4. 32位和64位系统内核函数调用从ZwProtectVirtualMemory到NtProtectVirtualMemory

    0x01 前言 我们知道R3层中,Zw系列函数和Nt系列函数函数是一样的,但是在内核Zw系列函数调用了Nt系列函数,但是为什么要在内核设置一个Zw系列函数而不是直接调用Nt函数呢?Zw系列函数又是怎么 ...

  5. [转载]使用32位64位交叉编码混淆来打败静态和动态分析工具 - wildsator

    0×00 摘要 混淆是一种能增加二进制分析和逆向工程难度与成本的常用技术.主流的混淆技术都是着眼于使用与目标CPU相同的机器代码,在相同的处理器模式下,隐藏代码并进行控制.本文中引入了一种新的混淆方法 ...

  6. win7(64)位下WinDbg64调试VMware10下的win7(32位)

    win7(64)位下WinDbg64调试VMware10下的win7(32位) 一 Windbg32位还是64位的选择 参考文档<Windbg 32位版本和64位版本的选择> http:/ ...

  7. 64 位 Windows 平台开发注意要点之文件系统重定向

    Program Files 的重定向 很多开发人员都知道,在 64 位 Windows 系统上,32 位程序是无法获取得到 C:\Program Files 的完整路径的,只能获取到 C:\Progr ...

  8. wow64 32位进程中切换64位模式,取回64位寄存器值

    32位dbg中编辑的: 7711E9D3 | 6A | | 7711E9D5 | E8 | 7711E9DA | | | 7711E9DE | CB | ret far | 6A E8 CB 64位d ...

  9. Windbg 调试工具32位/64位版本下载

    最新的Windbg调试工具32位/64位版本越来越不好下载了,这里通过CSDN的渠道给大家一个下载地址,帮助大家更好下载工具: https://github.com/EasyDarwin/Tools/ ...

随机推荐

  1. 基于 Raphael 的 Web UI 设计 - 初稿

    基于 Raphael 的 UI 设计 - 初稿 还有很多地方需要完善,这次要把 Raphael 彻底用起来,^_^, 一定要150字哦,一图抵千字啊,^_^,不喜欢写字的,那么怎么凑够150字呢,说说 ...

  2. Vsual Studio 高版本打开低版本项目的方法

    https://www.cnblogs.com/jmliao/p/5594179.html

  3. oracle中的序列,可以解决自增各种编号自动增长问题,说一下我的小问题。

    1.生成0001-9999的编码 //在PL/sql中 创建一个序列 Create sequence seq_cdptIncrement by 1 --自增数Start with 1 --开始累加数M ...

  4. C#基础之流程控制语句详解

    C#程序的执行都是一行接一行.自上而下地进行,不遗漏任何代码.为了让程序能按照开发者所设计的流程进行执行,必然需要进行条件判断.循环和跳转等过程,这就需要实现流程控制.C#中的流程控制包含了条件语句. ...

  5. Nova 通过Python API 查询,创建,删除flavor

    [root@controller ~]# cat flavor.py from novaclient import client as nvclient from novaclient import ...

  6. Gogland使用 - 非常简单查看Go语言源代码全貌!

    Go语言也支持面向对象开发,不过和以往我们所使用的面向对象开发还是有不同,Go语言主张组合方式形成类的概念,在Go语言中,结构起到很大作用,如果用结构组合字段和方法,那么单纯在源代码中看,真的是费时费 ...

  7. “全栈2019”Java异常第十五章:异常链详解

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java异 ...

  8. hadoop版本总结

         hadoop有两个分支:0.20.x 和0.23.x.其中0.20.x是比较稳定的版本,0.23.x中新特性更多,但相对不稳定. 其中从0.20.x 分支发展出来的是:hadoop1.0,C ...

  9. 用css做出来一个三角形

    用css做出来一个三角形      <!--不设置宽高  转换行内块  边线设置成宽度-->       <div class="triangle"> 三角 ...

  10. 记一次在CentOS系统搭建python3环境

    首先,查看linux系统类型和版本:参考:查看linux系统类型和版本 默认Centos7中是有python安装的,但是是2.7版本,实际上这几个文件之间是有依赖关系的.在ls 后面加个 -al参数, ...