首页
社区
课程
招聘
未解决 [悬赏]老生常谈的SSDT 2.00雪花
发表于: 2017-4-10 18:59 2477

未解决 [悬赏]老生常谈的SSDT 2.00雪花

2017-4-10 18:59
2477

combojiang大牛的关于获取SSDT原始地址的代码中

 // DONT_RESOLVE_DLL_REFERENCES flag means relocs aren't fixed

                    dwPointsToRva=*(PDWORD)((DWORD)hModule+dwPointerRva)-(DWORD)poh->ImageBase;

// does this reloc point to KeServiceDescriptorTable.Base?

                    if (dwPointsToRva==dwKSDT) {

                        // check for mov [mem32],imm32. we are trying to find 

                        // "mov ds:_KeServiceDescriptorTable.Base, offset _KiServiceTable"

                        // from the KiInitSystem.



 // our own export walker is useless here - we have GetProcAddress :)    

    if (!(dwKSDT=(DWORD)GetProcAddress(hKernel,"KeServiceDescriptorTable"))) {

        printf("Can't find KeServiceDescriptorTable/n");

        return;

    }

    // get KeServiceDescriptorTable rva

    dwKSDT-=(DWORD)hKernel;  

dwKSDT应该是相对于真实的装入地址的偏移?dwPointsToRva是相对于ImageBase的偏移,就是相对于理想中的装入地址的偏移?为什么这两者可以进行比较?


[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (1)
雪    币: 199
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
已经自己看懂了,突然发现自己少看了一个指针
2017-4-18 11:29
0
游客
登录 | 注册 方可回帖
返回
//