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

    没错,NTLM就是你听说过的那个NTLM.是微软应用最广泛的认证协议之一. NTLM是NT LAN Manager的缩写,这也说明了协议的来源.NTLM 是 Windows NT 早期版本的标准安全协 ...

  2. 配置IIS Express,支持JSON

    方法有2种: 1. 命令行 a. cd "iis express的安装目录"  例如:cd C:\Program Files (x86)\IIS Express b. appcmd ...

  3. [Erlang26]怎么通过beam文件得到所有的record或源代码?

    怎么通过beam文件得到所有的record或源代码?   1. 首先必须要在compile里面加上debug_info信息: 1 > c(load,[debug_info]). {ok,load ...

  4. 使用CDI+制作支持半透明的Panle

    创建一个自定义控件程序集,并修改父类为Panle,添加如下代码: public partial class OpaqueLayer : Panel { private Color transparen ...

  5. 纸壳CMS3.0中的规则引擎,表达式计算

    纸壳CMS3.0中的规则引擎,用于计算通用表达试结果.通常业务逻辑总是复杂多变的,使用这个规则引擎可以灵活的修改计算表达式. IRuleManager IRuleManager,是使用规则引擎的主要接 ...

  6. layui json数据格式要求

    layui  数据格式要求 layui有自己的一套特定的数据格式交互(这很重要),必须参数code:0,msg:“”,count:数据size(int),data:”数据List”.一般我们选择封装返 ...

  7. 弹性盒子模型display:flex(2)

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  8. 利用jaxb实现xml和bean的相互转换

    1.使用jar包生成xsd文件 java -jar trang.jar a.xml a.xsd xml格式 生成的xsd文件 2.使用xjc命令生成bean文件 xjc a.xsd 生成的相关bean ...

  9. javascript简要笔记

      零. 数据   0. 变量 分为字符串,数字,undefined, null,对象 undefined类型是只声明了变量,但是没赋值 可以使用typeof()函数来查看变量类型   例子1 var ...

  10. Python Socket 编程示例 Echo Server

    简评:我们已经从「Python Socket 编程概览」了解了 socket API 的概述以及客户端和服务器的通信方式,接下来让我们创建第一个客户端和服务器,我们将从一个简单的实现开始,服务器将简单 ...