и вообще, нет функции GetPerformanceInfo в библиотеке PSAPI.DLL, по крайней мере в Win2K, по крайней мере у меня
Действительно под Win2k нет некоторых функций в PSAPI.DLL. Я просто забыл приложить обновленную ddl'ку. С ней программа запускается но теряет некоторые возможности.
Я выложил архив с этой дллкой http://cp.people.overclockers.ru/cgi-bin/dl.pl?id=10225&filename=psapi.rar.
На более поздник версиях винды прога работает.
Проверял под ХР, сейчас работает по 2к3
Отличная программа, респект автору за опцию "убить все процесы кроме полезных"! Главный недостаток программы- не нашел горячих кнопок, настраиваемых на это действие...
Спасибо за совет и отзыв. Пока из горячих кнопок только Ctrl+Shift+Del для вызова главного окна из трея. Я допишу возможность установки на горячие клавиши разных функций проги. Добавлено спустя 2 минуты, 31 секунду
staw писал(а):
Akson ,На каком языке писал,если не секрет ?
Не секрет:). Писал на Visual C++. В MS Visual Studio 2003 Добавлено спустя 3 минуты, 11 секунд
Алканаффт писал(а):
а еще когда на график мышу наводишь, то появляется линия вертикальная, хотелось бы чтоб она отображала значение графика в этой точке и желательно чтоб обновлялась побыстрее, чем график..
Все пожелания будут учтены в следующей версии. Она появится после сессии, т.е. примерно через месяц, пока нет свободного времени, но я буду учитывать все пожелания и советы, а также исправлять ошибки. Добавлено спустя 5 минут, 19 секунд
Prod писал(а):
Akson Интересная програмка. В XP/SP2 при убивании все процессов кроме полезных, вызывает экран гибели. Верняк завершает процессы, являющиеся критическими.
Я уже писал про это. Дело в том, что сначала надо настроить прогу и указать: какие процессы вредные, а какие полезные. То, что по умолчанию сделал список пустым - виноват. В таком случае не Полезные = не Ничего = Все и прога убивает все процессы:) Добавлено спустя 1 минуту, 36 секунд
Недавно я действительно обнаружил этот глюк на некоторых машинах. Просто у меня на компе такого не было и пока я отлаживал прогу его не заметил.
Спасибо за сообщение об ошибке. Я постарась найти ее и исправить.
Прога замечательная, знаком с нею еще по циклу 3 статей о перехвате win api, но некоторые имена процессов отображает как Unknown, хотя тот же диспетчер процессов их видит и отображает корректно. Вот их список: CCAPP.EXE, symlcsvc.exe, NPFMNTOR.EXE, NAVAPSVC.EXE, CCEVTMGR.EXE, SPBBCSvc.exe, SNDSrvc.exe, CCSETMGR.EXE.
Видимо это была её одна из первых модфификаций. Вот цитата:
Защита:
Описанный мной метод перехвата API функций может быть использован для написания чрезвычайно опасных вредоносных программ.
Во избежание этого, я приведу здесь разработанный мной метод поиска скрытых процессов.
Метод состоит в том, что список процессов получается не с помощью API функций, а непосредственно через системные вызовы ядра Windows.
Недостаток данного метода состоит в том, что интерфейсы ядра не документированы, и узнать их можно только дизассемблируя системные библиотеки.
Также функции ядра могут различаться в разных версиях Windows, поэтому работоспособность этого метода везде не гарантируется.
Приведенный ниже код получает список процессов с помощью вызова интерфейсов ядра:
Procedure GetProcessList(var NameList, HandleList: TList);
asm
push ebp
mov ebp, esp
push ecx
push ebx
push esi
push edi
mov esi, edx
mov ebx,eax
push $05
call @GetInfoTable
jmp @InfoTableEnd
@GetInfoTable:
push ebp
mov ebp, esp
sub esp, $04
push esi
push 0
pop dword ptr [ebp - $04]
mov esi, $4000
@GetInfoTable_doublespace:
shl esi, $01
push esi
push 0
call LocalAlloc
test eax, eax
jz @GetInfoTable_failed
mov [ebp-$04], eax
push 0
push esi
push eax
push dword ptr [ebp + $08]
call @OpenKernelData
jmp @Cont
@OpenKernelData:
mov eax, $AD
call @SystemCall
ret $10
@SystemCall:
mov edx, esp
sysenter
@Cont:
test eax, $C0000000
jz @GetInfoTable_end
cmp eax, $C0000004
jnz @GetInfoTable_failed
push dword ptr [ebp - $04]
call LocalFree
jmp @GetInfoTable_doublespace
@GetInfoTable_failed:
push 0
pop dword ptr [ebp - $04]
@GetInfoTable_end:
mov eax,[ebp - $04]
pop esi
leave
ret $04
@InfoTableEnd:
mov [edi], eax
@FindData:
mov edx, [eax + $3C]
mov eax, [ebx]
call TList.Add //NameList.Add
mov eax, [edi]
lea edx, [eax + $44]
mov eax, [esi]
call TList.Add //HandleList.Add
mov eax, [edi]
cmp [eax], 0
jz @EndData
add eax, [eax]
mov [edi], eax
jmp @FindData
@EndData:
pop edi
pop esi
pop ebx
pop ecx
pop ebp
ret
end;
NameList будет содержать указатели PWideChar на имена процессов, а HandleList на их PID. Данный код проверен в Windows XP sp0,sp1 и sp2. В Windows 2000 он работать не будет, так как интерфейс системных вызовов там сильно отличается от XP. Но от перехвата API в ядре этот метод не спасет.
Этот метод поиска скрытых процессов реализован в моей программе ProcessMaster, которую вы можете скачать в приложении к статье.
Этот код я раньше не тестировал, сейчас выяснилось что он не вполне рабочий, в частности процедура спотыкается на
@InfoTableEnd:
mov [edi], eax
Будем считать это простым совпадением, http://www.cracklab.ru/download/get.php?g=118 Кстати неплохо было бы добавить получение скрытых перехватом win_api процессов, а дальше по усмотрению пользователя автоматически их закрывать или выделять в таблице.
Будем считать это простым совпадением, http://www.cracklab.ru/download/get.php?g=118 Кстати неплохо было бы добавить получение скрытых перехватом win_api процессов, а дальше по усмотрению пользователя автоматически их закрывать или выделять в таблице.
Предвещая недоразумения по поводу плагиата мной или у меня заранее пишу на тему цикла статей по перехвату WinAPI. Похоже, что это действительно совпадение, так как я не писал этот цикл статей и чужую работу присваивать себе не хочу. Я выбрал не очень удачное название, точнее название удачное, но кто-то из нас (Я или Автор того цикла статей) выбрал уже использующееся название. Я вероятно его изменю, когда буду обновлять программу.
Спасибо за совет по поводу скрытых процессов, идея действительно хорошая.
Сейчас этот форум просматривают: Alexx69rus и гости: 11
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения