千家信息网

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

发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,DLL注入工具(远程线程技术和简单的MFC CListCtrl控件知识)、DLL文件已经编写好、测试程序也很简单、现在就是解决将DLL注入到目标进程中、、这里采用远程线程注入技术、、本来WIN32控制
千家信息网最后更新 2026年10月31日实现HOOK其他进程的Messagebox(2) DLL注入工具

DLL注入工具(远程线程技术和简单的MFC CListCtrl控件知识)、


DLL文件已经编写好、测试程序也很简单、现在就是解决将DLL注入到目标进程中、、

这里采用远程线程注入技术、、本来WIN32控制台就可以、、为了学习下MFC就做了一个简单的MFC框架去实现注入、、

DLL注入工具大概是这样:

1 枚举出所有进程(没做到实时不过添加了一个刷新按钮)、、

2 实现对所选中进程注入DLL、、

工具截图如下:


下面结合代码记录、、

首先运行此工具、得到当前所有进程、、、使用CreateToolhelp32Snapshot函数、、

先在初始化的函数中将列表框的风格初始化好、、

DWORD ListStyle;

ListStyle=::GetWindowLong(m_List.m_hWnd,GWL_STYLE); //获得窗口风格

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; //高亮网格

m_List.SetExtendedStyle (ListStyle);

m_List.SetTextColor (RGB(0,0,0)); //字体颜色

m_List.SetTextBkColor (RGB(128,252,0)); //字体背景颜色

初始化列表框后开始获取进程填充到列表中、、、先添加好 列 名称、、

CRect RectList;

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

m_List.InsertColumn(0,"序号",LVCFMT_CENTER,100);// RectList.Width()

m_List.InsertColumn(1,"进程名称",LVCFMT_LEFT,180);

m_List.InsertColumn(2,"进程ID",LVCFMT_LEFT,RectList.Width()-299);

SetWindowText("Windows当前所有进程");//程序主窗口的名称、、

获取所有进程的代码、、

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转成char[]; 序号1、2、3、、、

m_List.InsertItem(i,itoc); //向第i行写入itoc、、

s.Format("%s",PE32.szExeFile); //将char[]转换为Cstring 进程名字、、

m_List.SetItemText(i,1,s);//向第i行第1列写入s、、

sprintf(itoc,"%d",PE32.th42ProcessID);//将DWORD 转成char[]; 进程ID

m_List.SetItemText(i,2,itoc);// 向第i行第2列写入itoc、、

i++;

}

CString total;

total.Format("%d",m_List.GetItemCount());//获取行数代表进程数、、格式化到total中、

SetDlgItemText(IDC_Total2,total); // 给文本框赋值Cstring类型数据、、SetDlgItemText 即界面 左下角的框框、、

CloseHandle(Hsnap); //关闭句柄、

现在所有进程已经得到、、接下来就是对其中选中的某一进程进行注入工作、、

首先给列表框添加消息、、双击即可、、

而在此消息中我们要得到被选中的那一行所在的进程的ID、也就是那一行第二列的数据、

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

{

bMouseDown = true; //这个变量是用来判断用户是否选中没选中则不可进行操作、还可以用函数GetItemState判断是否选中

NM_LISTVIEW* pNMListView = (NM_LISTVIEW*) pNMHDR;

// NM_LISTVIEW这个结构有以下成员(NMHDRhdr; int iItem; int iSubItem; UINT uNewState;

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

//转换为NM_LISTVIEW*类型、、获取选中的行号列号(这里我们不需要列号肯定是获取第二列)

CString csID = m_List.GetItemText (pNMListView->iItem,2); //得到被选中的行的对应的进程ID

iID = atoi(csID); //CString到int 将ID转成int类型的全局变量、、

ProcessName = m_List.GetItemText (pNMListView->iItem,1); //得到进程名字、用于本进程不结束自己、(为HOOK OpenProcess 酝酿一下)

*pResult = 0; //将指针pResult所指位置的内容置0 函数自动生成的以免指针没有初始化、、

}

好了 进程ID 得到了 接下来 就可以实现对此进程 进行注入了


进程 工具 函数 名称 类型 接下来 一行 代码 变量 名字 字体 就是 序号 技术 指针 数据 消息 程序 线程 颜色 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 金融科技创新监管互联网金融 与互联网科技公司 互联网金融公司科技 猪兼强互联网科技 互联网科技英文 广州善班互联网科技 滨湖区互联网智能科技产品供应 中国最先进互联网科技公司 互联网科技公司招聘 华服互联网科技官网 洛阳共同富裕互联网科技有限公司 区块链结合互联网科技 工业互联网展湾科技股份有限公司 黑云互联网科技有限公司 富国互联网金融科技混合基金 世界互联网科技成果奖 互联网科技企业商标注意事项 艺电能源互联网科技有限公司招聘 西安左小互联网科技有限公司 科技发展第三阶段互联网时代 互联网科技产业 科技赋能下的互联网金融 碳银互联网科技有限公司 太原新华互联网科技学校怎么样 宁夏众和广鑫互联网科技有限公司 中国互联网十大科技股排名 上海创道互联网络科技有限公司 上海同邻互联网科技有限公司规模 互联网科技机房 同城互联网络科技
0