日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > windows >内容正文

windows

[系统底层] x86和x64下ssdt的差异

發(fā)布時間:2023/12/15 windows 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [系统底层] x86和x64下ssdt的差异 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

2019獨角獸企業(yè)重金招聘Python工程師標(biāo)準(zhǔn)>>>

X86和x64下ssdt的差異

首先介紹一下SSDT相關(guān)的結(jié)構(gòu)體

PVOID無類型指針,x86下32位,x64下64位

結(jié)構(gòu)體

typedef struct _SYSTEM_SERVICE_TABLE{

? ? ? ? PVOID??? ? ? ? ? ? ? ? ServiceTableBase;

? ? ? ? PVOID??? ? ? ? ? ? ? ? ServiceCounterTableBase;

? ? ? ? ULONGLONG??? ? ? ? NumberOfServices;

? ? ? ? PVOID??? ? ? ? ? ? ? ? ParamTableBase;

} SYSTEM_SERVICE_TABLE, *PSYSTEM_SERVICE_TABLE;

看一下對應(yīng)關(guān)系

在XP 32位下

WIN7 64位下

紅黃藍(lán)綠分別代碼結(jié)構(gòu)體中的四個成員。第三項為函數(shù)個數(shù)

這里用dp命令,以指針大小顯示數(shù)據(jù)

dp KeServiceDescriptorTable

XP下

直接是函數(shù)的地址

Win7下

計算公式如下:

Ssdt為KeServiceDescriptorTable地址,Index為索引值

FunAddr =ssdt+(ssdt+4 * Index)>>4

以ntdll!NtOpenProcess為例計算驗證一下

ntdll!NtOpenProcess 索引值為23h

Uf ntdll!NtOpenProcess 如下:

ntdll!ZwOpenProcess:

00000000`76df1510 4c8bd1? ?? ?? ? mov? ???r10,rcx

00000000`76df1513 b823000000? ?? ?mov? ???eax,23h

00000000`76df1518 0f05? ?? ?? ?? ?syscall

00000000`76df151a c3? ?? ?? ?? ???ret

索引值為23h,ssdt地址 為fffff800`03ecd800

fffff800`03ecd800 + 4*23h=fffff800`03ECD88C

fffff800`03ECD88C 地址處的值為02d0bd00

右移四位 002d0bd0

加上基址 fffff800`03ecd800+002d0bd0 = fffff800`0419E3D0

看一下u fffff800`0419E3D0

確實是內(nèi)核函數(shù)NtOpenProcess的地址。

總之,x86下的ssdt中的內(nèi)核函數(shù)地址可以直接獲得,x64下需要進行計算。

轉(zhuǎn)載于:https://my.oschina.net/u/1777508/blog/1930801

總結(jié)

以上是生活随笔為你收集整理的[系统底层] x86和x64下ssdt的差异的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。