国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

我們一起聊聊利用Windows頁防護機制進行函數(shù)掛鉤

WBOY
發(fā)布: 2024-03-26 09:40:47
轉(zhuǎn)載
917人瀏覽過

摘要

guard pages是操作系統(tǒng)中的一種內(nèi)存保護機制,用于檢測和防止內(nèi)存的非法訪問。在windows操作系統(tǒng)中,guard pages通常位于內(nèi)存頁的末尾,這些頁面通常是未分配或不可訪問的。guard pages的主要功能是提高系統(tǒng)的安全性,防止惡意程序或錯誤訪問內(nèi)存,從而保護系統(tǒng)免受潛在的風(fēng)險和安全漏洞。通過使用guard pages,操作系統(tǒng)可以及時發(fā)現(xiàn)并阻止對內(nèi)存的非法操作,確保系統(tǒng)的穩(wěn)定性和安全性。

當(dāng)程序嘗試訪問Guard Page時,操作系統(tǒng)會立即識別并觸發(fā)異常,通常是訪問違例異常。這種異常的產(chǎn)生有助于程序及時發(fā)現(xiàn)內(nèi)存訪問錯誤,進而采取適當(dāng)?shù)拇胧?,如終止程序或記錄錯誤信息,以防潛在的安全漏洞被利用。通過這種方式,系統(tǒng)能夠保持對內(nèi)存訪問的控制,確保程序運行的穩(wěn)定性和安全性。 Guard Page的設(shè)置為系統(tǒng)提供了一種有效的機制,用于監(jiān)視和保護內(nèi)存訪問,使得任何潛在的問題都能夠被及時發(fā)現(xiàn)和處理,從而提高了系統(tǒng)的穩(wěn)定性和安全性。通過異常的觸發(fā),程序能夠在錯誤發(fā)生時快速做出響應(yīng),有效地防止可能導(dǎo)致嚴重后果的內(nèi)存訪問問題。

Guard Pages在Windows Hooking中被廣泛應(yīng)用,用于監(jiān)測和攔截對特定內(nèi)存區(qū)域的訪問。通過這種技術(shù),可以實現(xiàn)對系統(tǒng)功能的修改或監(jiān)視,為軟件調(diào)試、安全研究和惡意軟件分析等領(lǐng)域提供有力支持。Guard Pages的特點是能夠檢測對受保護內(nèi)存的訪問,并在訪問發(fā)生時觸發(fā)相應(yīng)的處理程序。這種機制對于保護關(guān)鍵數(shù)據(jù)或代碼非常有用,可以有效防止未經(jīng)授權(quán)的訪問和潛在的安全漏洞。通過合理配置Guard Pages,可以提高系統(tǒng)的安全性和穩(wěn)定性,確保系統(tǒng)

實現(xiàn)過程

整體代碼如下:

#include 
#include 

// Hook函數(shù)功能
HANDLE hook(LPSECURITY_ATTRIBUTES rcx, SIZE_T rdx, LPTHREAD_START_ROUTINE r8, LPVOID r9, DWORD stck1, LPDWORD stck2) {
MessageBoxA(0, "CreateThread() was called!", "YAY!", 0);
MessageBoxA(0, "Hooked CreateThread", "YAY!", 0);
// 這里調(diào)用原始CreateThread函數(shù)
//return CreateThread(rcx, rdx, r8, r9, stck1, stck2);
 return NULL;
}

LONG WINAPI handler(EXCEPTION_POINTERS * ExceptionInfo) {
 if (ExceptionInfo->ExceptionRecord->ExceptionCode == STATUS_GUARD_PAGE_VIOLATION) {
if (ExceptionInfo->ContextRecord->Rip == (DWORD64) &CreateThread) {
 printf("[!] Exception (%#llx)!" , ExceptionInfo->ExceptionRecord->ExceptionAddress);
printf("nClick a key to continue...n");
 getchar();
 ExceptionInfo->ContextRecord->Rip = (DWORD64) &hook;
printf("Modified RIP Points to: %#llxn", ExceptionInfo->ContextRecord->Rip);
printf("Hook Function = %#llxn", (DWORD64) &hook);
}
return EXCEPTION_CONTINUE_EXECUTION;
 }
 return EXCEPTION_CONTINUE_SEARCH;
}

