![]() |
Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply |
![]() ![]() ![]() |
|
Jetus |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 46 Регистрация: 16.2.2005 Где: Украина, Хмельниц кий Репутация: 1 Всего: 1 |
Каким образом можно приостановить выбранный процесс?
Например, приостановить процесс чата в локальной сети, чтобы окно оставалось, но никаких сообщений программа не обрабатывала. Я так понимаю, что сначала надо по имени процесса получить его PID, потом по этому PID найти главный поток и сделать ему SuspendThread(ThreadHandle)? ![]() |
|||
|
||||
Александра |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 219 Регистрация: 20.2.2005 Где: Москва Репутация: 1 Всего: 12 |
Jetus
совершенно верно ![]() --------------------
|
|||
|
||||
Петрович |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1000 Регистрация: 2.12.2003 Где: Москва Репутация: 15 Всего: 55 |
Только тогда и его окошко перерисовываться не будет.
-------------------- Все знать невозможно, но хочется |
|||
|
||||
legwar |
|
|||
Новичок Профиль Группа: Участник Сообщений: 28 Регистрация: 24.12.2004 Где: Москва Репутация: нет Всего: нет |
Sleep(dwMilliseconds:DWORD);
Kernel32.dll |
|||
|
||||
Александра |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 219 Регистрация: 20.2.2005 Где: Москва Репутация: 1 Всего: 12 |
legwar
слип не останавливает, а передает процессорное время на указанное кол-во милисекунд другим процессам или потокам, причем удаленно его не сделать. Петрович ??? тут же останавливается поток, который сообшения по сетки ловит? Это сообщение отредактировал(а) Александра - 24.2.2005, 16:10 --------------------
|
|||
|
||||
Петрович |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1000 Регистрация: 2.12.2003 Где: Москва Репутация: 15 Всего: 55 |
Я не понял что этим ты хотела сказать. Я в в своем посте имел ввиду то, что отрисовка окна делается самим процессом, причем обычно его главным потоком. Соответственно, если приостановить тот поток процесса который обрабатывает WM_PAINT то, окно на экране останется лиш до тех мор пока его не подпортят. Например, если по нему проедутся другим окном, то затертая часть изображения не восстановится. Кроме того, естественно, такое окно нельзя будет ни таскать, ни перемещать, пока не "отпустят" поток. А я так понял, что Jetus хочет что-бы окно-то осталось. Он хочет только приостановить прием сообщений по сетке. -------------------- Все знать невозможно, но хочется |
|||
|
||||
Александра |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 219 Регистрация: 20.2.2005 Где: Москва Репутация: 1 Всего: 12 |
Петрович
ну да, т.е. все и будет рисоваться а прием просто остановится... все верно... --------------------
|
|||
|
||||
Jetus |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 46 Регистрация: 16.2.2005 Где: Украина, Хмельниц кий Репутация: 1 Всего: 1 |
Так мне так и надо - чтобы процесс полностью "замёрз".
А как это осуществить? Я пробовал, но ничего не вышло ![]() |
|||
|
||||
_hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 9 Всего: 98 |
останавливай все потоки процесса. а что пробовал?
-------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
p0s0l |
|
||||
![]() Г-н Посол ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3668 Регистрация: 13.7.2003 Где: 58°38' с.ш. 4 9°41' в.д. Репутация: 14 Всего: 112 |
Если нужно остановить какой-то процесс, к примеру, на 5 сек, то будет так:
PS: OpenThread нет в Win9x, поэтому там будет облом. Если надо, чтобы работало под 9x, то смотри "Арсенал" - там Girder приводил функцию OpenThread для всех версий винды... -------------------- С уважением, г-н Посол. |
||||
|
|||||
Jetus |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 46 Регистрация: 16.2.2005 Где: Украина, Хмельниц кий Репутация: 1 Всего: 1 |
Большое спасибо, p0s0l!
![]() |
|||
|
||||
Jetus |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 46 Регистрация: 16.2.2005 Где: Украина, Хмельниц кий Репутация: 1 Всего: 1 |
Уважаемый p0s0l, твой код отлично работает и я стал пробовать его на всех процессах подряд - останавливался даже поток System. Однако меня постигло разочарование, когда я попробовал остановить процесс navapsvc.exe - это служба Norton Antivirus'a. Этот процесс не желал останавливаться ни в какую! Даже принудительно завершатся не хочет через TaskManager и другие подобные менеджеры процессов. Как это может быть? Неубиваемый процесс???
![]() |
|||
|
||||
Girder |
|
|||
![]() Лентяй 2 ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1993 Регистрация: 12.5.2004 Репутация: 25 Всего: 155 |
попробуй включить привелегию: SE_DEBUG_NAME
-------------------- Как слышим, так и пишим. Истина где-то там... |
|||
|
||||
p0s0l |
|
||||
![]() Г-н Посол ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3668 Регистрация: 13.7.2003 Где: 58°38' с.ш. 4 9°41' в.д. Репутация: 14 Всего: 112 |
Делается это так:
-------------------- С уважением, г-н Посол. |
||||
|
|||||
RA |
|
||||
![]() Брутальный буратина ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3497 Регистрация: 31.3.2002 Где: Лес Репутация: 7 Всего: 115 |
Не поможет. Добавлено @ 19:52
Теоретически процесс убиваемый просто нужно обойти хук, каторым он защищен. Как правило речь идет о некой специфической dll в каждом твоём процессе. |
||||
|
|||||
Jetus |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 46 Регистрация: 16.2.2005 Где: Украина, Хмельниц кий Репутация: 1 Всего: 1 |
Большое спасибо ещё раз, г-н p0s0l!
Действительно, SetDebugPrivilege позволила его тормознуть. Однако RAdmin тоже прав. Когда я для проверки (после того как остановил 4 процесса антивиря) решил скопировать вирус с одного места на другое, то у меня ничего не вышло, правда никакого предупредительного сообщения (как должно быть) не вылетело. Так и есть - стоит хук и хоть процессы заморожены, но хук работает. Как же "заморозить" хук? Может вопрос звучит глупо, но всё же? |
|||
|
||||
RA |
|
|||
![]() Брутальный буратина ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3497 Регистрация: 31.3.2002 Где: Лес Репутация: 7 Всего: 115 |
Jetus Тебе нужно выгружать чужую dll () из процесса каторому ты хочешь дать свободу действий.
|
|||
|
||||
bartram |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1606 Регистрация: 22.2.2004 Где: Russia, Samara Репутация: 3 Всего: 29 |
RAdmin, а как узнать имя этой Dll?
Это сообщение отредактировал(а) bartram - 28.2.2005, 21:56 |
|||
|
||||
RA |
|
|||
![]() Брутальный буратина ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3497 Регистрация: 31.3.2002 Где: Лес Репутация: 7 Всего: 115 |
Ну это уже самому смотреть нужно какие длл-ки системные а какие подозрительные.
Добавлено @ 22:52 Смотри описание, пути запуска, информацию о файле. |
|||
|
||||
Jetus |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 46 Регистрация: 16.2.2005 Где: Украина, Хмельниц кий Репутация: 1 Всего: 1 |
Спасибо, RAdmin, именно так я и думал, только вот я умею выгружать dll лишь из собственных процессов
![]() ![]() |
|||
|
||||
Girder |
|
||||
![]() Лентяй 2 ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1993 Регистрация: 12.5.2004 Репутация: 25 Всего: 155 |
![]() Jetus смотри какие драйверы подключаются.
Это сообщение отредактировал(а) Girder - 1.3.2005, 15:35 -------------------- Как слышим, так и пишим. Истина где-то там... |
||||
|
|||||
Jetus |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 46 Регистрация: 16.2.2005 Где: Украина, Хмельниц кий Репутация: 1 Всего: 1 |
Спасибо, Girder. Понятно, что FreeLibrary, только это для своего процесса. А у меня вопрос такой: я знаю, что определённый чужой процесс (назовём его "а.ехе") подгрузил библиотеку ("х.dll"). Как вугрузить из а.ехе библиотеку х.dll?
|
|||
|
||||
Girder |
|
||||
![]() Лентяй 2 ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1993 Регистрация: 12.5.2004 Репутация: 25 Всего: 155 |
Типо так:
Использование:
PS: Выгрузка только динамически загруженных DLL. Если ты выгрузиш(попытаешся) статическую... то процесс-жертва скорее всего прибьется системой. ![]() -------------------- Как слышим, так и пишим. Истина где-то там... |
||||
|
|||||
Jetus |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 46 Регистрация: 16.2.2005 Где: Украина, Хмельниц кий Репутация: 1 Всего: 1 |
Girder, ты меня просто выручил! Отличный код!
![]() Резюме по топику или для чего всё это было нужно: пробрался ко мне на комп вирь, который инжектирует свою dll-библиотеку в другие процессы. "Замораживать" процессы меня тут уже научили (ещё раз спасибо г-ну p0s0l), выгружать библиотеки из чужих процессов научили (ещё раз спасибо, Girder). Остался ещё только один вопрос. Я не уверен, но по моему вирь запихивает свою dll-библиотеку в адресное пространство Kernel32.dll. Вопрос: Как можно просмотреть, какие библиотеки загружены Kernel32.dll? |
|||
|
||||
Girder |
|
|||
![]() Лентяй 2 ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1993 Регистрация: 12.5.2004 Репутация: 25 Всего: 155 |
![]() ![]() PS: Вирь может сидеть! в адрессном пространстве Kernel32 и т.п. Он может не много(или много) переписать код Kernel32(или других Dll) в нутри адрессного пространства. Тогда так... енто проверяется: Сравнивается код Dll в контексте процесса жертвы... и в твоем контексте... (или с образом на диске - но енто чуть сложнее) PS2: Ты б лудше антивирь... запустил ![]() -------------------- Как слышим, так и пишим. Истина где-то там... |
|||
|
||||
Jetus |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 46 Регистрация: 16.2.2005 Где: Украина, Хмельниц кий Репутация: 1 Всего: 1 |
Гы
![]() Но он вроде как притих, кажись я замочил его инжектор и теперь он не проявляется. Огромная благодарность всем, кто принимал участие в топике! Спасибо! ![]() |
|||
|
||||
RA |
|
|||
![]() Брутальный буратина ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3497 Регистрация: 31.3.2002 Где: Лес Репутация: 7 Всего: 115 |
Нормально ![]() |
|||
|
||||
Competitor |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 440 Регистрация: 23.3.2005 Где: Tula Репутация: нет Всего: -1 |
А монжо ли приостановить выполнение программы до наступления события OnActivate? Прошу пример
|
|||
|
||||
_hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 9 Всего: 98 |
а она и так после него работать начинает...
что именно тебе нужно? -------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: WinAPI и системное программирование" | |
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |