千家信息网

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

发表于:2025-12-01 作者:千家信息网编辑
千家信息网最后更新 2025年12月01日,DLL注入工具(远程线程技术和简单的MFC CListCtrl控件知识)、DLL文件已经编写好、测试程序也很简单、现在就是解决将DLL注入到目标进程中、、这里采用远程线程注入技术、、本来WIN32控制
千家信息网最后更新 2025年12月01日实现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安全错误 数据库的锁怎样保障安全 2021年网络安全宣传片 mc如何制作有简介的服务器 刀塔自走棋服务器怎么修复 新的网络安全服务公司的发展方向 如何销售华为服务器 如何选择好的眼镜行业软件开发 武汉系统软件开发教程 关于软件开发方面的文献 男孩学网络技术与执法好吗 福建佰万网络技术有限公司 平顶山市互联网科技产业园 数据库系统及其应用视频 如何保障集团信息网络安全 dhcp服务器安全配置 上海万保网络技术有限公司 敏付科技互联网支付 中泰信托网络安全岗 山西erp软件开发价格行情 服务器关机顺序 安卓软件开发购买api 芜湖三圃网络技术公司 南京服务器回收预约 sql数据库 不等于 符号 男孩学网络技术与执法好吗 局域网服务器怎么接网线 银行网络服务器哪些是中国的 汇编语言在软件开发中的应用 自己在家搭建服务器 有没有软件开发竞标平台 应用连接数据库超时
0