日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

HOOK -- IAT HOOK 本进程MessageBox

發布時間:2024/4/11 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 HOOK -- IAT HOOK 本进程MessageBox 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
下面轉自網上的,給讀者共享,本來自己寫點的,但是一直在講課,沒有時間,姑且先復制粘貼下)

========================================================================================

?

?

結合網上資料、使用IAT?HOOK截獲MessageBox函數、、、

步驟如下

1..寫一個自己的MessageBox函數注意調用約定為__stdcall、、

2..定義一MessageBox函數指針如下

?????typedef int (__stdcall *pOldMBox)(HWND hWnd, LPCTSTR lpText, LPCTSTR lpCaption,UINT uType);

3..遍歷本進程的導入表尋找MessageBox的地址、、

4..修改MessageBox所在THUNK的地址為自己寫的函數地址、、代碼如下:

?

#include <windows.h>

?

HANDLE pBegin = GetModuleHandle(NULL);

PBYTE??pBegin2 = (PBYTE)pBegin;

?

PIMAGE_DOS_HEADER DOS = PIMAGE_DOS_HEADER(pBegin2);

PIMAGE_NT_HEADERS NT = PIMAGE_NT_HEADERS(pBegin2+DOS->e_lfanew);

PIMAGE_OPTIONAL_HEADER OPTION = &(NT->OptionalHeader);

PIMAGE_IMPORT_DESCRIPTOR IMPORT = PIMAGE_IMPORT_DESCRIPTOR(OPTION->DataDirectory[1].VirtualAddress + pBegin2);

?

typedef int (__stdcall *pOldMBox)(HWND hWnd, LPCTSTR lpText, LPCTSTR lpCaption,UINT uType);

pOldMBox pMBox = NULL;

?

int __stdcall HookMBox(HWND hWnd, LPCTSTR lpText, LPCTSTR lpCaption,UINT uType)

{

???????if (NULL == pMBox)

???????{

??????????????return MessageBox(hWnd,lpText,lpCaption,uType);

???????}

????else

???????{

?????????????return pMBox(NULL,"哈哈! IAT??HOOK到了","HOOK",MB_OK);

???????}

}

?

int ReAPI(const char* DllName, const char* FunName)

{

???????while (IMPORT->Name)

???????{

??????????????char* OurDllName = (char*)(IMPORT->Name + pBegin2);

??????????????if (0 == strcmpi(DllName , OurDllName))

??????????????{

?????????????????????break;

??????????????}

?????IMPORT++;

???????}

?

????????PIMAGE_IMPORT_BY_NAME ?pImportByName = NULL;

???????PIMAGE_THUNK_DATA???pOriginalThunk = NULL;

???????PIMAGE_THUNK_DATA???pFirstThunk = NULL;

?

???????pOriginalThunk = (PIMAGE_THUNK_DATA)(IMPORT->OriginalFirstThunk + pBegin2);

???????pFirstThunk = (PIMAGE_THUNK_DATA)(IMPORT->FirstThunk + pBegin2);

?

???????while (pOriginalThunk->u1.Function) //記住是Function

???????{

??????????????DWORD u1 =?pOriginalThunk->u1.Ordinal;??//記住是Ordinal

??????????????if ((u1 & IMAGE_ORDINAL_FLAG) != IMAGE_ORDINAL_FLAG)??//說明MSB不是1??不是以序號導入

??????????????{

?????????????????????pImportByName = (PIMAGE_IMPORT_BY_NAME)((DWORD)pOriginalThunk->u1.AddressOfData + pBegin2);

?????????????????????char* OurFunName = (char*)(pImportByName->Name); //下邊的計算也可以

?????????????????????//char* OurFunName2 = (char*)((DWORD)pOriginalThunk->u1.AddressOfData + pBegin2 + 2);

????????????????????if (0 == strcmpi(FunName,OurFunName))

????????????????????{

??????????????????????//獲取以pFirstThunk開始的內存的信息并將其保存到MEMORY_BASIC_INFORMATION結構中

??????????????????????MEMORY_BASIC_INFORMATION mbi_thunk;

??????????????????????VirtualQuery(pFirstThunk, &mbi_thunk, sizeof(MEMORY_BASIC_INFORMATION));

??????????????????????//VirtualProtect(mbi_thunk.BaseAddress,mbi_thunk.RegionSize, PAGE_READWRITE, &mbi_thunk.Protect);

??????????????????????//修改以pFirstThunk開始的內存的的保護屬性為PAGE_READWRITE并將原保護屬性保存到&dwOLD中

??????????????????????DWORD dwOLD;

???????????????????????VirtualProtect(pFirstThunk,sizeof(DWORD),PAGE_READWRITE,&dwOLD);

???????????????????????//更改真正MessageBoxA的地址為自己寫的HookMBox函數的地址、、

??????????????????????//將真正的地址付給先前定義的函數指針

???????????????????????//結果正確的話就是當本程序調用messagebox的時候程序轉去執行咱的HookMBox函數

??????????????????????//并且在咱的HookMBox函數中咱還調用了真正的messagebox函數、、

??????????????????????pMBox =(pOldMBox)(pFirstThunk->u1.Function);

??????????????????????pFirstThunk->u1.Function = (PDWORD)HookMBox;

??????????????????????//恢復之前更改的內存的保護屬性為人家自己的、、????????????

?????????????????????VirtualProtect(pFirstThunk,sizeof(DWORD),dwOLD,0);

?????????????????????break;

??????????????}

??????????????}

??????????????pOriginalThunk++;

??????????????pFirstThunk++;

???????}

???????

???????return 0;

}