int main() {
 DWORD old = 0;
DWORD param = 5000;
 AddVectoredExceptionHandler(1, &handler);
 VirtualProtect(&CreateThread, 1, PAGE_EXECUTE_READ | PAGE_GUARD, &old);
 printf("CreateThread addr = %#pn", &CreateThread);
 
 HANDLE hThread = CreateThread(0, 0, (LPTHREAD_START_ROUTINE) &Sleep, ?m, 0, 0);
 WaitForSingleObject(hThread, param);
 printf("YEP!n");

 return 0;
}
登錄后復(fù)制

頭文件部分:

代碼從包含必要的頭文件開始,包括和 ,它們分別提供了Windows API和標(biāo)準(zhǔn)I/O操作的函數(shù)和定義。

Hook函數(shù):

本代碼定義了一個鉤子函數(shù)hook,用于攔截Windows應(yīng)用程序中創(chuàng)建線程的CreateThread API函數(shù)。在鉤子函數(shù)內(nèi)部,展示了兩個消息框,以提示CreateThread函數(shù)的調(diào)用情況并表明它已被hook。需要注意的是,在這段代碼中,并沒有實際調(diào)用原始的CreateThread函數(shù),而是進行了攔截處理。

異常處理

定義了一個處理函數(shù), 并使用AddVectoredExceptionHandler將其設(shè)置為異常處理程序, 這個函數(shù)被設(shè)計用來處理異常,特別是STATUS_GUARD_PAGE_VIOLATION,這是一種在受保護的內(nèi)存頁上嘗試執(zhí)行代碼時發(fā)生的異常。 如果異常代碼是STATUS_GUARD_PAGE_VIOLATION,并且指令指針(Rip)指向CreateThread函數(shù),它會顯示一條消息,并修改Rip指向鉤子函數(shù)。 任何嘗試調(diào)用執(zhí)行CreateThread函數(shù)的操作都將被重定向到執(zhí)行鉤子函數(shù)。

主函數(shù)

在主函數(shù)內(nèi)部,聲明了一個變量old,但未被使用。 一個param變量被設(shè)置為5000,并調(diào)用AddVectoredExceptionHandler函數(shù)將處理程序函數(shù)注冊為異常處理程序。 使用VirtualProtect在CreateThread函數(shù)上設(shè)置了一個守衛(wèi)頁面。如果嘗試執(zhí)行它,這將觸發(fā)處理程序函數(shù)。 使用printf顯示了CreateThread函數(shù)的地址。 使用CreateThread創(chuàng)建了一個新線程,但似乎并沒有提供任何實際目的,因為該線程只是休眠了5000毫秒。 等待線程結(jié)束后,打印“YEP!”。

測試

將代碼編譯后執(zhí)行,效果如下:

我們一起聊聊利用Windows頁防護機制進行函數(shù)掛鉤

圖片

以上就是我們一起聊聊利用Windows頁防護機制進行函數(shù)掛鉤的詳細內(nèi)容,更多請關(guān)注php中文網(wǎng)其它相關(guān)文章!

最佳 Windows 性能的頂級免費優(yōu)化軟件
最佳 Windows 性能的頂級免費優(yōu)化軟件

每個人都需要一臺速度更快、更穩(wěn)定的 PC。隨著時間的推移,垃圾文件、舊注冊表數(shù)據(jù)和不必要的后臺進程會占用資源并降低性能。幸運的是,許多工具可以讓 Windows 保持平穩(wěn)運行。

下載
相關(guān)標(biāo)簽:
來源:每日運維網(wǎng)
本文內(nèi)容由網(wǎng)友自發(fā)貢獻,版權(quán)歸原作者所有,本站不承擔(dān)相應(yīng)法律責(zé)任。如您發(fā)現(xiàn)有涉嫌抄襲侵權(quán)的內(nèi)容,請聯(lián)系admin@php.cn
最新問題
開源免費商場系統(tǒng)廣告
最新下載
更多>
網(wǎng)站特效
網(wǎng)站源碼
網(wǎng)站素材
前端模板
關(guān)于我們 免責(zé)申明 意見反饋 講師合作 廣告合作 最新更新
php中文網(wǎng):公益在線php培訓(xùn),幫助PHP學(xué)習(xí)者快速成長!
關(guān)注服務(wù)號 技術(shù)交流群
PHP中文網(wǎng)訂閱號
每天精選資源文章推送
PHP中文網(wǎng)APP
隨時隨地碎片化學(xué)習(xí)
PHP中文網(wǎng)抖音號
發(fā)現(xiàn)有趣的

Copyright 2014-2025 http://www.miracleart.cn/ All Rights Reserved | php.cn | 湘ICP備2023035733號