Сейчас на форуме: Magister Yoda, site-pro, Rio (+6 невидимых)

 eXeL@B —› Крэки, обсуждения —› Помогите обойти защиту DOS-программы (286) для использования под эмулятором
<< . 1 . 2 . 3 . >>
Посл.ответ Сообщение

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

Создано: 06 сентября 2013 14:30 · Поправил: Diversant
· Личное сообщение · #1

Добрый день, форумчане!
Имеется программа, написанная по всей видимости в Turbo Basic.
Исходников не имеется. Есть только .exe-файл.
Запуск её возможен только на родном 286-железе. Понятное дело компьютер тот вот-вот отойдёт в мир иной.
Прога умышленно привязана была к компу, то бишь к физическому железу. К чему конкретно - неизвестно.
На оригинальном железе она живёт под DOS 5.0.

На скрине из Insight есть вызов неких функций call 1A58.
Вот на нем предположительно происходит что-то непонятное.
Предположительно собака зарыта в CXEMA1.OVL, если этот .OVL подменить другим, то ресета не происходит, но прога естественно грузит подпрограмму, заложенную в подсунутый .OVL.

Что показывает Insight:


Кусок кода в IDA:


На всякий случай скрин из дебаггера DosBox:


Ну и сама прога:
--> Link <--



Ранг: 72.1 (постоянный), 30thx
Активность: 0.050
Статус: Участник

Создано: 08 сентября 2013 00:15
· Личное сообщение · #2

Diversant пишет:
А какие признаки? Во всех эмулях - ресет.

Простите, вы под ЧИСТЫМ досом пробовали запускать? При чем тут какие-то эмуляторы и образы дисков, что за бред?



Ранг: 10.2 (новичок), 4thx
Активность: 0.020
Статус: Участник

Создано: 08 сентября 2013 00:34
· Личное сообщение · #3

У меня в одном муле если под CGA запускаю пишет Error 5 at pgm-ctr: 1867 , а если под VGA с неполнoй поддержкой загрузки фонтов, то на черном фоне выводит какой-то прямоугольник (предположительно меню какое-то), но не ресетит.



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

Создано: 08 сентября 2013 02:38 · Поправил: dosprog
· Личное сообщение · #4

connect6,

>>выводит какой-то прямоугольник (предположительно меню какое-то), но не ресетит.

Это и есть зависание. Справа от прямоугольника должно быть меню, но его нет.
Такая картина в WinXP DOS-BOX'e.
(Пару раз ещё было в заголовке "З А Г Р У З К А" - поэтому, думаю, тут обычный глюк).
В чистой DOS7 при этом происходит перезагрузка машины.
(Не по jmp ffff:0000 и не по int19h).



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

Создано: 08 сентября 2013 03:24
· Личное сообщение · #5

dosprog пишет:
Что дальше: я бы посоветовал найти машину с конфигурацией, аналогичной той, где эта программа успешно работает, и, просто скопировав программу туда, попытаться запустить её. Вот если и в таком случае она работать не станет, только тогда уже имеет смысл говорить о защите и привязке к машине.(И я бы не спешил с имиджем диска, это может оказаться зря).


По всем перечисленным пунктам всё отлично расписано, спасибо. Но.. кхм.. мягко говоря в 21м веке где можно найти "Конфигурацию, аналогичную той"? Вот, например даже под столом у меня 486 валяется. Но я думаю это даже несколько проще найти. С другой стороны на десктопе у меня даже флопповод не пашет и это как раз представляет проблему относительно копирования файлов на 486.



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

Создано: 08 сентября 2013 03:34
· Личное сообщение · #6

Да, 286 - это проблема.
Нужно залить эту прогу на какой-нибудь downgrade-сайт с просьбой к тамошним обитателям протестировать её на реальной 286 под реальной DOS5.
А дальше делать выводы.
У меня 286 сдохла лет 10 назад...
486 имеется, но почему-то я не уверен, что это имеет смысл... Хотя... Посмотрим.



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

Создано: 08 сентября 2013 03:50
· Личное сообщение · #7

Да вот на 486 копирнуть это проблема. Реально ли как-то "восстановить" тогда? особенно если это баг.
Есть рекомендации по подобным downgrade-сайтам, где могут встретиться живые люди?



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

Создано: 08 сентября 2013 03:58
· Личное сообщение · #8

--> downgrade.ws <--



Ранг: 10.2 (новичок), 4thx
Активность: 0.020
Статус: Участник

Создано: 08 сентября 2013 04:26 · Поправил: connect6
· Личное сообщение · #9

