真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

實(shí)現(xiàn)HOOK其他進(jìn)程的Messagebox(1)-創(chuàng)新互聯(lián)

HOOK --實(shí)現(xiàn)HOOK其他進(jìn)程的Messagebox、、

創(chuàng)新互聯(lián)建站服務(wù)項(xiàng)目包括浦口網(wǎng)站建設(shè)、浦口網(wǎng)站制作、浦口網(wǎng)頁(yè)制作以及浦口網(wǎng)絡(luò)營(yíng)銷策劃等。多年來(lái),我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢(shì)、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,浦口網(wǎng)站推廣取得了明顯的社會(huì)效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到浦口省份的部分城市,未來(lái)相信會(huì)繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!

思路方法如下:

1 DLL的編寫(xiě)(實(shí)現(xiàn)IAT hook)、

2 DLL注入工具(遠(yuǎn)程線程技術(shù)和簡(jiǎn)單的MFC控件知識(shí))、

3簡(jiǎn)單的測(cè)試程序、

1編寫(xiě)dll、

之前有篇文章HOOK -- IAT HOOK本進(jìn)程MessageBox、這里部分代碼是相同的、畢竟均為IAT HOOK嘛、、

DLL與跟exe有個(gè)main或者WinMain入口函數(shù)一樣也有一個(gè)入口函數(shù)DllMain、不過(guò)很多僅僅包含資源信息的DLL是沒(méi)有DllMain函數(shù)的、其原型如下

BOOL WINAPI DllMain(  HINSTANCE hInstance,  ULONG ulReason,  LPVOID Reserved);

何時(shí)調(diào)用Dllmain、

DllMain的第二個(gè)參數(shù)fdwReason指明了系統(tǒng)調(diào)用Dll的原因、  

DLL_PROCESS_ATTACH、當(dāng)一個(gè)DLL文件被映射到進(jìn)程的地址空間時(shí)、用此參數(shù)掉dllmain

                        當(dāng)同一DLL再次映射時(shí)不會(huì)再調(diào)DllMain函數(shù)只增加dll次數(shù)、

DLL_PROCESS_DETACH、當(dāng)DLL被從進(jìn)程的地址空間解除映射時(shí)FreeLibrary

                        進(jìn)程結(jié)束而解除DLL映射(若是使用的TerminateProcess則不調(diào))  

DLL_THREAD_ATTACH、當(dāng)進(jìn)程創(chuàng)建一線程時(shí),跟DLL_PROCESS_ATTACH區(qū)別

                 無(wú)論何時(shí)創(chuàng)建線程均會(huì)用此參數(shù)調(diào)用Dllmain  

DLL_THREAD_DETACH  如果線程調(diào)用了ExitThread來(lái)結(jié)束線程(線程函數(shù)返回時(shí),系統(tǒng)也會(huì)自動(dòng)調(diào)用ExitThread),若是TerminateThread也不會(huì)調(diào)用DllMain.  

這里選擇如下方式編寫(xiě)DllMain函數(shù)

BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)

{

    If  ( fdwReason= =DLL_PROCESS_ATTACH)  //加載dll時(shí)候調(diào)用DllMain

      _beginthread(ThreadProc,0,NULL); //創(chuàng)建線程

    return TRUE;

}

就是說(shuō)當(dāng)dll被加載的時(shí)候(LoadLirary)、在DllMain中實(shí)現(xiàn)創(chuàng)建ThreadProc線程函數(shù)、、而ThreadProc函數(shù)里邊是我們IAT HOOK的核心代碼、、

ThreadProc函數(shù):  功能是 一個(gè)應(yīng)用程序定義的函數(shù)作為一個(gè)線程的起始地址服務(wù)、

要Hook Messagebox需寫(xiě)一個(gè)自己的Messagebox如下:

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

{

    return MessageBox(NULL,"哈哈! HOOK到MessageBox了","HOOK",MB_OK); //證明一下Hook成功

}

在線程函數(shù)中完成我們的ITA HOOK的代碼:

1  獲取本進(jìn)程的模塊基址  HANDLE pBegin = GetModuleHandle(NULL);

2  初始化PE結(jié)構(gòu)得到IAT的地址

    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);

3  遍歷尋找IMPORT->FirstThunk的內(nèi)容當(dāng)其與真正的MessageBox的地址相等時(shí)即可

  真正的MessageBoxA的地址在程序之前得到即   DWORD RealBox = (DWORD)MessageBox、

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

         {

              PDWORD lpAddr = (DWORD *)( pBegin2+ (DWORD)IMPORT->FirstThunk);

              if (*lpAddr = = RealBox)

              {

       找到后即找到了此PE的MessageBox在其IAT中的位置、接下來(lái)就是改之、

       修改的內(nèi)存的話首先內(nèi)存的保護(hù)屬性必須可讀可寫(xiě)所以使用以下幾個(gè)API

                  DWORD dwOLD;

                  MEMORY_BASIC_INFORMATION  mbi;

       //獲取需要修改的內(nèi)存的信息存放于MEMORY_BASIC_INFORMATION結(jié)構(gòu)

         VirtualQuery (lpAddr,  &mbi,  sizeof(mbi));

       //修改此內(nèi)存保護(hù)屬性為并將原有的保護(hù)屬性存放于&dwOLD中

                  VirtualProtect (lpAddr,  sizeof(DWORD),  PAGE_READWRITE,  &dwOLD);

       //將咱自己的HookMBox函數(shù)的地址寫(xiě)到此內(nèi)存、

                  WriteProcessMemory (GetCurrentProcess(),      lpAddr, &ADD, sizeof(DWORD), NULL);

       //將保存的原有的內(nèi)存保護(hù)屬性寫(xiě)回去、、

                  VirtualProtect (lpAddr,  sizeof(DWORD),  dwOLD, 0 );

                  break;

              }

              pOriginalThunk++;

         }

         IMPORT++;

}

到此DLL文件編寫(xiě)完畢、、后邊繼續(xù)記錄注入DLL(遠(yuǎn)程線程技術(shù)、、)

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。


分享標(biāo)題:實(shí)現(xiàn)HOOK其他進(jìn)程的Messagebox(1)-創(chuàng)新互聯(lián)
本文路徑:http://weahome.cn/article/dcephc.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部