int main()

{

??ReAPI("User32.dll","MessageBoxA");

??MessageBox(NULL,"沒有HOOK到","HOOK",MB_OK);

}

總結

以上是生活随笔為你收集整理的HOOK -- IAT HOOK 本进程MessageBox的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 96精品视频 | www.97色 | 亚洲熟妇国产熟妇肥婆 | 99久久久无码国产精品不卡 | 麻豆 国产 | av亚洲在线观看 | 国产资源av | 国产视频一区二区三区四区五区 | 亚洲视频福利 | 高清av网| 日本激情视频网站 | 波多野结衣二区三区 | 狠狠干中文字幕 | av爱爱爱 | 色撸撸av | 美女打屁股网站 | 极品白嫩丰满少妇无套 | 日本三级中文 | 欧美成人aaa片一区国产精品 | 国产一级高清 | 国产aⅴ片 | 国产精品一区二区在线观看 | 亚洲国产精品无码观看久久 | 欧美一区二区激情视频 | 免费在线a | 日本天堂在线视频 | 三级黄色免费片 | 大吊av | 久久久久亚洲精品中文字幕 | 亚洲AV无码精品久久一区二区 | 国产成人麻豆免费观看 | 亚洲 国产 欧美 日韩 | 欧美人性生活视频 | 日韩av在线免费观看 | 久久93| 国产农村妇女毛片精品久久麻豆 | 国产成a人亚洲精v品在线观看 | av成人在线观看 | 亚洲社区在线观看 | 亚洲在线综合 | 精品少妇3p | av香港经典三级级 在线 | 久久精品伊人 | 成年人毛片 | 影音先锋在线国产 | 国产精品久久久爽爽爽麻豆色哟哟 | 一级黄色片在线播放 | 91精品91 | 999精品一区| 炕上如狼似虎的呻吟声 | 午夜激情久久 | 中文字幕av免费观看 | 欧美国产在线观看 | 涩涩国产 | 亚日韩欧美 | 成人动作片 | 精品女同一区二区 | 欧美一级片 | 成年人在线观看视频免费 | 日韩国产一区二区 | 久久久久国产综合av天堂 | tube极品少妇videos| 日韩成人免费在线视频 | 青草视频网 | 成人在线免费视频 | 免费在线观看av网站 | 金鱼妻日剧免费观看完整版全集 | 24小时日本在线www免费的 | www三级| 色视频免费 | 男人和女人在床的app | 久久久久久电影 | 日韩在线www | 日日夜夜狠狠 | 日韩一卡二卡三卡四卡 | 亚洲精品久久久久中文字幕二区 | 欧美视频在线一区 | www亚洲视频 | 亚州中文 | 老子影院午夜精品无码 | 亚洲天天| 亚洲aⅴ在线观看 | 最新福利视频 | 韩国三级bd高清中字2021 | 久久久无码精品亚洲国产 | 9.1成人看片 | 久久精品噜噜噜成人 | 国产精品亚洲а∨天堂免在线 | 香蕉色视频 | 亚洲乱码精品 | 99国产免费| 一区二区啪啪啪 | 香蕉久久国产av一区二区 | 强行糟蹋人妻hd中文 | 中文字幕精品无 | 中国一级特黄视频 | 国产无限制自拍 | 国产美女91 | 婷婷av一区二区三区 |