|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
09.02.2009, 15:15 | #1 |
Регистрация: 09.12.2007
Сообщений: 5
|
Перехват функций
Проблема в следующем.
Пишу на vc 2005 под XP программу которая в диспетчере задач скрывает свой процесс. Решил пойти в лоб, получил указатель на диспечер задач, далее указатель на ListCntl (Процессы). С помощью SendMessage там можно удалять любую строку, но функции GetItemText, FindItem при выполнение программы выдают ошибку. Есть другой способ удалить свой процесс путем перехвата функции Hook_NtQuerySystemInformation. Проблема в том, что с перехватом никогда не работал, так что жду совета. Перелапатил весь интернет, много примеров на Delphi, даже на этом форуме, но с этим языком не дружу. Если есть другие предложения по скрытию процесса, то буду рад. Одно пожелание, чтобы не использовались подключаемые dll библиотеки и без регистрации драйверов. |
09.02.2009, 15:48 | #2 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
Да и код свой показать не лишне будет
I'm learning to live...
|
|
09.02.2009, 16:53 | #3 |
Регистрация: 09.12.2007
Сообщений: 5
|
код следующий
Код:
Модератор: тег CODE Последний раз редактировалось MaTBeu; 09.02.2009 в 22:23. |
09.02.2009, 17:01 | #4 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Где-то я уже подобное слышал. Кому-то уже посоветовали не морочить голову с диспетчером таким образом.
I'm learning to live...
|
09.02.2009, 17:06 | #5 |
Регистрация: 09.12.2007
Сообщений: 5
|
Так я и хочу по другому. Есть предложения?
|
15.02.2009, 10:54 | #6 |
Новичок
Джуниор
Регистрация: 09.02.2009
Сообщений: 2
|
Немного помучился и решил свою проблему несколькими способами.
Пересмотрев все сообщения, которые принимает ListCntl, оказалось, что все не так просто. Проблема возникает, если мы пытаемся передать в качестве параметра адрес на какую-либо область памяти. К примеру, чтобы удалить себя из списка можно воспользоваться сообщением LVM_DELETEITEM. Но его первый параметр это индекс элемента, который нужно удалить. А необходимо спрятать только один процесс, оставив остальные. Тут возникает естественный вопрос о том, как узнать свой индекс из списка. Для этого используется сообщение LVM_GETITEM, но его второй параметр это указатель на структуру с требуемой информацией. Если вы попытаетесь воспользоваться им, указав на область памяти вашего приложения, то это вызовет ошибку и возможно крушение менеджера. Если бы вы имели высокие права, то для этих целей можно было бы выделить область памяти внутри диспетчера задач, но увы, их нет… После длительных поисков меня заинтересовало сообщение LVM_GETITEMSTATE, которое возвращает информацию о некоторых свойствах элемента как правду или ложь. Например, чтобы узнать выделен 5-й элемент или нет, достаточно исполнить: i Код:
Код:
Код:
Спасибо Digital Scream за подсказку. Чуть позже вылажу решение скрытия процесса с помощью глобального хука. Модератор: тег CODE Последний раз редактировалось MaTBeu; 15.02.2009 в 11:10. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
обновление в блоге - Перехват API функций. Основы | Pblog | Обсуждение статей | 0 | 20.01.2009 10:40 |
Перехват API функций | satana | Win Api | 4 | 21.08.2007 20:12 |
хттп перехват | infected | Работа с сетью в Delphi | 1 | 09.07.2007 07:58 |
перехват трафика | Roman | Работа с сетью в Delphi | 6 | 27.06.2007 08:51 |
Перехват Апи-функций доступа к файловой сиcтеме | Coffein | Win Api | 3 | 18.06.2007 20:27 |