'Загружаем kernel32.dll и OLE32.dll(точнее, они уже загружены,
'так что просто получаем их hInstance)
Dim hKernelLib As Long, pProc As Long
hKernelLib = LoadLibrary("kernel32.dll")
Dim hOle32Lib As Long
hOle32Lib = LoadLibrary("ole32.dll")
ANDLL писал(а):Ну вот... ...мне приходится сейчас лезть в старые архивы и искать этот исходник...
Ramzes писал(а):старый злобный копипаст
gaidar писал(а):Просто во время очередного глюка движка архив улетел в космос и не вернулся
Нам вовсе не обязательно разбираться, что эти каракули обозначают, достаточно выделить из них два значения, выделенных цветными маркерами. Запишите эти значения IID и CLSID на бумажку – они вам еще пригодятся…
gaidar писал(а):Картинки в статьях я вроде все восстановил.
push dword [ebp+ProcessId]
push dword 0
push dword 01f01h
mov edx, [ebp+OpenProcess]
BITS 32
jmp StartPoint
OpenProcess dd 0 ;функция OpenProcess
WaitForSingleObject dd 0 ;функция WaitForSingleObject
CloseHandle dd 0 ;функция CloseHandle
ExitThread dd 0 ;функция ExitThread
ProcessId dd 0 ;идентификатор нашего процесса
CloseId dd 0 ;идентификатор закрываемого процесса
CallPageBase:;эта процедура определит базовый адрес страницы и поместит его в ebp
mov ebp, [esp]
sub ebp, SomePoint
ret
StartPoint: ;тут начинается наша программа
mov ecx, SomePoint
call CallPageBase
SomePoint: ;сюда будет указывать [esp]
;Теперь в ebp хранится адрес начала нашего кода
push dword [ebp+ProcessId] ;|
push dword 0 ;|
push dword 01f0fffh
;|==>OpenProcess(PROCESS_ALL_ACCESS,0,ProcessId); где PROCESS_ALL_ACCESS=0x1f0fff
mov edx, [ebp+OpenProcess] ;| Открываем наш процесс
call edx ;|
mov ebx, eax ;будем храниться описатель нашего процесса в ebx
;Теперь в ebx хранится hProcess нашей программы
;|==>WaitForSingleObject(ebx,-1);
;| Ждем, пока наш процесс угаснет
push dword -1
push ebx
mov edx, [ebp+WaitForSingleObject]
call edx
push ebx
mov edx, [ebp+CloseHandle]
call edx
push dword [ebp+CloseId]
push dword 01f01h ;|==>OpenProcess(PROCESS_TERMINATE,0,CloseId); где PROCESS_TERMINATE=0x1f01
mov edx, [ebp+OpenProcess] ;| Делаем терминайте (TERMINATE) процесса
push dword 0
mov edx, [ebp+ExitThread]
call edx
int 3
int 3
int 3
int 3
int 3
VERITAS писал(а):И вот мне сейчас необходимо завершить процесс, через OpenProcess(PROCESS_TERMINATE, 0, ProcessId).
push dword 400h
push dword 1h
VERITAS писал(а):Если я все правильно понял, то как будет тогда записан PROCESS_QUERY_INFORMATION Or PROCESS_TERMINATE ??
push 400h or 1h
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 13