ramonliu 发表于 2013-10-28 20:47:01

WinDbg 產生 SSDT 腳本(Win7x64)

本帖最后由 ramonliu 于 2013-10-29 01:03 编辑

網上大都是32位元, 再不然是WinXP 64位元, 研究了一下, 弄了一個腳本,
可以正常地在Win7x64, 如下:
$$ Windows 7 SP1 x64
$$ variables
aS ufLinkS "<u><col fg=\\\"emphfg\\\"><link name=\\\"%p\\\" cmd=\\\"u 0x%p\\\">";
aS ufLinkE "</link></col></u>";

r $t1 = nt!KeServiceDescriptorTable;
r $t2 = poi(@$t1 + 10);
r $t3 = poi(@$t1);

.printf "\nServiceDescriptorTable = 0x%p\n", @$t1;
.printf "ServiceSectionCount = 0x%X\n", @$t2;
.printf "ServiceTable = 0x%p\n", @$t3;
.printf " Index FunctionAddr      Symbols\n";
.printf "---------------------------------------------\n\n";

.for (r $t0 = 0; @$t0 < @$t2; r $t0 = @$t0 + 1)
{
$$ FuncAddr=( >>4 +KeServiceDescriptortable)&0xFFFFFFF0.
        r $t4 = (dwo((@$t3 + (@$t0 * 4))) >> 4);
        .if (@$t4 > 0x7ffffff)
        {       
                r $t5 = @$t3 + @$t4 - 10000000;
        }
        .else
        {
                r $t5 = @$t3 + @$t4;
        }       
        .printf /D "[%4d] ${ufLinkS}%p${ufLinkE}: (%y)\n", @$t0, @$t5, @$t5, @$t5, @$t5;
}

.printf "\n- end -\n";

ad ufLinkS;
ad ufLinkE;
腳本使用方法:
指令=> $$><e:\ssdt2.wbs

乔丹二世 发表于 2013-10-29 15:26:08

广告位招租,10美元/年。

Tesla.Angela 发表于 2013-10-29 22:29:03

樓主的WINDBG功底不錯,建議把這些腳本做成一個集合,模擬出ARK的功能(除了列舉SSDT,還有INLINE HOOK、OBJECT HOOK等)。

ramonliu 发表于 2013-10-30 06:45:46

我才玩底層不久, 還在摸索中... 昨天才搞懂鬼佬那段找 SSDT 的程式碼 {:soso_e127:}
還有好多要學習~~ {:soso_e134:}
只能說, 程式寫久了, 唯一的好處就是進入狀況, 理解時間, 比別人快囉... {:soso_e117:}

watchsky 发表于 2013-10-30 11:16:46

see

kk1025 发表于 2013-11-2 15:55:26

推一推. 看看怎麼做
页: [1]
查看完整版本: WinDbg 產生 SSDT 腳本(Win7x64)