Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Перехват падения чужой программы 
:(
    Опции темы
SenkraD
Дата 16.2.2010, 15:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 933
Регистрация: 3.2.2006
Где: Украина::Киев

Репутация: 9
Всего: 23



удаленно

Это сообщение отредактировал(а) SenkraD - 16.2.2010, 15:25


--------------------
 Имеющий язык - да не убоится спросить! 
user posted image
PM MAIL ICQ   Вверх
Comm
Дата 23.2.2010, 18:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 269
Регистрация: 31.8.2007
Где: Санкт-Петербург

Репутация: 2
Всего: 1



Цитата

Comm, bra1ny, что скажете на CreateRemoteThread(или инжект),
который ставит фильтр исключений посредством SetUnhandledExceptionFilter с нужной
тебе логикой?

Решил воспользоваться твоим советом, но возникли некоторые трудности

Судя по описанию CreateRemoteThread внедряет поток в адресное пространство процесса
далее SetUnhandledExceptionFilter устанавливает(или перезаписывает финальный обработчик исключений,если он есть) Вопрос в том  если допустим в коде сервера установлен ещё внутрипоточный обработчик исключений,то после его обработки попадет ли он в мою финальную функцию обработки  Ексепшена ?

Или я не правильно понял принцип работы этого метода ? Спасибо за помощь.


--------------------
=)))))
user posted image
PM MAIL ICQ   Вверх
SenkraD
Дата 24.2.2010, 10:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 933
Регистрация: 3.2.2006
Где: Украина::Киев

Репутация: 9
Всего: 23



Comm,  этот медот SetUnhandledExceptionFilter работает по принципу
"кто последний - тот и папа", так что ты ставишь свой обработчик, а функа тебе возвращает
указатель на обработчик, который был до тебя. А дальше можеш обрабатывать сам,
можеш сначала вызвать старый потом себя или наоборот.

Тебя этот нюанс интересовал?

P.S. Ещё вродь есть фун-ка типа AddVectorHandler или как-то так, она добавляет твой
обработчик в конец очереди, но не факт что к нему дойдёт вызов - кто-то может вызвать
TerminateProcess или что-то подобное, или кто-то пометит исключение как обработаное



--------------------
 Имеющий язык - да не убоится спросить! 
user posted image
PM MAIL ICQ   Вверх
XPyCT
Дата 24.2.2010, 11:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 381
Регистрация: 24.8.2007
Где: Moldova

Репутация: 10
Всего: 10



Comm, 
Уважаемый а какой сервер если не секрет не РФ онлайн часом?
PM MAIL Skype   Вверх
Comm
Дата 24.2.2010, 14:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 269
Регистрация: 31.8.2007
Где: Санкт-Петербург

Репутация: 2
Всего: 1



Цитата

Comm, 
Уважаемый а какой сервер если не секрет не РФ онлайн часом? 

Нет, Counter-Strike\Source
Цитата

Тебя этот нюанс интересовал?

Да, и ещё не понятно как функа CreateRemoteThread работает


--------------------
=)))))
user posted image
PM MAIL ICQ   Вверх
SenkraD
Дата 24.2.2010, 14:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 933
Регистрация: 3.2.2006
Где: Украина::Киев

Репутация: 9
Всего: 23



вот те раз и вот те два + можеш в Рихтере посмотреть.
(Если нет или лень искать постучись в асю - выдам chm-файл)


--------------------
 Имеющий язык - да не убоится спросить! 
user posted image
PM MAIL ICQ   Вверх
Platov
Дата 24.2.2010, 15:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 155
Регистрация: 23.7.2009

Репутация: 2
Всего: 2



Может я и не в тему, но почему нельзя написать клиента который приконнектится к серверу и будет ждать когда тот упадёт?
PM MAIL   Вверх
Comm
Дата 24.2.2010, 15:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 269
Регистрация: 31.8.2007
Где: Санкт-Петербург

Репутация: 2
Всего: 1



Цитата

вот те раз и вот те два + можеш в Рихтере посмотреть.
(Если нет или лень искать постучись в асю - выдам chm-файл) 

Информация  в ссылках хорошая,всё понятно...а что за инфа  в chm файле ?


