首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

VC++ 進程注入讀取他程式 ListView 資料示範

     編輯:關於C語言

本示範展示如何透過進程注入技術,讀取目標視窗(如「SYS (C:)」)中 SysListView32 控制項的列表項目內容。程式碼精簡,專注於核心流程:尋找視窗 → 列舉子控制項 → 開啟進程 → 跨進程記憶體分配與讀寫 → 發送 LVM_GETITEMTEXT 取得文字。

核心流程與關鍵 API

  1. FindWindow / FindWindowEx:定位目標視窗與 ListView 控制項句柄。
  2. EnumChildWindows:回呼函式中識別 SysListView32 類別,取得 g_hListCtrl。
  3. GetWindowThreadProcessId + OpenProcess(PROCESS_ALL_ACCESS):取得目標進程控制代碼。
  4. VirtualAllocEx:在目標進程配置記憶體,存放 LVITEM 結構與文字緩衝區。
  5. WriteProcessMemory:寫入初始化的 LVITEM(指定 cchTextMax、pszText 指向遠端緩衝區)。
  6. SendMessage(LVM_GETITEMTEXT):觸發目標進程填充文字到遠端緩衝區。
  7. ReadProcessMemory:讀回本地緩衝區,顯示於介面。
  8. VirtualFreeEx / CloseHandle:釋放遠端記憶體與關閉句柄。

關鍵程式碼片段

HWND hWnd = ::FindWindow(NULL, _T("SYS (C:)"));
EnumChildWindows(hWnd, EnumFunc, 0); // 回呼中設定 g_hListCtrl

DWORD pid; GetWindowThreadProcessId(g_hListCtrl, &pid);
HANDLE hProc = OpenProcess(PROCESS_ALL_ACCESS, FALSE, pid);

LVITEM* pLvi = (LVITEM*)VirtualAllocEx(hProc, NULL, sizeof(LVITEM), MEM_COMMIT, PAGE_READWRITE);
TCHAR* pBuf = (TCHAR*)VirtualAllocEx(hProc, NULL, 512 * sizeof(TCHAR), MEM_COMMIT, PAGE_READWRITE);

LVITEM lvi = {0}; lvi.cchTextMax = 512; lvi.iSubItem = 0; lvi.pszText = (LPTSTR)pBuf;
WriteProcessMemory(hProc, pLvi, &lvi, sizeof(LVITEM), NULL);

for (int i = 0; i < g_iRecords; ++i) {
    ::SendMessage(g_hListCtrl, LVM_GETITEMTEXT, (WPARAM)i, (LPARAM)pLvi);
    TCHAR localBuf[512];
    ReadProcessMemory(hProc, pBuf, localBuf, 512 * sizeof(TCHAR), NULL);
    m_Edt_str += localBuf; m_Edt_str += _T("\r\n");
    Sleep(100);
}
VirtualFreeEx(hProc, pLvi, 0, MEM_RELEASE);
VirtualFreeEx(hProc, pBuf, 0, MEM_RELEASE);
CloseHandle(hProc);

注意事項與擴展方向

  • 需目標進程權限允許 PROCESS_ALL_ACCESS(Vista+ 需 UAC 提權或簽名)。
  • 32/64 位元相容:注入端與目標進程位元數必須一致。
  • 後續可延伸至 Hook 技術(SetWindowsHookEx)、DLL 注入、遠端執行緒建立(CreateRemoteThread)等進階主題。

測試環境: Windows XP(文中原環境),現代 Windows 需考慮安全機制(ASLR、DEP、UIPI、CFG)對注入的限制。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved