亚洲日本免费-啊轻点灬太粗太长了三男一女-麻豆av电影在线观看-日韩一级片毛片|www.grbbt.com

實(shí)現(xiàn)HOOK其他進(jìn)程的Messagebox(2) DLL注入工具

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

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

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

  DLL注入工具大概是這樣:

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

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

  工具截圖如下:

  wKiom1MFbgDw7LCaAALKGMsThG0298.jpg

  下面結(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)); //字體背景顏色

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

  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)程名稱",LVCFMT_LEFT,180);

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

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

  獲取所有進(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行寫入itoc、、

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

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

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

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

  i++;

  }

  CString total;

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

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

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

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

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

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

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

  {

  bMouseDown = true;  //這個(gè)變量是用來判斷用戶是否選中沒選中則不可進(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*類型、、獲取選中的行號(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類型的全局變量、、

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

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

  }

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

 

上一篇:安卓防火墻 PS DroidWall

下一篇:實(shí)現(xiàn)HOOK其他進(jìn)程的Messagebox(1)