Windows系統呼叫中的系統服務表

2022-09-15 08:39:18 字數 1410 閱讀 1300

windows核心分析索引目錄:

windows系統呼叫中的系統服務表

如果這部分不理解,可以檢視 windows核心分析索引目錄依次閱讀。

我們在之前講過系統呼叫過程中,給予eax乙個編號,作業系統通過這個編號來執行某個核心函式。

這個函式是通過作業系統的系統服務表來查詢的。

現在,我們來**一下nt!kifastcallentry的反彙編**,看看其如何檢視系統服務表找到要執行的函式的。

一、系統服務表結構

windows一共有兩張表,每張表大小10h,每個成員佔4h。

如圖,其中函式位址表每成員四位元組,函式引數表每成員一位元組。

引數的數值是以位元組為單位。

二、系統服務表在**

在win7 32位中存於 [kthread+0xbc]

kd> dt _kthread

ntdll!_kthread

+0x000 header           : _dispatcher_header

+0x0bc servicetable     : ptr32 void

該結構位址為第乙個表

三、要判斷使用哪個表

傳入函式序號的第12位,儲存的就是關於使用那個表的標誌,如果為0,則呼叫第一張表,如果為2,則呼叫第二張表。

大於12位的值其實全部是忽略的。

四、找到要執行的函式

如圖,通過第0-11位作為序號,找到函式位址表和函式引數表。

以參數列中的數值作為開闢新的棧的大小,之後開闢新的棧,將引數傳入進來,之後根據函式位址表來呼叫核心函式。

呼叫Windows系統功能

彈出對話方塊 首先呼叫windows.h這個標頭檔案 include 接下來我們呼叫 messagebox messagebox 0,你好,helloworld 0 第乙個引數設定為0,第乙個引數是依賴的視窗的編號,相當於誰彈出的視窗,0為系統彈出,第二個引數是對話方塊的內容,第三個引數是對話方塊的...

Windows系統呼叫機制

記錄一下自己學習windows系統呼叫機制的過程。當呼叫乙個windows api時,系統會由使用者態切入到核心態,從ring3進入到ring0層。下面結合乙個例子來學習一下具體過程。這是乙個demo程式,只呼叫了createfile,我們用ollydbg看一下,它的具體流程是怎樣的。include...

作業系統 Windows和UNIX系統呼叫示例

系統呼叫型別 windows unix 程序控制 createprocess fork 程序控制 exitprocess exit 程序控制 waitforsingleobject wait 檔案管理 createfile open 檔案管理 readfile read 檔案管理 writefile...