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

 eXeL@B —› Протекторы —› Распаковка DOS программы, нужна помощь.
Посл.ответ Сообщение


Ранг: 450.3 (мудрец), 13thx
Активность: 0.20
Статус: Участник

Создано: 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



Ранг: 431.7 (мудрец), 389thx
Активность: 0.730.32
Статус: Участник

Создано: 22 мая 2014 04:15 · Поправил: dosprog
· Личное сообщение · #2

Не знаю, насколько поможет такая инфа:

1)
Запускался BOOT.EXE в чистой DOS 7.1 (real mode без himem.sys)
Снял дампы модуля с разных адресов, недораспакованные.
В конце дампа присутствуют строки:
Code:
  1. Hardlock %not found.
  2. Expiration Date reached.
  3. Licence expired.
  4. Invalid Hardlock EEprom registers.
  5. Error reading current Execution Limit value.
  6. Error writing current Execution Limit value.
  7. Execution Limit reached.
  8. Licence expired.
  9. Execution Limit value was faked!
  10. Only %d counter unit(s) left.
  11. Only %d days left before license expiration date.
  12. Wrong CPU!
  13. Multitasking system not supported!
  14. Licence not enabled.
  15. Invalid Licence information.
  16. Checksum error!
  17. Program modified???
(Сам дамп не прилагаю, смысла в нём мало).

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

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

Создано: 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

Ранг: 11.8 (новичок), 2thx
Активность: 0.010
Статус: Участник

Создано: 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

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

Создано: 23 мая 2014 16:37 · Поправил: saffers
· Личное сообщение · #5

ToBad
если открыть ваш дамп №2 из пост №13 --> link <--
то там код в один, один

Добавлено спустя 8 минут
посмотрите еще тут, траппер обмена --> Link <-- от Chingachguk




Ранг: 450.3 (мудрец), 13thx
Активность: 0.20
Статус: Участник

Создано: 24 мая 2014 03:06
· Личное сообщение · #6

Огромное спасибо всем за помощь!
Cup386 я пробовал и раньше, но моей ошибкой было то, что делал это я на dosbox. На определении Entry Point всё зависало. Теперь почитав советы, я поставил дос на реальную машину и cup386 всё распаковал!
Файл получился 57711 байт и сохранился оверлей кажется, IDA по крайней мере ругается.
Кстати файлик работает теперь и без ключа (до первой ошибки с ним не связанной). Как будет далее, узнаю на днях, когда установлю реальный рабочий образ со всем необходимым включая системную карту на его родную машину...
Прошу тему пока не закрывать, возможно будут вопросы по дальнейшей отладке.



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

Создано: 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 байт, скорей всего это от защиты, не похоже что там код, в принципе можешь попробовать отрезать...




Ранг: 450.3 (мудрец), 13thx
Активность: 0.20
Статус: Участник

Создано: 24 мая 2014 14:59
· Личное сообщение · #8

saffers у меня скорее всего всё ограничится правкой jz на jmp
В смысле есть основания предполагать, что обойдя одно сообщение об ошибке далее всё будет работать как нужно. Точно проверю только на оригинальном железе, надеюсь на днях.


 eXeL@B —› Протекторы —› Распаковка DOS программы, нужна помощь.
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


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