1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
| //LVITEM local
LVITEM LvItem = {0};
LvItem.cchTextMax=256;
LvItem.mask=LVIF_TEXT;
LvItem.iItem=0; // choose item
LvItem.iSubItem=0; // Put in first coluom
LvItem.pszText=NULL;
LPCTSTR sczText = TEXT("Item 1"); // Text to display
//Pointeurs distants
LPVOID pFarLvItem = NULL;
LPVOID pFarText = NULL;
//Ouverture processus
HANDLE hProcess = NULL;
DWORD dwProcessId = 0;
GetWindowThreadProcessId(hwnd, &dwProcessId);
hProcess = OpenProcess(PROCESS_VM_OPERATION | PROCESS_VM_READ | PROCESS_VM_WRITE, 0, dwProcessId);
if(hProcess==NULL)
MessageBox(NULL,TEXT("Process not open"),TEXT(""),MB_OK);
//Allocation
pFarLvItem = VirtualAllocEx(hProcess, 0, sizeof(LVITEM)+256, MEM_COMMIT, PAGE_READWRITE);
if(pFarLvItem == NULL)
_tprintf(_T("Erreur VirtualAllocEx\n"));
pFarText = ((LPLVITEM)pFarLvItem) + 1;
//Initialisation des pointeurs
LvItem.pszText = (LPCTSTR)pFarText;
//Ecriture
WriteProcessMemory(hProcess, pFarLvItem, &LvItem, sizeof(LVITEM), &dwret);
_tprintf(_T("%d"),dwret);
WriteProcessMemory(hProcess, pFarText, sczText, _tcslen(sczText)*sizeof(TCHAR)+1, &dwret);
_tprintf(_T("%d"),dwret); |
Partager