Сейчас на форуме: _MBK_ (+5 невидимых)

 eXeL@B —› Вопросы новичков —› Потоки ввода/вывода консольного приложения и Software breakpoint exception в IDA PRO
Посл.ответ Сообщение

Ранг: 3.0 (гость)
Активность: 0=0
Статус: Участник

Создано: 10 января 2011 01:51 · Поправил: laMer13
· Личное сообщение · #1

Пишу launcher для HLDS (выделенный сервер Win32 игры Half-Life) . Основная прога написана на C# + DLL для системных хуков на С++. Запускаю сервер в консольном режиме и слежу/управляю его состоянием через перенаправленные потоки ввода/вывода консоли HLDS. Запускаю HLDS и перенаправляю его IO потоки через класс Process из .NET FrameWork (ланчер написан на C#). Поток вывода прекрасно перенаправился. Поток ввода перенаправляется и работает на многих консольных приложениях (на всех, что я пробовал, например, cmd), но на hlds не работает. Перенаправляется в HLDS всё нормально, без ошибок, но консольное окно никакой ввод не получает. Более того, буфер перенаправленного потока ввода hlds переполняется.
С чем это может быть связано? Может быть, кто-то сталкивался?
Что такого может делать HLDS, что у меня теряется возможность перенаправить правильно поток ввода? Может ли быть такое, что через какое-то время после старта hlds подменяет поток ввода, а я отправляю управляющий ввод в старый поток? Или может у hlds есть ещё какие-то способы что-нибудь намудрить?
Я попробовал вводить через InputEvent и это работает, но это неудобно, тк консольное окно при этом необходимо активизировать (делать foreground)...
Вряд ли это что-то даст, но могу привести код отправки символов в перенаправленный поток и код перенаправления потоков.

Решил я выяснить причину того, почему у меня проблемы с перенаправлением потока ввода для hlds. Поставил IDA на свою Windows7 и решил пройтись по шагам по HLDS. Определить, что же он там намудрил... Получаю ошибку во время начала отладки: Software breakpoint exception, а дальше она мне акцес волатионы на 00000 показывает в idag.exe. Пробовал другие версии качать и устанавливать – не помогает. Попытка запуска отладчика из под администратора тоже не к чему не приводит. Пробовал Олечку (OllyDbg) – она заработала, но все, же Идой это делать много удобнее и привычнее.
С чем может быть связана эта ошибка у Иды? Может быть, кто-то сталкивался?



Ранг: 255.8 (наставник), 19thx
Активность: 0.150.01
Статус: Участник
vx

Создано: 10 января 2011 02:19
· Личное сообщение · #2

Ида дизассемблер, а не отладчик. Та часть что дебажит кривая. И не правда что олли менее удобна.

| Сообщение посчитали полезным: laMer13, MasterSoft

Ранг: 3.0 (гость)
Активность: 0=0
Статус: Участник

Создано: 10 января 2011 03:37
· Личное сообщение · #3

Тоесть это стандартная проблема Иды и её не как не обойдёшь?

Ида аппаратные точки останова не поддерживает?




Ранг: 527.7 (!), 381thx
Активность: 0.160.09
Статус: Участник
Победитель турнира 2010

Создано: 10 января 2011 11:30
· Личное сообщение · #4

laMer13 пишет:
Ида аппаратные точки останова не поддерживает?


Поддерживает. Если ставишь на данных, то сразу аппаратная, если на код, то в аппаратную можно превратить через
Debug->Open Subviews->Open breakopints, потом в окне курсор на соответствующую точку и Ctrl+E (Edit) и в окне галку Hardware breakpoint

-----
127.0.0.1, sweet 127.0.0.1


| Сообщение посчитали полезным: laMer13

Ранг: 481.4 (мудрец), 109thx
Активность: 0.180
Статус: Участник
Тот самый :)

Создано: 10 января 2011 19:59
· Личное сообщение · #5

laMer13 пишет:
Тоесть это стандартная проблема Иды и её не как не обойдёшь?

нет, это Clerk - любитель Ollydbg.

Какая версия иды?

p.s. имхо дело в отладке .NET процесса

-----
Реверсивная инженерия - написание кода идентичного натуральному




Ранг: 3.0 (гость)
Активность: 0=0
Статус: Участник

Создано: 10 января 2011 21:08 · Поправил: laMer13
· Личное сообщение · #6

Свой ланчер я под Идой не запускал. Отлаживаю только hlds. HLDS - это, вроде, не .NET процесс, а обычный exe'шник.

IDA PRO 5.2.0.908 (32 bit) (винда и экзешник тоже 32 bit)



Ранг: 255.8 (наставник), 19thx
Активность: 0.150.01
Статус: Участник
vx

Создано: 10 января 2011 21:47
· Личное сообщение · #7

Hexxx
> .NET процесса
Интересный термин, сами придумали ?



Ранг: 3.0 (гость)
Активность: 0=0
Статус: Участник

Создано: 11 января 2011 02:01 · Поправил: laMer13
· Личное сообщение · #8

Фраза из http://exelab.ru/f/action=vthread&forum=1&topic=12507#6:
Аттачу настройки десктопа дизасма и дебаггера для IDA 5.2 под разрешения 1280*1024, 1280*800, 1280*768 -- некоторые говорят что помогло от вылета IDA при старте отладчика.
1)Это решение моей проблемы? Нужно выставить такое разрешение экрана?

Пока Ида не работает - отлаживаюсь в Оле.
Извиняюсь, за нубские вопросы. Это мой первый опыт отладки в дебагерах.

И так, про Олю:
3)Как перейти по адресу? ПКМ/Go to - тут адрес указать нельзя.
4)В окне CPU - правая нижняя часть окна - это что за окно?
5)Почему странно распознаёт параметры?
Code:
  1. Call stack of main thread
  2. ...
  3. 0012FEFC   01434396   hlds.01405C10                                      hlds.<ModuleEntryPoint>+121   0012FF88
  4. 0012FF00   01400000     hCurrInstance = 01400000
  5. 0012FF04   00000000     hPrevInstance = NULL
  6. 0012FF08   001C26AD     CmdLine = ""
  7. 0012FF0C   0000000A     ShowState = SW_SHOWDEFAULT
Я имею ввиду параметр CmdLine. Я вроде запускаю с параметром "-console", а распознано как CmdLine = "".


Оля мне уже начинает нравится.



{Добавлено 11.01.2011 в 02:45:}
Ида начала отлаживать. Поставил фришную 5.0. Приходится ставить аппаратные брекпоинты, тк софтварные что-то не работают... И в любом случае выдаётся ошибка "Software breakpoint exception" и глючит интерфейс программы, но акссес волатионов с падением иды уже нет.

Оля может и менее функциональная (с точки зрения анализа), но покрайней мере не разу не глюкнула.


 eXeL@B —› Вопросы новичков —› Потоки ввода/вывода консольного приложения и Software breakpoint exception в IDA PRO
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати