Сейчас на форуме: (+9 невидимых) |
eXeL@B —› Протекторы —› Распаковка DOS программы, нужна помощь. |
Посл.ответ | Сообщение |
|
Создано: 20 мая 2014 17:48 · Личное сообщение · #1 Здравствуйте! Помогите пожалуйста с распаковкой DOS программы. Файл запакован, чем не знаю, разные анализаторы для DOS программ результата не дали. Подозреваю, что это hardlock, так как для работы файла нужен ключ (имеется в наличии). Эксперименты провожу на DOSBox 0.74 SVN-Daum (Debugger) Оригинальный файл boot.exe, запускаю на отладку, в dosbox отладчике делаю команду DOS MCBS и получаю следующую информацию касательно boot.exe MCB Seg: 01E8, Size: 647520, PSP Seg: 01E9 Далее команда: MEMDUMPBIN 01E8:0000 9E160 Сохраняю в memdump1.bin Когда программа запущена, она выдаёт ошибку: HARD DISK ERROR: Disk not completely updated. Перехожу в отладчик, команда DOS MCBS MCB Seg: 017B, Size: 116800, PSP Seg: 017C MCB Seg: 1E00, Size: 1024, PSP Seg: 017C Делаю ещё 2 дампа: MEMDUMPBIN 017B:0000 1C840 Сохраняю в memdump2.bin MEMDUMPBIN 1E00:0000 400 Сохраняю в memdump3.bin Если отлаживать пошагово, то видно что программа находится в бесконечном цикле по адресу 0431:0152 Делаю MEMDUMPBIN 0431:0000 100000 Сохраняю в memdump4.bin Дамп memdump2.bin хоть и выглядит как распакованный EXE, при переименовании не работает. Наверное неправильная точка входа, а чем поправить или как проверить - не знаю. Буду очень благодарен за помощь или совет, ибо опыта отладки и распаковки DOS программ у меня нет. Так же прошу обратить внимание, что по не проверенным данным boot.exe может отформатировать диск следующий за C и D, так как в программе есть режим апдейта и подготовки к нему диска. 8391_20.05.2014_EXELAB.rU.tgz - boot.zip |
|
Создано: 22 мая 2014 04:15 · Поправил: dosprog · Личное сообщение · #2 Не знаю, насколько поможет такая инфа: 1) Запускался BOOT.EXE в чистой DOS 7.1 (real mode без himem.sys) Снял дампы модуля с разных адресов, недораспакованные. В конце дампа присутствуют строки: Code:
2) Дампы снимались после завершения работы программы с ошибкой (в центре экрана синее окошко с надписью "Hardlock not found"). То-есть программа недораспаковалась из-за отсутствия этого самого хардлока. 3) Раз имеется хардлок, то проще установить этот хардлок, запустить машину в чистой DOS и попытаться в чистой DOS распаковать BOOT.EXE с помощью CUP386 или AUTOHACK'а. Судя по вашим дампам, прога написана на MSC, то-есть популярные распаковщики, думаю, могут её развернуть автоматом. В случае без хардлока они не могут верно опознать точку входа екзека, дампят модуль только по int21h/4Ch (завершение программы), и недораспакованный екзек получается совершенно кривым. 4) В вашем случае с DosBox'ом - автораспаковщики работать не будут. Хотя сама программа распаковывается успешно, как я понял, при вставленном хардлоке. Можно было бы развернуть её и вручную после дампирования в DosBox'e, но без опыта это тяжко. ToBad пишет: хоть и выглядит как распакованный EXE, при переименовании не работает. Наверное неправильная точка входа, ... - этого недостаточно, всё значительно сложнее. В любом случае, для работы этой проги BOOT.EXE понадобится доступ к фзическому диску, который вряд-ли возможно получить под DosBox'ом (судя по полученному вами сообщению "HARD DISK ERROR: Disk not completely updated"). Поэтому советую сделать всё по пункту (3) и не заморачиваться. Во всяком случае, попробовать. 6) Вкратце, так. | Сообщение посчитали полезным: ToBad |
|
Создано: 22 мая 2014 14:52 · Поправил: saffers · Личное сообщение · #3 эххх, тряхнем стариной и снова в 90-е ToBad а ключ кстати какой, LPT? Я пробовал запустить под виртуалкой Vmware c Windows98 на борту. резюмируя: - До загрузки винды пробовал запустить softice 2.8 для дос. Но т.к. уже забыл, как там его правильно грузить в верхнюю память, или по другим причинам загрузить и отлаживать s-ice не получилось. - Сильно не влезал. пробовал использовать Borland Turbo Debugger 3.2 для 286 для real time mode. На начальном этапе кодпротектора начинает самодифицироваться (ксорит по циклам). Также переустанавливает int21h (функции dos) на свой обработчик. Дальше кажется использует антиотладочные фокусы с вычислениями с запятой и отладчик вешается. Также вешались распаковщики работающие в режиме трейсера. Чувствую есть там трюки против трассировки. Трудность на мой взгляд еще представляет еще то, что модель памяти программ тех лет не плоская, как сейчас, а сегмент:смещение. Отслеживать работу с которыми даже сложнее чем теперь. По-моему еще протектор портит запись о Relocations table address в заголовке MZ файле... устанавливая там 0000. - Таже перепробовал лежавшие давно в чулане автоматические распаковщики времен лихих 90х типа unp, uup, intruder, tron и стандарт де факто тех лет autohack, cup386 ничего не помогло распаковать полностью. Лучше всего получилось у автохака. После него хоть оставались какие-то дампы. Скорее всего без ключа распаковать нормально вообще не получится. cup386 может распаковывать из под реал тайма, реал тайма 386, защищенного. Так вполне можно попробовать распаковать с ключом. Если защищенная программа слинкована компилятором, то распаковщики тех лет использовали сигнатуры начала oep для распаковки. Шансы увеличиваются. Вообще никогда не пробовал распаковывать под дос боксом с помощью автоунпакеров. Вопрос открытый... возможно некоторые сработают - еще программа имеет оверлей и зачем он нужен в данном случае не понятно. По идее нужен был, когда большая программа не могла загрузиться со стеком в одну 64к страницу. ToBad - присоединяюсь к совету dosprog по п.3. Лучше чистый дос. Я пробовал под виртуалкой, т.к. ключа не было. А с ключом, как его внутрь машины протолкнуть... - заголовки MZ ехе файла можно читать и править с помощью Hiew - выкладываю автоунпакеры какие сохранились, там же есть инфа по автохаку и кратко о методах распаковки времен доса. - инфа про ms-dos [url=--> http://msdosworld.ru <--]--> http://msdosworld.ru <--[/url] Добавлено спустя 4 часа 19 минут ToBad вот еще - незабвенная <img src="http://exelab.ruimg/smilies/s3.gif[/img] Player's Tools - прородитель artmoney и procdumpa резидентный дампер памяти, включая exstended и даже дос экстендеров. Допустим автоунпакеры не помогут, и пройдешь до Entry Point отладчиком, и захочешь сдампить, то вот этот утиль это сделает cdb5_22.05.2014_EXELAB.rU.tgz - PlayersTool.ver.5.00b.English.rar Добавлено спустя 7 часов 48 минут перезалил 5f2d_22.05.2014_EXELAB.rU.tgz - Unpacker_old.rar | Сообщение посчитали полезным: ToBad |
|
Создано: 23 мая 2014 12:14 · Личное сообщение · #4 Дискетка с досом и cup386 /7 boot.exe boot1.exe По идее расспакует. Если нет то cup386 /7 /d boot.exe boot1.exe До Entry Point и создаешь exe. cup386 его хорошо трейсит, на уловки его не попадается. А так как у меня нет ключа и api hardlock-а под дос то и ковырять долго. | Сообщение посчитали полезным: ToBad |
|
Создано: 23 мая 2014 16:37 · Поправил: saffers · Личное сообщение · #5 ToBad если открыть ваш дамп №2 из пост №13 то там код в один, один Добавлено спустя 8 минут посмотрите еще тут, траппер обмена |
|
Создано: 24 мая 2014 03:06 · Личное сообщение · #6 Огромное спасибо всем за помощь! Cup386 я пробовал и раньше, но моей ошибкой было то, что делал это я на dosbox. На определении Entry Point всё зависало. Теперь почитав советы, я поставил дос на реальную машину и cup386 всё распаковал! Файл получился 57711 байт и сохранился оверлей кажется, IDA по крайней мере ругается. Кстати файлик работает теперь и без ключа (до первой ошибки с ним не связанной). Как будет далее, узнаю на днях, когда установлю реальный рабочий образ со всем необходимым включая системную карту на его родную машину... Прошу тему пока не закрывать, возможно будут вопросы по дальнейшей отладке. |
|
Создано: 24 мая 2014 11:21 · Поправил: saffers · Личное сообщение · #7 ToBad Если прога обычная без антидебаг трюков, то можешь отлаживать с помощью afdpro, turbo debugger (286, 386), с трюкамми - cup386, deGlucker, s-ice 2.8. s-ice и td386 требуют манипуляций с config.sys для загрузки отладочных драйверов поэтому наверно проще юзать cup386 v3.4 в режиме VM86 - /3 /d, i386 - /7 /d, он и хардварные бряки поддерживает еще можешь попробовать достаточно мощный deGlucker 0.05 отладчик тоже работающий в защищенном режиме, с поддержкой hw bp, bp int если разрабы постарались и вызовы api хардлока имеются, то они будут напрямую работать через порты ввода-вывода, тут потребуются sice, cup386, dg например, cup386 без проблем ставит hw bpio 378h оверлей 210h байт, скорей всего это от защиты, не похоже что там код, в принципе можешь попробовать отрезать... |
|
Создано: 24 мая 2014 14:59 · Личное сообщение · #8 |
eXeL@B —› Протекторы —› Распаковка DOS программы, нужна помощь. |