Цитата

Может я и не в тему, но почему нельзя написать клиента который приконнектится к серверу и будет ждать когда тот упадёт? 

Потому что после ошибки сервер ещё может частично функционироваь + это не серьезно для программы на АСМ ,эту прогу я решил написать имено на этом языке=)) Почему вопросы задаю здесь ? Потому что отвечают с завидной периодичностью.. 

Это сообщение отредактировал(а) Comm - 24.2.2010, 15:21


--------------------
=)))))
user posted image
PM MAIL ICQ   Вверх
XPyCT
Дата 24.2.2010, 16:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 381
Регистрация: 24.8.2007
Где: Moldova

Репутация: 10
Всего: 10



Цитата(Comm @ 24.2.2010,  14:49)
Цитата

Comm, 
Уважаемый а какой сервер если не секрет не РФ онлайн часом? 

Нет, Counter-Strike\Source



ну дабы не изобретать велосипед в сервере рфонлайн есть батник который следит за падением екзешника(а это гс сервер)
и поднимает его! если интересует могу порытся поискать для вас
пс: Раньше держал рф онлайн и часто читерки ложили сервер батник поднимал без проблем
PM MAIL Skype   Вверх
Comm
Дата 24.2.2010, 16:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 269
Регистрация: 31.8.2007
Где: Санкт-Петербург

Репутация: 2
Всего: 1



Цитата

если интересует могу порытся поискать для вас

Было бы хорошо !


--------------------
=)))))
user posted image
PM MAIL ICQ   Вверх
XPyCT
Дата 24.2.2010, 16:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 381
Регистрация: 24.8.2007
Где: Moldova

Репутация: 10
Всего: 10



Автоподъем для любого сервера:

-> Создаём txt файл
-> пишем туда код
-> меняем название зоны(вашего сервера) на своё
-> закрываем сохраняем с расширением BAT
-> После кладем в папку где находится зона(ваш сервер)
-> Запуск

пс: под именем зона понимается World Server сервер  World Server.exe

Код

@echo Off
Title World Server Monitor
:bof
echo Starting the World Server...
START "World Server" /Wait /Min Название зоны
echo World Server Crashed!
echo Performing Reload
:eof
echo End of Script...
goto :bof


надеюсь вам поможет
PM MAIL Skype   Вверх
Акакий
Дата 28.7.2010, 14:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 6.7.2009

Репутация: нет
Всего: нет



Мда... Название темы такое многообещающее... А по существу, т.е. как перехватывать Exception в чужой проге, не сказано ровно ничего.

Код

type
  TDebugThread = Class(TThread)
  Private
  Protected
    Procedure Execute; override;
  Public
    Constructor Create;
    Destructor Destroy; override;
  End;

..............

procedure TForm1.FormCreate(Sender: TObject);
begin
  DebugThread := TDebugThread.Create;
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  DebugThread.Terminate;
end;

Constructor TDebugThread.Create; 
Begin 
   Inherited Create(False); 
   FreeOnTerminate := True; 
End; 

Destructor TDebugThread.Destroy; 
Begin 
   Inherited Destroy; 
End; 

Procedure TDebugThread.Execute;
Var 
  DebugEvent : _Debug_Event; 
  OpenHandle : THandle;


Begin
   OpenHandle := OpenProcess(PROCESS_ALL_ACCESS, True, сюда кладем ProcessId);

   While (not Terminated) do
   Begin 
      Sleep(10);
      IF (WaitForDebugEvent(DebugEvent, 100)) Then
      Begin
         If DebugEvent.dwDebugEventCode=EXCEPTION_DEBUG_EVENT then
           begin
             ShowMessage('Exception блин');
             ContinueDebugEvent(DebugEvent.dwProcessId, DebugEvent.dwThreadId, DBG_EXCEPTION_NOT_HANDLED);
           end
         Else
         ContinueDebugEvent(DebugEvent.dwProcessId, DebugEvent.dwThreadId, DBG_CONTINUE);
      End
       Else Sleep(50);
   End;

   CloseHandle(OpenHandle);
End;

end.





Это сообщение отредактировал(а) Акакий - 28.7.2010, 16:33
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.0512 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.