win7 x64中寻找win7 64 ssdtssdt

番茄系统家园 · 2021-08-14 23:50:09

win7 x64中寻找win7 64 ssdtssdt

win7 x64下:

要得到SSDT的地址,首先找到的地址,在它的下面就有SSDT的线索

找的只需要读出MSR(特别模块寄存器)的值,便是的地址:

以下使用调试:

[]![10h],rspfffff80003ed964c65488b2425a8010000movrsp,qwordptrgs:[1A8h]fffff80003ed96556a2bpush2Bhfffff80003ed965765ff****0pushqwordptrgs:[10h]fffff80003ed965f4153pushr11fffff80003ed96616a33push33hfffff80003ed966351pushrcx

看一下KiSystemCall64的下面

3:kdufnt!KiSystemCall64Flowanalysiswasincomplete,somecodemaybemissingnt!KiSystemCall64:fffff80003ed96400f01f8swapgsfffff80003ed********movqwordptrgs:[10h],rspfffff80003ed964c65488b2425a8010000movrsp,qwordptrgs:[1A8h]fffff80003ed96556a2bpush2Bhfffff80003ed965765ff****0pushqwordptrgs:[10h]fffff80003ed965f4153pushr11fffff80003ed96616a33push33hfffff80003ed966351pushrcxfffff80003ed9664498bcamovrcx,r10fffff80003ed96674883ec08subrsp,8fffff80003ed966b55pushrbpfffff80003ed966c4881ec58010000subrsp,158hfffff80003ed9673488dac****learbp,[rsp80h]fffff80003ed967b48899dc0000000movqwordptr[rbp0C0h],rbxfffff80003ed96824889bdc8000000movqwordptr[rbp0C8h],rdifffff80003ed96894889b5d0000000movqwordptr[rbp0D0h],rsifffff80003ed9690c645ab02movbyteptr[rbp-55h],2fffff80003ed****b1c****movrbx,qwordptrgs:[188h]fffff80003ed969d0f0d8bd8010000prefetchw[rbx1D8h]fffff80003ed96a40fae5dacstmxcsrdwordptr[rbp-54h]fffff80003ed96a8650fae****0ldmxcsrdwordptrgs:[180h]fffff80003ed96b1807b0300cmpbyteptr[rbx3],0fffff80003ed96b566c****0000movwordptr[rbp80h],0fffff80003ed96be0f848c000000jent!KiSystemCall640x110(fffff80003ed9750)Branchnt!KiSystemCall640x84:fffff80003ed96c4488945b0movqwordptr[rbp-50h],raxfffff80003ed96c848894db8movqwordptr[rbp-48h],rcxfffff80003ed96cc488955c0movqwordptr[rbp-40h],rdxfffff80003ed96d0f6430303testbyteptr[rbx3],3fffff80003ed96d44c8945c8movqwordptr[rbp-38h],r8fffff80003ed96d84c894dd0movqwordptr[rbp-30h],r9fffff80003ed96dc7405jent!KiSystemCall640xa3(fffff80003ed96e3)Branchnt!KiSystemCall640x9e:fffff80003ed96dee80d140000callnt!KiSaveDebugRegisterState(fffff80003edaaf0)nt!KiSystemCall640xa3:fffff80003ed96e3f6430380testbyteptr[rbx3],80hfffff80003ed96e77442jent!KiSystemCall640xeb(fffff80003ed972b)Branchnt!KiSystemCall640xa9:fffff80003ed96e9b9020100c0movecx,0C0000102hfffff80003ed96ee0f32rdmsrfffff80003ed96f048c1e220shlrdx,20hfffff80003ed96f4480bc2orrax,rdxfffff80003ed96f7483983b8000000cmpqwordptr[rbx0B8h],raxfffff80003ed96fe742bjent!KiSystemCall640xeb(fffff80003ed972b)Branchnt!KiSystemCall640xc0:fffff80003ed****b0010000cmpqwordptr[rbx1B0h],raxfffff80003ed97077422jent!KiSystemCall640xeb(fffff80003ed972b)Branchnt!KiSystemCall640xc9:fffff80003ed9709488b93b8010000movrdx,qwordptr[rbx1B8h]fffff80003ed97100fba6b4c0bbtsdwordptr[rbx4Ch],0Bhfffff80003ed971566ff8bc4010000decwordptr[rbx1C4h]fffff80003ed971c****000movqwordptr[rdx80h],raxfffff80003ed9723fbstifffff80003ed9724e8170b0000callnt!KiUmsCallEntry(fffff80003eda240)fffff80003ed9729eb0fjmpnt!KiSystemCall640xfa(fffff80003ed973a)Branchnt!KiSystemCall640xeb:fffff80003ed972bf6430340testbyteptr[rbx3],40hfffff80003ed972f7409jent!KiSystemCall640xfa(fffff80003ed973a)Branchnt!KiSystemCall640xf1:fffff80003ed9731f00fbaab****lockbtsdwordptr[rbx100h],8nt!KiSystemCall640xfa:fffff80003ed973a488b45b0movrax,qwordptr[rbp-50h]fffff80003ed973e488b4db8movrcx,qwordptr[rbp-48h]fffff80003ed9742488b55c0movrdx,qwordptr[rbp-40h]fffff80003ed97464c8b45c8movr8,qwordptr[rbp-38h]fffff80003ed974a4c8b4dd0movr9,qwordptr[rbp-30h]fffff80003ed974e6690xchgax,axnt!KiSystemCall640x110:fffff80003ed9750fbstifffff80003ed****be0010000movqwordptr[rbx1E0h],rcxfffff80003ed97588983f8010000movdwordptr[rbx1F8h],eaxfffff80003ed975e4889a3d8010000movqwordptr[rbx1D8h],rspfffff80003ed97658bf8movedi,eaxfffff80003ed9767c1ef07shredi,7fffff80003ed976a83e720andedi,20hfffff80003ed976d25ff0f0000andeax,0FFFhnt!KiSystemServiceRepeat:fffff80003ed97724c8d15c7202300lear10,[nt!KeServiceDescriptorTable(fffff8000410b840)]fffff80003ed97794c8d1d00212300lear11,[nt!KeServiceDescriptorTableShadow(fffff8000410b880)]以下无用代码省略...

