Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

[Assembler] Нахождение процесса

9.8K
26 декабря 2007 года
FISH.ka
35 / / 07.01.2007
Нужн омодернизировать этот код так, чтобы искал самый старый процесс в системе! Выручьте плиз!
Код:
.386
.model flat,stdcall
option casemap:none
include ZwProcessView.Inc
.code
start:  CALL Main
        invoke ExitProcess,0
Main PROC
LOCAL Buf[50]:BYTE
invoke ClearScreen
invoke StdOut,ADDR szTitle
invoke ZwQuerySystemInformation,\
    SystemProcessesAndThreadsInformation,\
    ADDR lpVirtualMemory,\
    SIZEOF lpVirtualMemory,\
    ADDR nOutLength
invoke VirtualAlloc,0,nOutLength,MEM_COMMIT,PAGE_READWRITE
mov lpVirtualMemory,eax
invoke ZwQuerySystemInformation,\
    SystemProcessesAndThreadsInformation,\
    lpVirtualMemory,\
    nOutLength,\
    ADDR nOutLength
mov esi,lpVirtualMemory
assume esi:PTR SYSTEM_PROCESSES
xor ECX, ECX
lea EDI, mas
.WHILE [esi].NextEntryDelta!=0
    mov EBX, dword ptr [esi].Threads.ThreadKernelTime
    add dword ptr [edi], EBX
    mov EBX, dword ptr [esi+4].Threads.ThreadKernelTime
    adc dword ptr [edi+4], EBX
    add esi,[esi].NextEntryDelta
    add edi,SIZE QWORD
    INC ECX
.ENDW
;поиск макс
lea EDI, mas
mov EBX, dword ptr [EDI+8*ECX+4]    ;EBX - starw MAX
mov EDX, dword ptr [EDI+8*ECX]      ;EDX - mladw MAX
mov EAX, ECX                        ;EAX - index Max
dec ecx
.REPEAT
.if (EBX < dword ptr [mas+8*ecx+4])
    mov EBX, dword ptr [EDI+8*ECX+4]
    mov EDX, dword ptr [EDI+8*ECX] 
    mov EAX, ECX   
.elseif (EBX == dword ptr [mas+8*ecx+4])
    .if ( EDX < dword ptr [EDI+8*ECX])
        mov EDX, dword ptr [EDI+8*ECX] 
        mov EAX, ECX
    .endif 
.endif     
DEC ECX
.UNTIL (ECX == 0)
;вывод
xor ECX, ECX
mov esi,lpVirtualMemory
.WHILE (eax != ecx)
    add esi,[esi].NextEntryDelta
    inc ecx
.ENDW
    lea edi,ProcInfoLine
    movzx ecx,word ptr [esi].ProcessName._Length
    shr ecx,1
    inc ecx
    mov ebx,[esi].ProcessName.Buffer
    invoke WideCharToMultiByte,CP_OEMCP,NULL,ebx,ecx,edi,38h,NULL,NULL
    invoke lstrlen,edi
    mov dword ptr [edi+eax],0A0Dh
    invoke StdOut, ADDR ProcInfoLine
invoke StdIn,ADDR Buf,LENGTHOF Buf
invoke VirtualFree,lpVirtualMemory,nOutLength,MEM_DECOMMIT
ret
Main endp
end start
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог