ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > С/С++, C#, Delphi, .NET, Asm
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

Событие завершения процесса
  #1  
Старый 10.07.2008, 09:33
gevara
Познающий
Регистрация: 30.11.2006
Сообщений: 49
Провел на форуме:
36434

Репутация: 28
По умолчанию Событие завершения процесса

Есть произвольный код в адресном пространстве некоторого процесса. Этот код должен отлавливать событие завершения этого процесса. Что-то типа сообщения DLL_PROCESS_DETACH, но это сообщение приходит динамическеим библиотекам, а у меня произвольный код. Можно, конечно, перехватывать функцию ExitProcess, ExitThread, но не хочу гемора с перехватом...
 
Ответить с цитированием

  #2  
Старый 10.07.2008, 09:52
0verbreaK
Постоянный
Регистрация: 30.04.2008
Сообщений: 323
Провел на форуме:
379101

Репутация: 136
По умолчанию

а вопрос?
 
Ответить с цитированием

  #3  
Старый 10.07.2008, 10:40
gevara
Познающий
Регистрация: 30.11.2006
Сообщений: 49
Провел на форуме:
36434

Репутация: 28
По умолчанию

Код сисдит в апликухе и должен сохранить логи по завершении процесса.
 
Ответить с цитированием

  #4  
Старый 10.07.2008, 12:27
slesh
Reservists Of Antichat - Level 6
Регистрация: 05.03.2007
Сообщений: 1,985
Провел на форуме:
3288241

Репутация: 3349


Отправить сообщение для slesh с помощью ICQ
По умолчанию

Теоретически можно попробовать следующее.
При старте процесса в стеке сохраняется адрес возврата именно по этому и можно завершать программу по команте ret (если в стек ничего не добавлялось)
При нормально анализе можно в стеке найти этот адрес и подменить на адрес своего обработчика. Геморно но всёже как один из вариантов
ну и + желательно ExitProcess перехватить и тоже пустить на свой обработчик
 
Ответить с цитированием

  #5  
Старый 10.07.2008, 12:30
Ryu
Новичок
Регистрация: 13.06.2008
Сообщений: 24
Провел на форуме:
28814

Репутация: 4
По умолчанию

если код действительно в том же процессе, то только сообщение обрабатывать и хукать ничего не надо. (wm_terminate или что то в этом роде), но это только если приложение win а не дос.

Последний раз редактировалось Ryu; 10.07.2008 в 12:37..
 
Ответить с цитированием

  #6  
Старый 10.07.2008, 12:50
slesh
Reservists Of Antichat - Level 6
Регистрация: 05.03.2007
Сообщений: 1,985
Провел на форуме:
3288241

Репутация: 3349


Отправить сообщение для slesh с помощью ICQ
По умолчанию

2 Ryu млин, а если приложения WIN но без оконное? ТОгда регистрировать обработчик сообщений нужно. А если консольное, то вообще тогда нужно через SetConsoleCtrlhandler()
так что отлавливать сообщения - многое нужно учесть. При том, что как выше сказано код в произвольном процессе и следовательно он туда както внедряется и должен быть по крайней мере независимым от своего расположения в памяти.

P.S. Ну если код ведет логи, то пусть сразу их и пишет и делает чтото типа flush чтобы сразу скинуть на винт, а там при заврешении процесса - автоматом все дискрипторы загроются
 
Ответить с цитированием

  #7  
Старый 10.07.2008, 13:20
Jes
Постоянный
Регистрация: 16.04.2007
Сообщений: 398
Провел на форуме:
3371897

Репутация: 1462
По умолчанию

Цитата:
Сообщение от gevara  
Можно, конечно, перехватывать функцию ExitProcess, ExitThread, но не хочу гемора с перехватом...
а какой гемор? поменяй в таблице импорта адреса и всё
(если там конечно не динамич импорт)
 
Ответить с цитированием

  #8  
Старый 10.07.2008, 13:22
SlyBit
Познающий
Регистрация: 04.07.2008
Сообщений: 56
Провел на форуме:
390892

Репутация: 60
По умолчанию

gevara

Тут только перехватывать ZwExitProcess и ZwExitThread.

P.S. Фишка со стеком, как и с оконными сообщениями не прокатит, если приложение само вызывает ExitProcess.
 
Ответить с цитированием

  #9  
Старый 10.07.2008, 13:32
slesh
Reservists Of Antichat - Level 6
Регистрация: 05.03.2007
Сообщений: 1,985
Провел на форуме:
3288241

Репутация: 3349


Отправить сообщение для slesh с помощью ICQ
По умолчанию

2 SlyBit Блин чем дальше в лес, тем больше дров, которые человек наломает.
Такими темпами можно будет уже говорить о методах сплайсенга функций а там уже и до Native Api дойдем со стороны ядра.

P.S. 2 gevara cразу скажи в каком приложении ты это собираешься делать? или в любых. А то мы можем так далеко зайти в обсуждении, а на самом деле всё будет просто.
 
Ответить с цитированием

  #10  
Старый 10.07.2008, 16:16
gevara
Познающий
Регистрация: 30.11.2006
Сообщений: 49
Провел на форуме:
36434

Репутация: 28
По умолчанию

приложение оконное.
- адрес возврата подменить не получится - что если приложение многопоточное? перехватывать CreateThread проще перехватить ExitThread
- Вообще сообщение DLL_PROCESS_DETACH приходит либам в том случае, когда последний поток завершается вызовом ExitThread, то есть перехват оконных сообщений скорее всего всё-таки возможен, но я почему-то не вижу сообщения WM_TERMINATE... такого сообщения в SDK нет вообще.
- есть WM_CLOSE, WM_DESTROY, WM_QUIT, но стоит ли надеяться на эти сообщения? множество апликух не юзают их вообще. апликуха может иметь несколько окон и при закрытии одного из них апликуха продолжает работать (приходит сообщение WM_CLOSE)
- есть вот какая тема - добавить свою запись в двусвязный список LDR_MODULE (или как его там...), указав адрес обработчика, которому и будут приходить сообщения DLL_PROCESS_ATTACH, DLL_PROCESS_DETACH и прочие...

Последний раз редактировалось gevara; 10.07.2008 в 16:22..
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ПЕРЕВОД: Технические приемы эксплуатирования операционных систем Ios Дрэгги Чужие Статьи 1 01.05.2008 01:43
Возможно ли вытащить нужные байты из раболтающего процесса? wlastas С/С++, C#, Delphi, .NET, Asm 20 28.01.2008 20:28
внедрение в процесс и использование функций процесса, помогите amisd С/С++, C#, Delphi, .NET, Asm 1 10.01.2008 15:28



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