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

目錄
頭文件部分:
Hook函數(shù):
異常處理
主函數(shù)
測試
首頁 電腦教程 電腦知識 我們一起聊聊利用Windows頁防護機制進行函數(shù)掛鉤

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

Mar 26, 2024 am 09:40 AM
windows 函數(shù)掛鉤

摘要

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)定性和安全性。

當程序嘗試訪問Guard Page時,操作系統(tǒng)會立即識別并觸發(fā)異常,通常是訪問違例異常。這種異常的產(chǎn)生有助于程序及時發(fā)現(xiàn)內(nèi)存訪問錯誤,進而采取適當?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;
}

頭文件部分:

代碼從包含必要的頭文件開始,包括和 ,它們分別提供了Windows API和標準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)文章!

本站聲明
本文內(nèi)容由網(wǎng)友自發(fā)貢獻,版權(quán)歸原作者所有,本站不承擔(dān)相應(yīng)法律責(zé)任。如您發(fā)現(xiàn)有涉嫌抄襲侵權(quán)的內(nèi)容,請聯(lián)系admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費脫衣服圖片

Undresser.AI Undress

Undresser.AI Undress

人工智能驅(qū)動的應(yīng)用程序,用于創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用于從照片中去除衣服的在線人工智能工具。

Clothoff.io

Clothoff.io

AI脫衣機

Video Face Swap

Video Face Swap

使用我們完全免費的人工智能換臉工具輕松在任何視頻中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的代碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

功能強大的PHP集成開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級代碼編輯軟件(SublimeText3)

如何在Windows中以管理員的身份運行應(yīng)用程序? 如何在Windows中以管理員的身份運行應(yīng)用程序? Jul 01, 2025 am 01:05 AM

要以管理員身份運行程序,可使用Windows自帶功能:1.右鍵菜單選擇“以管理員身份運行”,適用于臨時提權(quán)場景;2.創(chuàng)建快捷方式并勾選“以管理員身份運行”,實現(xiàn)程序自動提權(quán)啟動;3.使用任務(wù)計劃程序配置自動化任務(wù),適合定時或后臺運行需權(quán)限的程序,注意設(shè)置細節(jié)如路徑變動和權(quán)限勾選。

Windows無法在網(wǎng)絡(luò)上訪問共享文件夾 Windows無法在網(wǎng)絡(luò)上訪問共享文件夾 Jun 30, 2025 pm 04:56 PM

遇到“Windowscan’taccesssharedfolderonnetwork”問題,通常可通過以下步驟解決:1.開啟網(wǎng)絡(luò)發(fā)現(xiàn)和文件共享功能并關(guān)閉密碼保護;2.確認目標電腦開啟共享并設(shè)置正確權(quán)限;3.檢查防火墻規(guī)則及服務(wù)狀態(tài)確保其允許共享訪問;4.使用憑據(jù)管理器添加網(wǎng)絡(luò)憑據(jù)以便長期穩(wěn)定連接。

Windows'準備好窗戶,不要關(guān)閉計算機” Windows'準備好窗戶,不要關(guān)閉計算機” Jun 30, 2025 pm 05:18 PM

遇到Windows卡在“GettingWindowsready,Don'tturnoffyourcomputer”界面時,首先應(yīng)確認是否真的卡死;1.觀察硬盤指示燈是否閃爍,2.檢查風(fēng)扇聲音是否有變化,3.至少等待30~60分鐘以確保系統(tǒng)有足夠時間完成更新操作。

Windows剪貼板歷史記錄不起作用 Windows剪貼板歷史記錄不起作用 Jun 30, 2025 pm 05:14 PM

Windows剪貼板歷史記錄不工作時,可按以下步驟排查:1.確認已開啟剪貼板歷史功能,路徑為“設(shè)置>系統(tǒng)>剪貼板”,未開啟則Win V無反應(yīng);2.檢查復(fù)制內(nèi)容類型是否受限,如大圖、特殊格式或文件路徑可能無法保存;3.確保系統(tǒng)版本支持,需為Windows101809及以上,部分企業(yè)版或LTSC不支持;4.嘗試重啟ClipboardUserService服務(wù)或結(jié)束clipups.exe進程;5.清除剪貼板緩存或重置設(shè)置,關(guān)閉再開啟“剪貼板歷史”或運行“echooff|clip”命令清理緩

