亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C > 正文

詳解VC實現屏幕截詞功能的操作步驟

2020-02-24 14:29:38
字體:
來源:轉載
供稿:網友

屏幕截詞很有趣,盡管有許多應用程序可用于捕獲您最喜愛的屏幕,但如果您可以將此函數添加到自己的程序中,則可以更好地利用它強大的作用,下面就讓武林就似乎頻道小編詳解VC實現屏幕截詞功能的操作步驟。

VC程序設計中屏幕上的文字大都是由gdi32.dll的以下幾個函數顯示的:TextOutA、TextOutW、ExtTextOutA、ExtTextOutW。實現屏幕抓詞的關鍵就是截獲對這些函數的調用,得到程序發給它們的參數。

實現的方法有以下三個步驟:

一、得到鼠標的當前位置
通過SetWindowsHookEx實現。

二、向鼠標下的窗口發重畫消息,讓它調用系統函數重畫
通過WindowFromPoint,ScreenToClient,InvalidateRect 實現。

三、截獲對系統函數的調用,取得參數(以TextOutA為例)

1.仿照TextOutA作成自己的函數MyTextOutA,與TextOutA有相同參數和返回值,放在系統鉤子所在的DLL里。

SysFunc1=(DWORD)GetProcAddress(GetModuleHandle("gdi32.dll"),"TextOutA");BOOL WINAPI MyTextOutA(HDC hdc, int nXStart, int nYStart, LPCSTR lpszString,int cbString){ //輸出lpszString的處理return ((FARPROC)SysFunc1)(hdc,nXStart,nYStart,lpszString,cbString);}

2.由于系統鼠標鉤子已經完成注入其它GUI進程的工作,我們不需要為注入再做工作。
如果你知道所有系統鉤子的函數必須要在動態庫里,就不會對"注入"感到奇怪。當進程隱式或顯式調用一個動態庫里的函數時,系統都要把這個動態庫映射到這個進程的虛擬地址空間里(以下簡稱"地址空間")。這使得DLL成為進程的一部分,以這個進程的身份執行,使用這個進程的堆棧。

DLL映射到虛擬地址空間中

對系統鉤子來說,系統自動將包含"鉤子回調函數"的DLL映射到受鉤子函數影響的所有進程的地址空間中,即將這個DLL注入了那些進程。

3.當包含鉤子的DLL注入其它進程后,尋找映射到這個進程虛擬內存里的各個模塊(EXE和DLL)的基地址。EXE和DLL被映射到虛擬內存空間的什么地方是由它們的基地址決定的。它們的基地址是在鏈接時由鏈接器決定的。當你新建一個Win32工程時,VC++鏈接器使用缺省的基地址0x00400000。可以通過鏈接器的BASE選項改變模塊的基地址。EXE通常被映射到虛擬內存的0x00400000處,DLL也隨之有不同的基地址,通常被映射到不同進程的相同的虛擬地址空間處。

那么如何知道EXE和DLL被映射到哪里了呢?
在Win32中,HMODULE和HINSTANCE是相同的。它們就是相應模塊被裝入進程的虛擬內存空間的基地址。比如:

HMODULE hmodule=GetModuleHandle("gdi32.dll");

返回的模塊句柄強制轉換為指針后,就是gdi32.dll被裝入的基地址。

對于如何找到虛擬內存空間映射了哪些DLL,我們可以通過如下方式得以實現:

while(VirtualQuery (base, &mbi, sizeof (mbi))>0){if(mbi.Type==MEM-IMAGE)ChangeFuncEntry((DWORD)mbi.BaseAddress,1);base=(DWORD)mbi.BaseAddress+mbi.RegionSize;}

4.得到模塊的基地址后,根據PE文件的格式窮舉這個模塊的IMAGE-IMPORT-DESCRIPTOR數組,看是否引入了gdi32.dll。如是,則窮舉IMAGE-THUNK-DATA數組,看是否引入了TextOutA函數。

5.如果找到,將其替換為相應的自己的函數。
系統將EXE和DLL原封不動映射到虛擬內存空間中,它們在內存中的結構與磁盤上的靜態文件結構是一樣的。即PE (Portable Executable) 文件格式。
所有對給定API函數的調用總是通過可執行文件的同一個地方轉移。那就是一個模塊(可以是EXE或DLL)的輸入地址表(import address table)。那里有所有本模塊調用的其它DLL的函數名及地址。對其它DLL的函數調用實際上只是跳轉到輸入地址表,由輸入地址表再跳轉到DLL真正的函數入口。例如:

對MessageBox()的調用跳轉到輸入地址表,從輸入地址表再跳轉到MessageBox函數

IMAGE-IMPORT-DESCRIPTOR和IMAGE-THUNK-DATA分別對應于DLL和函數。它們是PE文件的輸入地址表的格式(數據結構參見winnt.h)。

BOOL ChangeFuncEntry(HMODULE hmodule){PIMAGE-DOS-HEADER pDOSHeader;PIMAGE-NT-HEADERS pNTHeader;PIMAGE-IMPORT-DESCRIPTOR pImportDesc;/ get system functions and my functions′entry /pSysFunc1=(DWORD)GetProcAddress(GetModuleHandle("gdi32.dll"),"TextOutA");pMyFunc1= (DWORD)GetProcAddress(GetModuleHandle("hookdll.dll"),"MyTextOutA");pDOSHeader=(PIMAGE-DOS-HEADER)hmodule;if (IsBadReadPtr(hmodule, sizeof(PIMAGE-NT-HEADERS)))return FALSE;if (pDOSHeader->e-magic != IMAGE-DOS-SIGNATURE)return FALSE;pNTHeader=(PIMAGE-NT-HEADERS)((DWORD)pDOSHeader+(DWORD)pDOSHeader->e-lfanew);if (pNTHeader->Signature != IMAGE-NT-SIGNATURE)return FALSE;pImportDesc = (PIMAGE-IMPORT-DESCRIPTOR)((DWORD)hmodule+(DWORD)pNTHeader->OptionalHeader.DataDirectory[IMAGE-DIRECTORY-ENTRY-IMPORT].VirtualAddress);if (pImportDesc == (PIMAGE-IMPORT-DESCRIPTOR)pNTHeader)return FALSE;while (pImportDesc->Name){PIMAGE-THUNK-DATA pThunk;strcpy(buffer,(char )((DWORD)hmodule+(DWORD)pImportDesc->Name));CharLower(buffer);if(strcmp(buffer,"gdi32.dll")){pImportDesc++;continue;}else{pThunk=(PIMAGE-THUNK-DATA)((DWORD)hmodule+(DWORD)pImportDesc->FirstThunk);while (pThunk->u1.Function){ if ((pThunk->u1.Function) == pSysFunc1){ VirtualProtect((LPVOID)(&pThunk->u1.Function),sizeof(DWORD),PAGE-EXECUTE-READWRITE,&dwProtect);(pThunk->u1.Function)=pMyFunc1;VirtualProtect((LPVOID)(&pThunk->u1.Function), sizeof(DWORD),dwProtect,&temp);}pThunk++; } return 1;}}}

替換了輸入地址表中TextOutA的入口為MyTextOutA后,截獲系統函數調用的主要部分已經完成,當一個被注入進程調用TextOutA時,其實調用的是MyTextOutA,只需在MyTextOutA中顯示傳進來的字符串,再交給TextOutA處理即可。

以上就是武林技術頻道小編對于詳解VC實現屏幕截詞功能的操作步驟,有些不足的地方還望諒解,有需要咨詢更詳細的內容,記得聯系武林技術頻道小編哦,小編將為您帶來專業的解答,謝謝!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲国产精品久久| 日韩电影大全免费观看2023年上| 亚洲欧美制服综合另类| 精品精品国产国产自在线| 成人久久18免费网站图片| 伊人男人综合视频网| 91chinesevideo永久地址| 精品视频在线播放| 国产精品久久99久久| 亚洲精品国产拍免费91在线| 中文字幕久久久av一区| 国产精品一区二区三区久久久| 亚洲欧美一区二区激情| 中文字幕亚洲激情| 久久成人精品视频| 欧美性猛交xxxx富婆弯腰| 国产一区二区免费| 国产成人精品视频| 中文字幕久热精品在线视频| 亚洲香蕉av在线一区二区三区| 国产亚洲精品久久久久久| 亚洲人成电影网站色…| 亚洲第一区在线| 综合网中文字幕| 欧美激情亚洲另类| 欧美一级片在线播放| 日韩激情av在线免费观看| 日韩精品在线观看网站| 欧美一区三区三区高中清蜜桃| 亚洲男人的天堂在线播放| 国产精品爱啪在线线免费观看| 自拍偷拍亚洲在线| 国产精品久久久久久久久久三级| 视频直播国产精品| 一个色综合导航| 成人高h视频在线| 午夜精品福利在线观看| 91久久夜色精品国产网站| 18性欧美xxxⅹ性满足| 久久午夜a级毛片| xxxxx91麻豆| 岛国视频午夜一区免费在线观看| 亚洲黄色免费三级| 国产精品第一页在线| 国产成人精品999| 精品在线观看国产| 国产精品18久久久久久麻辣| 国产精品久久久久aaaa九色| 国产精品第2页| 国产日韩欧美中文在线播放| 精品五月天久久| 久久精品国产一区二区电影| 欧美成人精品在线观看| 国外成人免费在线播放| 国产亚洲精品久久久久久777| 91精品久久久久久久久青青| 久久精品91久久久久久再现| 韩国视频理论视频久久| 亚洲无亚洲人成网站77777| 色综合久久88色综合天天看泰| 欧美在线视频a| 92福利视频午夜1000合集在线观看| 日韩国产欧美区| 欧美人与性动交a欧美精品| xxx成人少妇69| 91精品国产色综合| 亚洲一级黄色av| 日韩av一卡二卡| 色偷偷888欧美精品久久久| 奇米四色中文综合久久| 亚洲毛片在线看| 91精品国产91久久久久久吃药| 欧美一区视频在线| 国产成人综合av| 欧美放荡办公室videos4k| 日韩h在线观看| 亚洲色图校园春色| 国产精品∨欧美精品v日韩精品| 欧美第一黄网免费网站| 日韩av不卡电影| 国产精品亚洲综合天堂夜夜| 国产亚洲精品久久久| 中文字幕免费精品一区| 日本高清不卡的在线| 九九精品在线视频| 亚洲大尺度美女在线| 国产精品久久激情| 国产91|九色| 亚洲毛片在线观看.| 日韩av在线精品| 97视频免费在线看| 色综合久综合久久综合久鬼88| 亚洲第一网站男人都懂| 成人精品在线视频| 欧美大片va欧美在线播放| 欧美激情a在线| 午夜精品久久久99热福利| 亚洲国产三级网| 亚洲成人黄色在线观看| 91精品久久久久久久久青青| 日韩精品欧美国产精品忘忧草| 久久久久成人网| 综合网中文字幕| 欧美精品久久久久a| 热99在线视频| 国产一区二区久久精品| 久久久久久这里只有精品| 国产精品爱啪在线线免费观看| 久久中文字幕视频| 色小说视频一区| 日韩小视频在线观看| 最近更新的2019中文字幕| 日本精品va在线观看| 欧美午夜激情视频| 久久久久久久久电影| 日韩精品中文字幕在线观看| 97在线观看免费| 亚洲精品久久久一区二区三区| 日本电影亚洲天堂| 国产福利精品视频| 日韩av手机在线看| 欧美精品少妇videofree| 久久成人人人人精品欧| 亚洲视频一区二区三区| 亚洲专区在线视频| 亚洲国产成人精品一区二区| 亚洲美女福利视频网站| 68精品国产免费久久久久久婷婷| 中文字幕日韩在线播放| 久久理论片午夜琪琪电影网| 欧美午夜精品伦理| 中文字幕精品国产| 亚洲一区中文字幕在线观看| 日韩福利伦理影院免费| 日韩精品久久久久| 美女国内精品自产拍在线播放| 中文字幕久精品免费视频| 国产精品www色诱视频| 欧美日韩在线视频一区| 亚洲免费中文字幕| 疯狂做受xxxx欧美肥白少妇| 久久精品国产精品亚洲| 亚洲免费福利视频| 久久中文久久字幕| 国产亚洲精品一区二555| 久久久久久久一区二区三区| 亚洲人成在线观| 日韩电影中文 亚洲精品乱码| 欧美激情综合色综合啪啪五月| 亚洲色图美腿丝袜| 4438全国成人免费| 日韩av手机在线观看| 韩国三级日本三级少妇99| 日韩精品免费观看| 国产精品九九久久久久久久| 欧美日韩国产在线看| 欧美日韩中文字幕| 欧美视频裸体精品| 亚洲人成电影在线| 国产日韩欧美日韩大片| 精品在线小视频| 日韩在线播放av| 国产精品在线看| 亚洲欧美日韩第一区|