ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2

ANTICHAT — форум по информационной безопасности, OSINT и технологиям

ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию. Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club, и теперь снова доступен на новом адресе — forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
Вернуться   Форум АНТИЧАТ > Программирование > С/С++, C#, Delphi, .NET, Asm
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #21  
Старый 10.07.2008, 22:21
razzzar
Участник форума
Регистрация: 16.06.2007
Сообщений: 107
Провел на форуме:
725870

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

когда-то писал программку, в которой надо было выполнить код, при завершении собственно этой программы. помогла кртшная функция _onexit(); она ставит функции на выполнение, при завершении процесса.
http://msdn.microsoft.com/en-us/libr...08(VS.71).aspx
 
Ответить с цитированием

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

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

Цитата:
Сообщение от SlyBit  
gevara

Я думаю, что оконные сообщения отпадают по как минимум 2м причинам: не отслеживается самостоятельный вызов ExitProcess программой, не всегда они "правильно" обрабатываются программой. Пример Outpost, при посылке его главному окну сообщения WM_CLOSE (щелчек на крестик в правом верхнем углу), оно просто сворачивается, вместо того чтобы закрыться. На сообщения WM_DESTROY и WM_QUIT вообще нет никакой реакции. Калькулятор же спокойно закрывается получив WM_CLOSE.

Выбор между модификацией PEB и сплайзингом ExitProcess и ExitThread. В первом случае все просто. Во втором нужно считать количество потоков, приложение закроется как только закроют его последний поток. Для этого нужно будет перехватывать CreateThread и икрементировать счетчик кол-ва потоков и декрементировать при выхове ExitThread, либо подсчитывать количество потоков перед вызовом ExitThread.
Вынужден тебя огорчить.
1) при перехвате ExitProcess считать потоки совершенно не обязательно
2) при перехвате ExitThread их считать тоже не обязательно. посмотри что делает система:
Код:
7C80CCA9 > 6A 14            PUSH 14
7C80CCAB   68 10CD807C      PUSH kernel32.7C80CD10
7C80CCB0   E8 1658FFFF      CALL kernel32.7C8024CB
7C80CCB5   64:A1 18000000   MOV EAX,DWORD PTR FS:[18]
7C80CCBB   8BF0             MOV ESI,EAX
7C80CCBD   8975 E0          MOV DWORD PTR SS:[EBP-20],ESI
7C80CCC0   33FF             XOR EDI,EDI
7C80CCC2   57               PUSH EDI
7C80CCC3   6A 04            PUSH 4
7C80CCC5   8D45 E4          LEA EAX,DWORD PTR SS:[EBP-1C]
7C80CCC8   50               PUSH EAX
7C80CCC9   6A 0C            PUSH 0C
7C80CCCB   6A FE            PUSH -2
7C80CCCD   FF15 2811807C    CALL DWORD PTR DS:[<&ntdll.NtQueryInform>; ntdll.ZwQueryInformationThread
7C80CCD3   3BC7             CMP EAX,EDI
7C80CCD5   75 05            JNZ SHORT kernel32.7C80CCDC
7C80CCD7   397D E4          CMP DWORD PTR SS:[EBP-1C],EDI
7C80CCDA   75 28            JNZ SHORT kernel32.7C80CD04
7C80CCDC   FF15 F414807C    CALL DWORD PTR DS:[<&ntdll.RtlFreeThread>; ntdll.RtlFreeThreadActivationContextStack
7C80CCE2   E8 3A000000      CALL <JMP.&ntdll.LdrShutdownThread>
7C80CCE7   39BE 940F0000    CMP DWORD PTR DS:[ESI+F94],EDI
7C80CCED   0F85 F6770300    JNZ kernel32.7C8444E9
7C80CCF3   C686 750F0000 01 MOV BYTE PTR DS:[ESI+F75],1
7C80CCFA   FF75 08          PUSH DWORD PTR SS:[EBP+8]
7C80CCFD   57               PUSH EDI
7C80CCFE   FF15 6C14807C    CALL DWORD PTR DS:[<&ntdll.NtTerminateTh>; ntdll.ZwTerminateThread
7C80CD04   FF75 08          PUSH DWORD PTR SS:[EBP+8]
7C80CD07   E8 96FD0000      CALL kernel32.ExitProcess
 
Ответить с цитированием

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

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

Я совсем не огорчен, это были только мои предположения Выходит в перехвате ExitThread нет необходимости. Однако приложение может поубивать свои потоки функцией TerminateThread или завершиться с помощью TerminateProcess.
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ПЕРЕВОД: Технические приемы эксплуатирования операционных систем 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