Proxy-Base Community - Анонимность и безопасность в интернете. - Показать сообщение отдельно - Инжект кода
Показать сообщение отдельно
Старый 27.07.2011, 16:55   #1 (permalink)
maxteam
HTTP/S
 
Аватар для maxteam
 
Регистрация: 11.02.2010
Сообщений: 32
Member ID: 6531

Репутация: 22
Репутация: 22
Сказал(а) спасибо: 10
Поблагодарили 12 раз(а) в 4 сообщениях
Топикстартер (автор темы) статистика Инжект кода

Здраствуйте...

Пишу простый инжектор кода в процесс(win32). Использую CreateRemoteThread.

Внедряю код функции которая должна запустится в новом потоке удаленного процесса. Все вроде норм. но у меня траблы с WriteProcessMemory.

вот кусок кода си++:

Код:
int main (void)
{
DWORD dwThreadId = 0, pID=0;
void *pRemoteThread = NULL;
char ExeFile[1024] = {0};
HANDLE hProcess = NULL, hSnap = NULL;
HINSTANCE hUser = NULL;
RPar my_RPar, *pmy_RPar = NULL;
PROCESSENTRY32 pe32 = {0};
DWORD dwThreadSize = 2048;

GetPrivilege("SeDebugPrivilege"); //получаю SeDebugPrivilege

hProcess = OpenProcess(PROCESS_ALL_ACCESS,FALSE,FindProcessByName("calc.exe")); //открываю процесс
if(hProcess == NULL) return FALSE;

cout<<"opened\n";

//выделяю память
pRemoteThread=VirtualAllocEx(hProcess,0,dwThreadSize,MEM_COMMIT|MEM_RESERVE,PAGE_EXECUTE_READWRITE);
if(pRemoteThread == NULL) return FALSE;

cout<<"alloc\n";

//и тут облом - хочу писать данные в память
if(!WriteProcessMemory(hProcess, (LPVOID)pRemoteThread, (LPCVOID)&ThreadProc, dwThreadSize, 0) )
{cout<<"error:"<<GetLastError()<<endl;system("PAUSE");return FALSE;}

cout<<"wrote code\n";

system("PAUSE");

....................
WriteProcessMemory выдает ERROR_ACCESS_DENIED хотя я использую SeDebugPrivilege да и система у меня Win32 SP3

помогите разобратся...может существует лучшый способ инжекта кода(не dll)

спасибо
__________________
"Чем больше я знаю,тем больше понимаю что ничего не знаю"
(с) Сократ
maxteam вне форума   Ответить с цитированием