Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Блокировка INT 3  (Прочитано 6943 раз)
0 Пользователей и 1 Гость смотрят эту тему.
LemmonRus
Помогающий

ru
Offline Offline
В правильно заданном вопросе 90% ответа.


« : 15-02-2011 10:57 » 

Проблема такова:
В DLL через некоторое время работы идет прерывание INT 3.
Соответственно это ведет к  вызову диалога с выбором действия и остановке работы программы.
Подскажите пожалуйста возможно ли блокирование данного прерывания.
И если возможно, как это можно сделать?
Записан
baldr
Команда клуба

cy
Offline Offline
Пол: Мужской
Дорогие россияне


WWW
« Ответ #1 : 15-02-2011 12:45 » 

LemmonRus, а что за DLL? Твоя собственная? Собранная в Debug?
INT 3 - это breakpoint, иными словами, точка останова.
Как вариант, можно заменить этот вызов командой NOP, но не факт, что это прокатит - контрольная сумма файла будет другая
Записан

Приличный компьютер всегда будет стоить дороже 1000 долларов, потому что 500 долларов - это не вполне прилично
LemmonRus
Помогающий

ru
Offline Offline
В правильно заданном вопросе 90% ответа.


« Ответ #2 : 15-02-2011 13:30 » 

Dll собрана в релиз (исходников нет).
Этот бряк возникает из-за ошибки при работе с динамической памятью .
Самое забавное, насколько я понял из отладки под IDA ,данная ошибка не ведет к повреждению каких либо данных.По этому сама ошибка  меня не волнует.Мне нужно придумать костыль, дабы система не обращала
внимание на это прерывание и программа использующая эту библиотеку продолжала работать.
Записан
baldr
Команда клуба

cy
Offline Offline
Пол: Мужской
Дорогие россияне


WWW
« Ответ #3 : 15-02-2011 13:40 » 

Ну попробуй заменить этот вызов (0xCC) на NOP (в x86, вроде 0x90 - см http://en.wikipedia.org/wiki/NOP ).
Напиши что получится - интересно..
Записан

Приличный компьютер всегда будет стоить дороже 1000 долларов, потому что 500 долларов - это не вполне прилично
LemmonRus
Помогающий

ru
Offline Offline
В правильно заданном вопросе 90% ответа.


« Ответ #4 : 15-02-2011 13:56 » new

Ну попробуй заменить этот вызов (0xCC) на NOP (в x86, вроде 0x90 - см http://en.wikipedia.org/wiki/NOP ).
Напиши что получится - интересно..
Под IDA  поменял "на ходу" программа без проблем  продолжила работу.
По этому речь и идет о блокировке последствий ошибки в автоматическом режиме.
« Последнее редактирование: 15-02-2011 14:21 от LemmonRus » Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines