Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
 |
Получение парамтеров запуска зная Pid |

03.10.2007, 17:26
|
|
Reservists Of Antichat - Level 6
Регистрация: 05.03.2007
Сообщений: 1,985
Провел на форуме: 3288241
Репутация:
3349
|
|
Получение парамтеров запуска зная Pid
Сталкнулся с такой проблемой. Вот к примеру я знаю Pid процесса, как можно узнать параметры переданные этому процессу при запуске. Вообще в какую сторону копать?
|
|
|

03.10.2007, 17:32
|
|
Banned
Регистрация: 11.10.2006
Сообщений: 682
Провел на форуме: 3750406
Репутация:
271
|
|
У мну де-то программка была, которая узнавала параметры переданные процессу ну и не только...
Вообщем покопаюсь, если найду то выложу. 
|
|
|

03.10.2007, 18:22
|
|
Постоянный
Регистрация: 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
);
|
|
|

03.10.2007, 18:41
|
|
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
|
|
|

03.10.2007, 19:11
|
|
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)
|
|
|
|