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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

实现HOOK其他进程的Messagebox(2) DLL注入工具

發(fā)布時(shí)間:2025/5/22 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 实现HOOK其他进程的Messagebox(2) DLL注入工具 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

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


DLL文件已經(jīng)編寫(xiě)好、測(cè)試程序也很簡(jiǎn)單、現(xiàn)在就是解決將DLL注入到目標(biāo)進(jìn)程中、、

這里采用遠(yuǎn)程線程注入技術(shù)、、本來(lái)WIN32控制臺(tái)就可以、、為了學(xué)習(xí)下MFC就做了一個(gè)簡(jiǎn)單的MFC框架去實(shí)現(xiàn)注入、、

DLL注入工具大概是這樣:

1 ? 枚舉出所有進(jìn)程(沒(méi)做到實(shí)時(shí)不過(guò)添加了一個(gè)刷新按鈕)、、

2 ? 實(shí)現(xiàn)對(duì)所選中進(jìn)程注入DLL、、

工具截圖如下:


下面結(jié)合代碼記錄、、

首先運(yùn)行此工具、得到當(dāng)前所有進(jìn)程、、、使用CreateToolhelp32Snapshot函數(shù)、、

先在初始化的函數(shù)中將列表框的風(fēng)格初始化好、、

? ? ? ? DWORD ListStyle;

? ? ? ? ListStyle=::GetWindowLong(m_List.m_hWnd,GWL_STYLE); ?//獲得窗口風(fēng)格

? ? ? ? ListStyle|=LVS_REPORT | LVS_SHOWSELALWAYS | LVS_EDITLABELS;

? ? ? ? SetWindowLong(m_List.m_hWnd,GWL_STYLE,ListStyle);

? ? ? ? ListStyle=m_List.GetExtendedStyle(); // ?CListCtrl ? m_List ;

? ? ? ? ListStyle|=LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES; ?//高亮網(wǎng)格

? ? ? ? m_List.SetExtendedStyle (ListStyle);

? ? ? m_List.SetTextColor (RGB(0,0,0)); ?//字體顏色

? ? ? m_List.SetTextBkColor (RGB(128,252,0)); //字體背景顏色

初始化列表框后開(kāi)始獲取進(jìn)程填充到列表中、、、先添加好 列 名稱(chēng)、、

? CRect RectList;

? m_List.GetWindowRect (&RectList); //得List窗口的尺寸放于RectList中、、

? m_List.InsertColumn(0,"序號(hào)",LVCFMT_CENTER,100);// RectList.Width()

? m_List.InsertColumn(1,"進(jìn)程名稱(chēng)",LVCFMT_LEFT,180);

? m_List.InsertColumn(2,"進(jìn)程ID",LVCFMT_LEFT,RectList.Width()-299);

? SetWindowText("Windows當(dāng)前所有進(jìn)程");//程序主窗口的名稱(chēng)、、

獲取所有進(jìn)程的代碼、、

? char itoc[5];

? CString s;

? int i=0;

? HANDLE ?Hsnap = ? CreateToolhelp32Snapshot ?(TH32CS_SNAPPROCESS, ?0);

? for (BOOL bNext = Process32First(Hsnap,&PE32); bNext; bNext = Process32Next(Hsnap,&PE32))

? {

? ? ? ? ? ?sprintf(itoc,"%d",i); ?//將int轉(zhuǎn)成char[]; ? 序號(hào)1、2、3、、、

? ? ? ? ? ?m_List.InsertItem(i,itoc); ?//向第i行寫(xiě)入itoc、、

? ? ? ? ? ?s.Format("%s",PE32.szExeFile); //將char[]轉(zhuǎn)換為Cstring ? 進(jìn)程名字、、

? ? ? ? ? ?m_List.SetItemText(i,1,s);//向第i行第1列寫(xiě)入s、、

? ? ? ? ? ?sprintf(itoc,"%d",PE32.th32ProcessID);//將DWORD 轉(zhuǎn)成char[]; ?進(jìn)程ID

? ? ? ? ? ?m_List.SetItemText(i,2,itoc);// 向第i行第2列寫(xiě)入itoc、、

? ? ? ? ? ?i++;

? }

? CString total;

? total.Format("%d",m_List.GetItemCount());//獲取行數(shù)代表進(jìn)程數(shù)、、格式化到total中、

? SetDlgItemText(IDC_Total2,total); // 給文本框賦值Cstring類(lèi)型數(shù)據(jù)、、SetDlgItemText ?即界面 左下角的框框、、

? CloseHandle(Hsnap); ? //關(guān)閉句柄、

現(xiàn)在所有進(jìn)程已經(jīng)得到、、接下來(lái)就是對(duì)其中選中的某一進(jìn)程進(jìn)行注入工作、、

首先給列表框添加消息、、雙擊即可、、

而在此消息中我們要得到被選中的那一行所在的進(jìn)程的ID、也就是那一行第二列的數(shù)據(jù)、

void CMyDllInjectDlg::OnClickList(NMHDR* pNMHDR, LRESULT* pResult)

{

? ? ? ? bMouseDown = true; ?//這個(gè)變量是用來(lái)判斷用戶是否選中沒(méi)選中則不可進(jìn)行操作、還可以用函數(shù)GetItemState判斷是否選中

? ? ? ? NM_LISTVIEW* ?pNMListView ?= (NM_LISTVIEW*) ?pNMHDR;

? ?// NM_LISTVIEW這個(gè)結(jié)構(gòu)有以下成員(NMHDRhdr; int iItem; int iSubItem; UINT uNewState;

?//UINT uOldState; UINT uChanged; POINT ptAction; LPARAM lParam;);

?//轉(zhuǎn)換為NM_LISTVIEW*類(lèi)型、、獲取選中的行號(hào)列號(hào)(這里我們不需要列號(hào)肯定是獲取第二列)

? ? CString csID ?= ?m_List.GetItemText ?(pNMListView->iItem,2); //得到被選中的行的對(duì)應(yīng)的進(jìn)程ID

? ? iID ?= ?atoi(csID); ? //CString到int ?將ID轉(zhuǎn)成int類(lèi)型的全局變量、、

? ? ProcessName ? = ?m_List.GetItemText ?(pNMListView->iItem,1); //得到進(jìn)程名字、用于本進(jìn)程不結(jié)束自己、(為HOOK OpenProcess ?醞釀一下)

? ? *pResult = 0; //將指針pResult所指位置的內(nèi)容置0 ?函數(shù)自動(dòng)生成的以免指針沒(méi)有初始化、、

}

好了 進(jìn)程ID 得到了 接下來(lái) 就可以實(shí)現(xiàn)對(duì)此進(jìn)程 進(jìn)行注入了


轉(zhuǎn)載于:https://blog.51cto.com/xzv587/1361020

總結(jié)

以上是生活随笔為你收集整理的实现HOOK其他进程的Messagebox(2) DLL注入工具的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。