Diversant пишет:
Есть рекомендации по подобным downgrade-сайтам, где могут встретиться живые люди?

--> Link <--



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

Создано: 09 сентября 2013 03:16 · Поправил: dosprog
· Личное сообщение · #10

Diversant,
вот каталог файлов в архиве CXEMA.ZIP:

Имя файла Размер
-------------- ---------
CXEMA.EXE 166214
CXEMA.FNT 4905
CXEMA.LIB 10683
CXEMA1.LIB 18903
CXEMA1.OVL 62214
CXEMA2.OVL 4096 <---этот файл явно повреждён (обрезан)
CXEMA3.OVL 85227
CXEMA4.OVL 46266
CXEMA5.OVL 76910
CXEMA6.OVL 13601

Файл CXEMA2.OVL - это оверлей, отвечающий за пункт меню "ТЕКСТ". Файл аккуратно обрезан по адресу 1000h.
На самом деле он должен быть значительно больше, в конце у него дожны находиться строки и их индекс.
Впрочем, при рассматриваемом глюке этот оверлей, похоже, не загружается, но возможно всякое.

Уточните, пожалуйста, на той машине, где у вас работает эта программа, размер КАЖДОГО из этих файлов.
А также посмотрите, не болтается ли там где-нибудь файл CXEMA.HLP (хотя он, скорее всего, и не нужен).
(Очевидная вещь, но запустите перед копированием CHKDSK.EXE для проверки файловой системы).

На 486 + DOS v.5.0 ситуация при запуске абсолютно такая же, как и в остальных случаях.

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

Ранг: 10.2 (новичок), 4thx
Активность: 0.020
Статус: Участник

Создано: 09 сентября 2013 04:18 · Поправил: connect6
· Личное сообщение · #11

dosprog пишет:
Уточните, пожалуйста, на той машине, где у вас работает эта программа


--> Link <--

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

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

Создано: 09 сентября 2013 08:20
· Личное сообщение · #12

connect6 пишет:
Думаю у него тоже не работает и автор разводит всех, посмотрев и на его сообщения здесь


В каком смысле "разводит"? На реальном 286 работает. В том то и проблема. Возможно из-за этого и возникли подозрения что стоит некая защита. А может и правда глюк.
А что я могу сказать насчёт того, что прога не запустилась у человека на 386? Вот уж не знаю.

Хммм.. пожалуй тогда может сделаю видос с фотика. Чем уж тогда ещё доказать?
Насчёт клонирования дисков и т.д. - реально не тянет копаться в его нутрянке. Поскольку уже не хочется его без лишний надобности даже включать.

Скажем, например, даже если я сниму образ Partition Magic-ом, то проблемно будет скидывать на современные компы.



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

Создано: 09 сентября 2013 10:45
· Личное сообщение · #13

dosprog пишет:
Уточните, пожалуйста, на той машине, где у вас работает эта программа, размер КАЖДОГО из этих файлов.А также посмотрите, не болтается ли там где-нибудь файл CXEMA.HLP (хотя он, скорее всего, и не нужен).(Очевидная вещь, но запустите перед копированием CHKDSK.EXE для проверки файловой системы).На 486 + DOS v.5.0 ситуация при запуске абсолютно такая же, как и в остальных случаях.


Перепроверил все перечисленные файлы. Размеры совпадают. Насчёт CHKDSK.EXE - времена другие, но ещё в пятницу прогонял диск NDD. Возникло подозрение что винч сыпется уже бэдами. Собственно из-за чего и тихая паника что компу вот-вот настанет "карачун".

Поскольку были высказаны сомнения в том что программа вообще способна запускаться, то выкладываю видео запуска программы из директории где расположена копия и перепроверены указанные файлы по размеру.

--> Link <--



Ранг: 72.1 (постоянный), 30thx
Активность: 0.050
Статус: Участник

Создано: 09 сентября 2013 11:14
· Личное сообщение · #14

Diversant пишет:
Поскольку уже не хочется его без лишний надобности даже включать.

Дорогой сэр, вы даже пофайлово его скопировать нормально не удосужились, а хотелку отрастили ого-го.
Скопируйте уже все файлы НОРМАЛЬНО!
вам тут уже писали:
dosprog пишет:
Файл CXEMA2.OVL - это оверлей, отвечающий за пункт меню "ТЕКСТ". Файл аккуратно обрезан по адресу 1000h.

Потому все и падает на виртуалках.



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

Создано: 09 сентября 2013 11:30
· Личное сообщение · #15

