实现HOOK其他进程的Messagebox(2)DLL注入工具-创新互联

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

创新互联公司是一家集网站建设,三明企业网站建设,三明品牌网站建设,网站定制,三明网站建设报价,网络营销,网络优化,三明网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。

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

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

DLL注入工具大概是这样:

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

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

工具截图如下:

实现HOOK其他进程的Messagebox(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 得到了 接下来 就可以实现对此进程 进行注入了

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


当前文章:实现HOOK其他进程的Messagebox(2)DLL注入工具-创新互联
文章路径:http://pwwzsj.com/article/dchdoe.html