免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动!
内容参考于:易道云信息技术研究院
上一个内容:60.分析对比模块找出被注入的模块
以 60.分析对比模块找出被注入的模块 它的代码为基础进行修改
效果图:
给分析列表添加自定义绘图操作通知父级事件的实现
CWndModuleList.cpp文件的修改:
void CWndModuleList::GetModList(DWORD Pid)
{LstModule.DeleteAllItems();HANDLE hSnap = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, Pid);if (hSnap != INVALID_HANDLE_VALUE) {MODULEENTRY32 modl{ sizeof(MODULEENTRY32) };BOOL BMORD = Module32First(hSnap, &modl);while (BMORD) {CString txt;txt.Format(L"%X", modl.hModule);LstModule.InsertItem(0, modl.szModule);LstModule.SetItemText(0, 1, txt);txt.Format(L"%X", modl.modBaseSize);LstModule.SetItemText(0, 2, txt);LstModule.SetItemText(0, 3, modl.szExePath);BMORD = Module32Next(hSnap, &modl);}}CloseHandle(hSnap);
}
CWndModAnly.cpp文件的修改
void CWndModAnly::OnNMCustomdrawList1(NMHDR* pNMHDR, LRESULT* pResult)
{LPNMCUSTOMDRAW pNMCD = reinterpret_cast<LPNMCUSTOMDRAW>(pNMHDR);// TODO: 在此添加控件通知处理程序代码*pResult = 0;NMLVCUSTOMDRAW* lp = (NMLVCUSTOMDRAW*)pNMHDR;auto& cmd = lp->nmcd;switch (cmd.dwDrawStage){case CDDS_PREPAINT: {*pResult = CDRF_NOTIFYITEMDRAW;break;}case CDDS_ITEMPREPAINT: {DWORD dIndex = LstAnly.GetItemData(cmd.dwItemSpec);COLORREF color[3]{ RGB(0,0,255),RGB(255,0,0),RGB(0,0,0) };COLORREF colorBK[3]{ RGB(255,255,0),RGB(0,255,0), RGB(255, 192, 203) };// 列表字体颜色lp->clrText = color[dIndex];lp->clrTextBk = colorBK[dIndex];}default:break;}
}
CWndINC.cpp文件的修改
void CWndINC::OnBnClickedButton3()
{// TODO: 在此添加控件通知处理程序代码int CountNormal = modPage[0].LstModule.GetItemCount();int CountRoot = modPage[1].LstModule.GetItemCount();if ((CountRoot) && (CountNormal)) {modAnly.LstAnly.DeleteAllItems();for (int i = 0; i < CountNormal; i++) {CString txt = modPage[0].LstModule.GetItemText(i, 3);for (int y = 0; y < CountRoot; y++) {if (modPage[1].LstModule.GetItemText(y, 3).MakeUpper() == txt.MakeUpper()) {modPage[1].LstModule.SetItemData(y, 1);modPage[0].LstModule.SetItemData(i, 1);break;}}}CString wTxt[2]{ L"减少", L"正常" };DWORD dState[2]{ 0, 2 };for (int i = 0; i < CountNormal; i++) {DWORD state = modPage[0].LstModule.GetItemData(i);// modAnly.LstAnly.InsertItem(0, modPage[0].LstModule.GetItemText(i, 0));modAnly.LstAnly.SetItemText(0, 1, modPage[0].LstModule.GetItemText(i, 1));modAnly.LstAnly.SetItemText(0, 2, modPage[0].LstModule.GetItemText(i, 2));modAnly.LstAnly.SetItemText(0, 3, modPage[0].LstModule.GetItemText(i, 3));modAnly.LstAnly.SetItemText(0, 4, wTxt[state]);modAnly.LstAnly.SetItemData(0, dState[state]);}for (int i = 0; i < CountRoot; i++) {DWORD state = modPage[1].LstModule.GetItemData(i);if (state == 0) {modAnly.LstAnly.InsertItem(0, modPage[1].LstModule.GetItemText(i, 0));modAnly.LstAnly.SetItemText(0, 1, modPage[1].LstModule.GetItemText(i, 1));modAnly.LstAnly.SetItemText(0, 2, modPage[1].LstModule.GetItemText(i, 2));modAnly.LstAnly.SetItemText(0, 3, modPage[1].LstModule.GetItemText(i, 3));modAnly.LstAnly.SetItemText(0, 4, L"增加");modAnly.LstAnly.SetItemData(0, 1);}}}
}