yagello
При чём тут хотелка? Файлы, кстати говоря, были скопированы мной лично с того компа ещё весной через COM-порт. Сегодня я размеры их перепроверил только что. Именно из той директории, что на видео.
Или тут уже верить в то что в процессе их копирования на современные компы "биты искривились", как в одном давнем рассказе про "Нашего BOFH"?

В конце концов я даже только что перепроверил файлы, скопированные посредством дискеты на комп неделю назад (когда трудности возникли с использованием проги на родном железе, но это оффтоп) с архивом, созданным по весне.
Сравнил в Beyond Compare. упомянутые файлы различий не имеют.




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

Создано: 09 сентября 2013 14:01 · Поправил: dosprog
· Личное сообщение · #16

Diversant,
не обижайтесь, пожалуйста.
Видео вполне убедительное.
Почему я предложил прежде отыскать 286 и сомневался насчёт 486 (что подтвердилось) -
так это потому, что у 486 реакция на особые случаи выполнения программы уже аналогична современным процессорам.
Не то 286. В нём есть несколько подлых штучек, которые прекрасно работают на нём жё,
но категорически не прокатывают на 386+. Например, инструкции <lock> без обращения к памяти
или явление "заворачивания" сегмента, когда младший байт 2-байтного слова находится по адресу seg:FFFFh, а старший - по адресу seg:0000h. И то и другое работает на 286, но вызывает исключение на 386+ , а уж обработчик исключения передаёт управление на адрес FFFF:0000, что вызывает перезагрузку в реальном режиме или мёртвое зависание <hlt,jmp $-2> в DOS-окне Windows XP. В Win98 - такое окно тут же закрывается, что сходно с реальным режимом. Именно это и происходит с рассматриваемой программой. Если она отработает на "посторонней" 286, то станет ясно хотя бы что искать (И это будет практически безнадёжный вариант).
И кстати, этих тяжёлых ошибок генерируется в модуле cxema1.ovl минимум две, да немеряно тех, которые обрабатываются басиковой RTL и не приводят к зависанию, а только к аварийному завершению программы.
Думаю, так...



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

Создано: 09 сентября 2013 14:17
· Личное сообщение · #17

dosprog пишет:
не обижайтесь, пожалуйста.Видео вполне убедительное.

Ничего страшного. К Вам лично претензий не имею, даже наоборот благодарен за уделённое вопросу внимание.

На всякий случай скину ссылку (хотя выше уже была на тот форум), человек и на 286 пытался (как я понял) запустить. К сожалению программа не взлетела.

--> Link <--



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

Создано: 09 сентября 2013 14:32 · Поправил: dosprog
· Личное сообщение · #18

)) А я как раз только оттуда и хотел уже править свой предыдущий коммент.
Хорошо, что удалось отбросить вариант с "посторонней" 286.
Выберу время - посмотрю, что там может быть ещё.
Сразу скажу, что в привязку к секторам на диске я не верю - такая привязка слетает при первой же дефрагментации
и требует повторной привязки, а у вас этого, судя по всему, не наблюдалось.



Ранг: 10.2 (новичок), 4thx
Активность: 0.020
Статус: Участник

Создано: 09 сентября 2013 14:39 · Поправил: connect6
· Личное сообщение · #19

Тогда хорошо порпробовать запустить программу с дискету, заранее выключив винт либо в setup-e, либо выключив его шлейф-кабель. Если прога запустится, то образ диска не будет нужен.

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

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

Создано: 09 сентября 2013 15:22 · Поправил: dosprog
· Личное сообщение · #20

connect6,
естественно. С этой же загрузочной дискеты загрузить и систему.

Следующий ход при неудаче (если программа нормально отработает с дискеты)
-- снятие дампа отработавшей нормально программы и выкладывание его сюда в виде атача (запакованный, он не превысит 500Кб лимит).

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

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

Создано: 09 сентября 2013 15:52 · Поправил: Diversant
· Личное сообщение · #21

dosprog пишет:
Следующий ход при неудаче (если программа нормально отработает с дискеты)-- снятие дампа отработавшей нормально программы и выкладывание его сюда в виде атача (запакованный, он не превысит 500Кб лимит).


Встречный вопрос - чем снимать дамп, загрузившись с дискеты? Верно ли я предполагаю что может не хватить места на ней для записи дампа? И уж больно ненадёжный способ - писать на дискету, но тут, видимо, другого выхода не будет.

UPD загрузиться с дискеты не удалось. Проблема в том что древний БИОС не даёт поставить 3" флопповод как A:, а грузиться с B: не хочет. Вроде и ставлю как А: - не срабатывает. Помню, когда был мелкий, и у меня жил 386sx16, была такая проблема.