如何修復(fù)卡住的Windows重新啟動屏幕? 如何修復(fù)卡住的Windows重新啟動屏幕? Jun 30, 2025 pm 05:10 PM

電腦卡在Windows重啟界面時不要急著重裝系統(tǒng),可先嘗試以下方法:1.強制關(guān)機再重啟,適用更新后卡住的情況,重復(fù)兩三次或能跳過卡頓;2.進入安全模式排查,通過疑難解答選擇啟動修復(fù)或系統(tǒng)還原,若能進安全模式則可能是驅(qū)動或軟件沖突;3.使用命令提示符修復(fù)系統(tǒng)文件,在恢復(fù)環(huán)境中依次輸入sfc和dism三條命令以修復(fù)損壞文件;4.檢查最近安裝的硬件或驅(qū)動,拔掉非必要設(shè)備或卸載新驅(qū)動以排除不兼容問題。以上步驟多數(shù)情況下能解決重啟卡頓現(xiàn)象,實在不行再考慮重裝系統(tǒng)并注意提前備份數(shù)據(jù)。

Windows粘在'撤消對計算機進行的更改” Windows粘在'撤消對計算機進行的更改” Jul 05, 2025 am 02:51 AM

電腦卡在“撤銷對計算機所做的更改”界面是Windows更新失敗后的常見問題,通常因回滾過程卡住導(dǎo)致無法正常進入系統(tǒng)。1.首先應(yīng)耐心等待足夠長時間,尤其是重啟后可能需要30分鐘以上完成回滾,觀察硬盤燈判斷是否仍在運行。2.若長時間無進展,可強制關(guān)機多次進入恢復(fù)環(huán)境(WinRE),嘗試啟動修復(fù)或系統(tǒng)還原。3.進入安全模式后,可通過控制面板卸載最近的更新記錄。4.在恢復(fù)環(huán)境中使用命令提示符執(zhí)行bootrec命令修復(fù)引導(dǎo)文件,或運行sfc/scannow檢查系統(tǒng)文件。5.最后手段是通過“重置此電腦”功能

如何在Windows上修復(fù)System_Service_Exception? 如何在Windows上修復(fù)System_Service_Exception? Jun 30, 2025 pm 05:11 PM

遇到SYSTEM\_SERVICE\_EXCEPTION錯誤時,1.更新或回滾顯卡驅(qū)動,嘗試用設(shè)備管理器更新驅(qū)動、官網(wǎng)下載安裝或使用DDU徹底卸載重裝;2.檢查內(nèi)存條,通過任務(wù)管理器和Windows內(nèi)存診斷工具檢測異常,必要時清潔內(nèi)存條或換插槽測試;3.修復(fù)系統(tǒng)文件,以管理員權(quán)限運行sfc/scannow和DISM命令,并檢查WindowsUpdate;4.卸載最近安裝的軟件或更新,特別是殺毒軟件或虛擬機工具。若上述方法無效,則可能是硬件問題需進一步檢測。

如何在Windows中修復(fù)損壞的用戶配置文件? 如何在Windows中修復(fù)損壞的用戶配置文件? Jun 30, 2025 pm 05:11 PM

用戶配置文件損壞可通過創(chuàng)建新賬戶、使用系統(tǒng)工具修復(fù)、手動遷移數(shù)據(jù)及修改注冊表等方式解決。確認問題后,可依次嘗試以下方法:1.創(chuàng)建新本地賬戶以判斷是否為原賬戶問題;2.使用sfc/scannow和DISM工具修復(fù)系統(tǒng)文件;3.通過管理員賬戶創(chuàng)建新用戶并手動遷移舊賬戶文件(包括隱藏的AppData目錄);4.高級用戶可嘗試在注冊表編輯器中定位ProfileList項,檢查并修復(fù)異常的ProfileImagePath條目,操作前需備份注冊表。

See all articles