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...