· Начало · Отвђтить · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

 WASM Phorum —› WASM.RESEARCH —› Hardware breakpoint под DOS

Посл.отвђт Сообщенiе


Дата: Авг 23, 2004 12:35:33

Вообщем есть досовая прога. В ней есть строка "Demo" в сегменте даных. Поиском в айсе строка находится, но адрес представлен в 32-битном виде и bpm на этот адрес нифига естессно не срабатывает. Подскажите, чем можно отловить момент обращения к строке?


Дата: Авг 24, 2004 16:53:37

Надо чтобы был не 32-битный режим.
Запустил Волкова под ICE - без проблем ищет по сегментам.
Не забудь правильно подключиться :
dldr.exe C:\vc\VC.COM
Карта памяти : mapv86 .


Дата: Авг 24, 2004 17:38:01

Загружаю программу я как ты и сказал, через dldr. В окне кода все нормально, 16-битный режим. А в окне данных, где выпадает результат s 0 l -1 'Demo' режим 32-битный. Как его переключить в 16-бит? Пойду RTFM по айсу сделаю..


Дата: Авг 24, 2004 19:02:00

Sh355
„А в окне данных, где выпадает результат s 0 l -1 'Demo' режим 32-битный“
Это только видимость. На самом деле там offset 16-битный. Попробовал на qbx.exe Помучился с командой s - хотя указываю длину больше 0FFFF - она ищет в 64 Кбайтах. Т.е. если у тебя хоть какой указан сегмент
(не обязательно точно), то задавай bpm прямо по нему - все работает. Короче тебе повезло, что строчка в первые 64 Кб попала, а то и не нашел бы.


Дата: Авг 24, 2004 21:08:02

Хм. Там показывает 0010:00040542 примерно так. Или может иногда показать 0010:81025642. На 16 бит не очень похоже. И еще, как-то раз айс показал адрес данных как надо - с 16 битным сегментом и смещением. Я на радостях быстро поставил туда bpm. И какое же было мое удивление, когда после следующего запуска программы bpm просто пропал из списка бряков. В связи с чем остались два вопроса:
1. Почему айс показывает то 16, то 32 бит в окне данных? От чего это может зависеть?
2. Куда пропадает bpm, установленый в контексте 16-битной дос программы?


Дата: Авг 25, 2004 02:46:58

Вообщем, проблема решена d ds:0 и все заработало в 16-битном виде. И bpm заработал отлично тоже, правда почему-то не могу найти код из памяти в файле.


Дата: Авг 25, 2004 10:44:53

Sh355
„правда почему-то не могу найти код из памяти в файле.“
А про relocate не забыл. Например, сall в другой сегмент выглядит так :
call 0000:адрес ( в файле)
call 2378:адрес ( в памяти)
Ищи по командам без таких штучек.


Дата: Авг 26, 2004 11:23:38 · Поправил: Sh355

Куда-то предыдущий пост пропал :(
Вообщем разобрался, нашел код, дело было не в релоках, а в кривых руках. Дальше началось самое интересное - хардлок, и куча математичеких операций через int 35 (эмуляция сопроцессора), и int 3f непонятно в какой оверлей ведущий.. вообщем полная задница :)


Дата: Авг 26, 2004 17:13:25 · Поправил: valterg

Это же ДОС !
Они могли простой командой MOV подменить обработчик
прерываний. Сначала проверь, кого они вызывают ?
ДОС или кусок программы.


Дата: Авг 27, 2004 11:16:46 · Поправил: Sh355

Код напичкан такой гадостью:
seg003:5AE7 9A B0 01 92 3A call far ptr sub_3AAD0
seg003:5AEC CD 35 46 B8 fld dword ptr [bp-48h] ; (emulator call)
seg003:5AF0 CD 35 5E C0 fstp dword ptr [bp-40h] ; (emulator call)
seg003:5AF4 CD 3D wait ; (emulator call)
seg003:5AF6 9A F5 01 92 3A call far ptr sub_3AB15

после прохождения call по trace over адреса меняются, если зайти туда по F8 то все виснет :) в самих call находится опкод команды int 3F и после него еще какой-то байт (номер процедуры, что ли). Вот тут я и погряз :)


Дата: Авг 27, 2004 13:18:44 · Поправил: valterg

Sh355

Похоже действительно плавающая арифметика. Очень муторное дело - я в свое время читал доки и пытался разбираться, но бросил. Но такая старая программа должна уже быть сломана или ты специально тренируешься ?
Обычно я такие штуки преодолеваю так : смотрю результат.
Результат-то скорее всего слово или меньше.
В том куске, что ты привел, вообще все понятно
переслали из одной ячейки( fld - fload load)
в другую (fst - Fl.store). И т.д.
Конечно муторно это...


Дата: Авг 27, 2004 16:01:47

„Но такая старая программа должна уже быть сломана или ты специально тренируешься ?“
Не, прога специфичная и не сломана еще никем. Есть желание поглядеть - намылю. меньше двух метров весит. Если тупо поправить джамп после результата, она честно пишет "Full version" и виснет напрочь :)


Дата: Авг 27, 2004 17:35:25

Скинь на valterg@inbox.ru
Может справлюсь. У меня тяжелее программа и для разминки сгодится.


Дата: Сен 1, 2004 18:08:29

Sh355

Есть небольшие успехи в ковырянии. Смотри почту и желательно знать, что за ключ ?


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.069