Имеется следущий код
Код:
#include <windows.h>
#include "stdafx.h"
DWORD WINAPI func(LPVOID lparam)
{
HWND hwn;
return 0;
}
int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
DWORD myPID=4644;//Это PID уже запущенного процесса, я его ввожу вручную
HANDLE process=OpenProcess(PROCESS_ALL_ACCESS,0,myPID);
LPVOID lpBuffer=&func;
DWORD NumberOfBytesWritten;
LPVOID lpMemory=VirtualAllocEx(process, NULL, 100000, MEM_COMMIT | MEM_RESERVE,PAGE_EXECUTE_READWRITE);
WriteProcessMemory(process,lpMemory,lpBuffer,100000,&NumberOfBytesWritten);
DWORD tID=1000;//Это для надежности)
CreateRemoteThread(process,NULL,NULL,(LPTHREAD_START_ROUTINE)lpMemory,0,0,&tID);
while(true){};
return 0;
}
Так вот если func содержит WinAPI код , например вызов MessageBox , программа в которую иньектится код, падает.
Какой код может содержать иньектируемая функция ? И второй вопрос.
Можно ли как то определить точно , нужный функции обьем памяти ? 100кб это по моему многовато...
PS: ОС Vista
Заранее благодарен.