成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

利用Windows頁防護機制進行函數掛鉤

系統 Windows
在主函數內部,聲明了一個變量old,但未被使用。 一個param變量被設置為5000,并調用AddVectoredExceptionHandler函數將處理程序函數注冊為異常處理程序。

摘要

Guard Pages是一種操作系統內存保護機制,旨在檢測和防止對內存的非法訪問。在Windows操作系統中,Guard Pages通常被用作內存頁的末尾,它們通常是未分配或不可訪問的內存頁。

當程序試圖訪問一個Guard Page時,操作系統會檢測到這種訪問并引發異常,通常是訪問沖突異常(如訪問違例異常)。這種異常的引發使得程序能夠及時檢測到內存訪問錯誤,從而可以采取適當的措施,例如終止程序或記錄錯誤信息,以防止潛在的安全漏洞被利用。

在Windows Hooking中,利用Guard Pages可以用于檢測和攔截對特定內存區域的訪問,從而實現對系統功能的修改或監視。這種技術通常被用于軟件調試、安全研究和惡意軟件分析等領域。

實現過程

整體代碼如下:

#include <windows.h>
#include <stdio.h>

// Hook函數功能
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);
    // 這里調用原始CreateThread函數
    //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: %#llx\n", ExceptionInfo->ContextRecord->Rip);
            printf("Hook Function = %#llx\n", (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 = %#p\n", &CreateThread);
 
 HANDLE hThread = CreateThread(0, 0, (LPTHREAD_START_ROUTINE) &Sleep, ?m, 0, 0);
 WaitForSingleObject(hThread, param);
 printf("YEP!\n");
    
 return 0;
}

頭文件部分:

代碼從包含必要的頭文件開始,包括 <windows.h> 和 <stdio.h>,它們分別提供了Windows API和標準I/O操作的函數和定義。

Hook函數:

定義了鉤子函數hook。這個函數旨在充當CreateThread API函數的鉤子,該函數負責在Windows應用程序中創建線程。 在鉤子函數內部,顯示了兩個消息框,指示CreateThread函數已被調用,并且它已經被這段代碼“hook”了。在這段代碼中,原始的CreateThread函數沒有被調用。

異常處理

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

主函數

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

測試

將代碼編譯后執行,效果如下:

圖片圖片

責任編輯:武曉燕 來源: 二進制空間安全
相關推薦

2013-04-26 09:45:35

2021-10-17 15:51:20

FIN7Windows 11黑客

2015-09-28 14:12:36

2013-04-11 16:30:59

2011-07-11 17:00:07

Windows Vis控制臺MMC

2022-05-21 23:33:54

DDoS網絡安全負載均衡器

2022-05-26 08:31:41

分層機制優化

2014-05-13 14:27:55

2022-05-27 08:16:35

端點安全人工智能網絡安全

2010-09-26 16:19:18

2017-06-28 08:06:48

2015-01-20 09:35:52

2018-10-10 05:12:35

2010-02-02 10:04:58

2014-06-20 14:07:49

2011-03-04 09:09:07

BlueJ

2014-03-31 10:51:40

pythonasyncio

2017-08-16 10:12:10

CNN網絡數據

2009-06-15 17:45:20

LINQ分組統計

2014-11-18 09:35:14

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 天堂成人国产精品一区 | 狠狠干av | 国产精品福利在线观看 | 99久久精品免费看国产高清 | 在线看免费的a | 日韩精品免费一区二区在线观看 | 欧美一区二区免费在线 | 久久福利网站 | 亚洲国产高清免费 | 国产高清一区二区三区 | www久久| 一区欧美| 欧美激情一区二区 | 国产成人福利在线 | 一区二区三区精品 | 精品区| 一级黄色日本片 | 狠狠av| 成人一区二区三区在线观看 | 精品久久久久久久久亚洲 | 亚洲欧洲精品一区 | 9999精品视频 | 在线第一页 | 国产乱码精品一区二区三区五月婷 | 99re在线视频 | 日韩乱码在线 | 一区二区三区四区在线 | 国产精品无码久久久久 | 亚洲福利 | 丝袜 亚洲 欧美 日韩 综合 | chengrenzaixian | 在线免费黄色小视频 | 日韩中文一区二区三区 | 少妇黄色 | 日韩美女爱爱 | 精品日韩一区 | 国产精品自拍一区 | 日日摸日日碰夜夜爽亚洲精品蜜乳 | 久久在线看 | 国产蜜臀97一区二区三区 | 免费一区二区三区 |