Подскажите кто, как завершить процесс на assembler'e на Си - определяем PID и вызываем функцию TerminateProcess. Вот а теперь аналог хочу реализовать на ассе )) Заранее спасибо )
Для TerminateProcess нужен handle, а не PID. На асме тоже можно вызвать TerminateProcess. Или вопрос как вызывать функции на асме ?
BadLogin Я тебе подскажу по секрету, что даже можешь использовать push/call для этого... если нужно больше google - есть сила...
ага ... я просто не силён в асме =((( технологию push/call понял, но какие параметры нужно передавать (push) ?? толком ничего конкретного не нашёл =((
Код (Text): The TerminateProcess function terminates the specified process and all of its threads. BOOL TerminateProcess( HANDLE hProcess, // handle to the process UINT uExitCode // exit code for the process ); Parameters hProcess Identifies the process to terminate. Windows NT: The handle must have PROCESS_TERMINATE access. For more information, see Process Objects. uExitCode Specifies the exit code for the process and for all threads terminated as a result of this call. Use the GetExitCodeProcess function to retrieve the process's exit value. Use the GetExitCodeThread function to retrieve a thread's exit value. Return Values If the function succeeds, the return value is nonzero. If the function fails, the return value is zero. To get extended error information, call GetLastError. если до сих пор не понятно, то так Код (Text): push 0 push [Handle_of_Process] call [TerminateProcess] ; при использование некоторых компиляторов [] (MASM, TASM, etc) придется убрать
СПАСИБО!!! ай! на Си я открывал свой хендл, определял ПИД процесса и завершал его, а что ЗДЕСЬ еть хендл по русски в двух словах можно ...
Код (Text): he OpenProcess function returns a handle of an existing process object. HANDLE OpenProcess( DWORD dwDesiredAccess, // access flag BOOL bInheritHandle, // handle inheritance flag DWORD dwProcessId // process identifier ); Parameters dwDesiredAccess Specifies the access to the process object. For operating systems that support security checking, this access is checked against any security descriptor for the target process. Any combination of the following access flags can be specified in addition to the STANDARD_RIGHTS_REQUIRED access flags: Access Description PROCESS_ALL_ACCESS Specifies all possible access flags for the process object. PROCESS_CREATE_PROCESS Used internally. PROCESS_CREATE_THREAD Enables using the process handle in the CreateRemoteThread function to create a thread in the process. PROCESS_DUP_HANDLE Enables using the process handle as either the source or target process in the DuplicateHandle function to duplicate a handle. PROCESS_QUERY_INFORMATION Enables using the process handle in the GetExitCodeProcess and GetPriorityClass functions to read information from the process object. PROCESS_SET_INFORMATION Enables using the process handle in the SetPriorityClass function to set the priority class of the process. PROCESS_TERMINATE Enables using the process handle in the TerminateProcess function to terminate the process. PROCESS_VM_OPERATION Enables using the process handle in the VirtualProtectEx and WriteProcessMemory functions to modify the virtual memory of the process. PROCESS_VM_READ Enables using the process handle in the ReadProcessMemory function to read from the virtual memory of the process. PROCESS_VM_WRITE Enables using the process handle in the WriteProcessMemory function to write to the virtual memory of the process. SYNCHRONIZE Windows NT only: Enables using the process handle in any of the wait functions to wait for the process to terminate. bInheritHandle Specifies whether the returned handle can be inherited by a new process created by the current process. If TRUE, the handle is inheritable. dwProcessId Specifies the process identifier of the process to open. Return Values If the function succeeds, the return value is an open handle of the specified process. If the function fails, the return value is NULL. To get extended error information, call GetLastError. не в двух сложно. в общем открываешь процесс и терминируешь. вот так Код (Text): ;Process ID сам как нибудь получишь (надеюсь) push [PID] push 0 push PROCESS_TERMINATE call [OpenProcess] test eax, eax jz .end push 0 push eax call [TerminateProcess] .end
все что есть на си есть и здесь=) всё тот же самый набор апи и та же архитектура процессора. там хендл - дворд и тут хендл дворд.