可以看到,在fffff80003ed9772处出现了[nt!KeServiceDescriptorTable]也就是SSDT地址,前3个字节是汇编指令,后4个字节储存的就是SSDT的偏移地址,为0x002320c7(00是高位,c7是低位,所以逆过来),fffff80003ed****c77便可以得到SSDT的地址([lear10,XXXXXXXX]指令的长度是7个字节,所以还要加7),

所以从KiSystemCall64开始向下500个地址内搜索4c8d15就可以找到lea  r10,[nt!KeServiceDescriptorTable(fffff8000410b840)]这条指令

具体实现代码:

ULONGLONGGetSsdt(){PUCHARstartaddr(PUCHAR)__readmsr(0xC0000082);PUCHAREndaddrstartaddr0x500;PUCHARiNULL;UCHARb1,b2,b3;ULONGoffset0;ULONGLONGaddr0;for(istartaddr;iEndaddr;i){b1*i;b2*(i1);b3*(i2);if(b10x4cb20x8db30x15){memcpy(offset,i3,4);addr(ULONGLONG)offset(ULONGLONG)i7;returnaddr;}}return0;}

 

win10 x64可以参考https://blog.csdn.net/qq_41655422/article/details/****

相关阅读

  • win7激活密钥教程
  • win7 64 ssdt
  • win7 x64中寻找win7 64 ssdtssdt
  • 免责声明: 凡标注转载/编译字样内容并非本站原创,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如果你觉得本文好,欢迎推荐给朋友阅读;本文链接: https://m.nndssk.com/post/33646.html。
    猜你喜欢
    最新应用
    热门应用