国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
KiFastCallEntry簡(jiǎn)單呀簡(jiǎn)單呀分析呀分析

WinXP系統(tǒng)調(diào)用的步驟

sysenter指令:從sysenter_CS_MSR、sysenter_ESP_MSR、sysenter_EIP_MSR寄存器讀取數(shù)據(jù),填寫cs、ss(cs+8)esp、eip。進(jìn)入ring0特權(quán)級(jí)

步驟:
0. 進(jìn)入時(shí)eax = 服務(wù)號(hào),edx = 當(dāng)前棧頂 (+0x08為用戶參數(shù)) sysenter 進(jìn)入ring0
1. 初始化ds、es為0x23,fs 0x30
2.PCR+0x40(0FFDFF040h)處取得TSS,TSS+0x04取得當(dāng)前線程內(nèi)核棧地址,賦值給esp。所以sysenter_ESP_MSR沒有意義。
esp = pcr->TSS->Esp0
3. 關(guān)中斷,建立ThTrapFrame
ntdll!_KTRAP_FRAME
   +0x000 DbgEbp           : Uint4B
   +0x004 DbgEip           : Uint4B
   +0x008 DbgArgMark       : Uint4B
   +0x00c DbgArgPointer    : Uint4B
   +0x010 TempSegCs        : Uint4B
   +0x014 TempEsp          : Uint4B
   +0x018 Dr0              : Uint4B
   +0x01c Dr1              : Uint4B
   +0x020 Dr2              : Uint4B
   +0x024 Dr3              : Uint4B
   +0x028 Dr6              : Uint4B ;如果KTHREAD中DebugActive被置位 則填寫上面的值
   +0x02c Dr7              : Uint4B ;置0
   +0x030 SegGs            : Uint4B
   +0x034 SegEs            : Uint4B
   +0x038 SegDs            : Uint4B
   +0x03c Edx              : Uint4B
   +0x040 Ecx              : Uint4B
   +0x044 Eax              : Uint4B
   +0x048 PreviousPreviousMode : Uint4B     ;設(shè)置為USERMODE (1),并設(shè)置KTHREAD中的對(duì)應(yīng)字段為USERMODE  

   +0x04c ExceptionList    : Ptr32 _EXCEPTION_REGISTRATION_RECORD;從PCR獲得,并且設(shè)置更新PCR中的ExceptionList為-1
   +0x050 SegFs            : Uint4B
   +0x054 Edi              : Uint4B
   +0x058 Esi              : Uint4B
   +0x05c Ebx              : Uint4B
   +0x060 Ebp              : Uint4B
   +0x064 ErrCode          : Uint4B
   +0x068 Eip              : Uint4B   ;返回地址從USER_SHARED_DATA+UsSystemCallReturn取得,我的系統(tǒng)上是0x7c92eb94,只是一個(gè)ret,所以返回用戶態(tài)時(shí)直接可以返回Zw.....函數(shù)
   +0x06c SegCs            : Uint4B
   +0x070 EFlags           : Uint4B
   +0x074 HardwareEsp      : Uint4B
   +0x078 HardwareSegSs    : Uint4B
   +0x07c V86Es            : Uint4B
   +0x080 V86Ds            : Uint4B
   +0x084 V86Fs            : Uint4B
   +0x088 V86Gs            : Uint4B
更新KTHREAD中的TrapFrame

4. 從KTHREAD中取出服務(wù)表ServiceTable
   將用戶堆棧中的參數(shù)復(fù)制到內(nèi)核堆棧中,如果service no & 0x1000 為ssdtShadow服務(wù),否則為ssdt服務(wù)。
   如果是ssdtShadow服務(wù)則先Call _KeGdiFlushUserBatch
   call相應(yīng)服務(wù)
5. 取出_KTRAP_FRAME 恢復(fù)ExceptionList 等。。。。沒看下去。。。

疑問:
恢復(fù)ExceptionList 時(shí)
        mov     edx, [ebp].TsEdx        ; restore previous trap frameaddress
        mov     [ecx].ThTrapFrame, edx ;
   [ebp].TsEdx填了么??不應(yīng)該是[ebp].ExceptionList??


本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
精華區(qū)文章閱讀
Linux 2.6 對(duì)新型 CPU 快速系統(tǒng)調(diào)用的支持
Linux2.6對(duì)新型CPU的支持
Windows系統(tǒng)調(diào)用中API的3環(huán)部分(依據(jù)分析重寫ReadProcessMemory函數(shù))
SYSENTER
Windows內(nèi)核情景分析一書整理 – API的調(diào)用過程
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服