Ранг: 1053.6 (!!!!), 1078thx
Активность: 1.060.81
Статус: Участник

Создано: 09 сентября 2013 16:00
· Личное сообщение · #22

дамп дискеты, а он больше полуторы мегабайт не будет,
но самое главное что бы прога запустилась полностью с дискеты
можете для чистоты експеримента даже винт отключить



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

Создано: 09 сентября 2013 16:02 · Поправил: Diversant
· Личное сообщение · #23

Именно винч и отключал, без винча не загрузиться, а дальше нет никаких гарантий что прога не опросит его.




Ранг: 1053.6 (!!!!), 1078thx
Активность: 1.060.81
Статус: Участник

Создано: 09 сентября 2013 16:08
· Личное сообщение · #24

сделать загрузчную дискету + прогу и загрузится без винта на том же pc - почему нельзя?



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

Создано: 09 сентября 2013 16:15
· Личное сообщение · #25

Старый БИОС, они достаточно капризны были в загрузке. Но.. тут свежие новости!
По ходу дела прога видимо к БИОСу и привязана!

--> Link <--



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

Создано: 09 сентября 2013 16:52 · Поправил: dosprog
· Личное сообщение · #26

)) С чем вас и поздравляю.

)))хотя... Хотя. На минуточку предположил, что этот Tronix просто решил поприкалываться и выложил скриншот, который получен после подмены оверлеев.

Короче, полагаю, нужно сделать две вещи:
1)
На родной машине загрузиться с 1.2Мб дискеты с отключенным HDD и запустить прогу оттуда.
Если она отработает нормально (нет привязки к HDD), тогда:
2)
Запустить её с HDD и при *работе*главного*меню* сдампить всю conventional память (1Мб)
Этот файл запаковать и на всеобщее обозрение плиз.



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

Создано: 09 сентября 2013 19:48 · Поправил: Tronix
· Личное сообщение · #27

dosprog Делать мне нечего как фейками заниматься. Не на ксекапе все-таки, да и лет уже не 16

Кому хочется поглазеть на чудо-прогу в действии, собрал уже настроенный комплект: --> Link <-- Запускать PCem.exe, далее грузится ДОС с dos5_0.img. В autoexec впихнул mouse.com (ибо прога без него ругается на отсутствие мыши) и cyrillic.com (руссификатор, а то иероглифы фигово читаются). Как дос прогружается вводим cxema и нажимаем ENTER -)))

Эмуль - PCem. Домашняя страница: --> Link <-- , сорцы посвежее: --> Link <-- Я из последних сорцов собирал, ggc 4.8.1.

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

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

Создано: 09 сентября 2013 20:58
· Личное сообщение · #28

Tronix,
в таком случае прошу извинить за предположение.




Ранг: 1053.6 (!!!!), 1078thx
Активность: 1.060.81
Статус: Участник

Создано: 09 сентября 2013 20:59
· Личное сообщение · #29

на васме уже и привязку к биосу нашли,
надо же у когото хватило времени ))



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

Создано: 09 сентября 2013 21:07 · Поправил: dosprog
· Личное сообщение · #30

) Да, вот только с работы вернулся, думал поковыряюсь, ан нет.

ооопс - на <Полигоне призраков>:

>>Пропатчил 74 -> EB по смещению 0xA5AF в cxema1.ovl - запустилась и под XP. diamond - молодец!

-- Это я пропатчил ещё в поза-вчера. И ещё многое. Только после этого программа не стала зависать, а стала тихо завершаться.
Об этом я писАл ранее. Ничего не поменялось - программа не работает.
Пропатчено не то место, что нужно.

А вот на васме - молодцы, то, что надо. Сделали привязчик к дате биоса, сохраняющий данные в файле CXEMA.FNT.
Ну, пусть и здесь этот окончательный архив сохранится:
(Но файл cxema2.ovl здесь повреждён, текст не вставляется, а программа аварийно завершается)

5482_09.09.2013_EXELAB.rU.tgz - CXEMA_OK.RAR



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

Создано: 10 сентября 2013 08:00
· Личное сообщение · #31

Всем спасибо! diamond-у отдельное огромное! Всё пашет!


<< . 1 . 2 . 3 . >>
 eXeL@B —› Крэки, обсуждения —› Помогите обойти защиту DOS-программы (286) для использования под эмулятором
Эта тема закрыта. Ответы больше не принимаются.
   Для печати Для печати