ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > С/С++, C#, Delphi, .NET, Asm
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

Получение парамтеров запуска зная Pid
  #1  
Старый 03.10.2007, 17:26
Аватар для slesh
slesh
Reservists Of Antichat - Level 6
Регистрация: 05.03.2007
Сообщений: 1,985
Провел на форуме:
3288241

Репутация: 3349


Отправить сообщение для slesh с помощью ICQ
По умолчанию Получение парамтеров запуска зная Pid

Сталкнулся с такой проблемой. Вот к примеру я знаю Pid процесса, как можно узнать параметры переданные этому процессу при запуске. Вообще в какую сторону копать?
 
Ответить с цитированием

  #2  
Старый 03.10.2007, 17:32
Аватар для a1ex
a1ex
Banned
Регистрация: 11.10.2006
Сообщений: 682
Провел на форуме:
3750406

Репутация: 271


Отправить сообщение для a1ex с помощью ICQ Отправить сообщение для a1ex с помощью AIM Отправить сообщение для a1ex с помощью MSN Отправить сообщение для a1ex с помощью Yahoo
По умолчанию

У мну де-то программка была, которая узнавала параметры переданные процессу ну и не только...
Вообщем покопаюсь, если найду то выложу.
 
Ответить с цитированием

  #3  
Старый 03.10.2007, 18:22
Аватар для LEE_ROY
LEE_ROY
Постоянный
Регистрация: 09.11.2006
Сообщений: 639
Провел на форуме:
1917742

Репутация: 541


По умолчанию

перехватывать нужно CreateProcessW, внутри нее параметр - lpCommandLine считывай, это параметры ком.строки

Код:
BOOL WINAPI CreateProcess(
  __in          LPCTSTR lpApplicationName,
  __in_out      LPTSTR lpCommandLine,
  __in          LPSECURITY_ATTRIBUTES lpProcessAttributes,
  __in          LPSECURITY_ATTRIBUTES lpThreadAttributes,
  __in          BOOL bInheritHandles,
  __in          DWORD dwCreationFlags,
  __in          LPVOID lpEnvironment,
  __in          LPCTSTR lpCurrentDirectory,
  __in          LPSTARTUPINFO lpStartupInfo,
  __out         LPPROCESS_INFORMATION lpProcessInformation
);
 
Ответить с цитированием

  #4  
Старый 03.10.2007, 18:41
Аватар для KEZ
KEZ
Banned
Регистрация: 18.05.2005
Сообщений: 1,981
Провел на форуме:
1941233

Репутация: 2726


По умолчанию

гыгыгы люблю античатовских кодеров

"как показать месагбокс?" - "перехватывай swapcontext, находи там потоки explorer, по нему explorer.exe, потом таблицу импорта, выдирай оттуда адрес MessageBoxA, копируй через IoAllocateMdl драйвером в свой процесс и запускай..."

если посмотреть на GetCommandLineA, можно заметить
Цитата:
7C812C8D > A1 F435887C MOV EAX,DWORD PTR DS:[7C8835F4]
7C812C92 C3 RETN
инфа хранится в PEB, открывай процесс по PID и читай оттуда все что хочешь, включая его STARTUPINFO и command line
 
Ответить с цитированием

  #5  
Старый 03.10.2007, 19:11
Аватар для KEZ
KEZ
Banned
Регистрация: 18.05.2005
Сообщений: 1,981
Провел на форуме:
1941233

Репутация: 2726


По умолчанию

Вообще, по хорошему, надо использовать
ZwQueryInformationProcess(), но т.к. вам это все равно не обьяснишь, придется сделать так:
(наверное для всех WinNT)

Код:
#define PID 1072 // PID of target process

static LPSTR szGetCommandLineA = "GetCommandLineA";
static LPSTR szKernel32 = "kernel32.dll";
static ULONG uRead;
static ULONG uCmdLineAddr;

LPSTR __declspec(naked) __stdcall getCommandLineProcess( ULONG uPid ) {

	__asm {
		push ebp
		mov ebp, esp
		call dword ptr [GetProcessHeap]
		push MAX_PATH
		push HEAP_ZERO_MEMORY
		push eax
		call dword ptr [HeapAlloc] // allocate heap
		mov edi, eax
		push dword ptr [uPid]
		push 0
		push PROCESS_VM_READ
		call dword ptr [OpenProcess] // open process
		test eax, eax
		jz err
		mov ebx, eax
		push szKernel32
		call dword ptr [GetModuleHandle]
		push szGetCommandLineA
	        push eax
		call dword ptr [GetProcAddress] // get addr of GetCommandLineA
		mov eax, dword ptr [eax+1]      // get operand of [GetCommandLineA] first instruction (mov eax, [...])
		push offset uRead
		push 4
		push offset uCmdLineAddr
		push eax
		push ebx
		call dword ptr [ReadProcessMemory] // read address of command line string
		push offset uRead
		push MAX_PATH
		push edi
		push dword ptr [uCmdLineAddr]
		push ebx
		call dword ptr [ReadProcessMemory] // read command line
		pop ebp
		jmp e
err:
		and eax, 0 // error
e:
		mov eax, edi // ok
		retn 4
	}
}

LPSTR szCmdLine = getCommandLineProcess( PID );
MessageBox( 0,
		szCmdLine,
		"Cmd line of process",
		MB_ICONINFORMATION );
HeapFree( GetProcessHeap(), 0, szCmdLine );
 
Ответить с цитированием
Ответ





Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