|
|
| Посл.отвђт | Сообщен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 |