> Нужно сломать защиту на досовской проге. > Набросайте, плиз, какие у них есть варианты защиты. > Если вынуть винт и вставить его в другой аналогичный комп - > прога не работает. Скорее всего прога привязывается к серийному номеру диска (или какой-то уникальной информации, что маловероятно). Я бы попробовал пройти дебуггером и поискать, где она переназначает int3 и int1 (а также 8, 9, 21) для начала. Аккуратно отслеживай вершину стека.
Если не получится, присылай мне, посмотрю сам и дам рекомендации.
crypto2001@hotmail.ru
Нужно сломать защиту на досовской проге.
Набросайте, плиз, какие у них есть варианты защиты.
Прога поставлялась на компе со спец платой (медицинский комплекс), но и без этой спец-платы функциональность проги приемлема (то есть она работает).
Если вынуть винт и вставить его в другой аналогичный комп - прога не работает.
Огромное спасибо ukv06.01.04 03:42 Автор: ReLinX Статус: Незарегистрированный пользователь
Похоже нашел, как заставить прогу запуститься, но привязки пока еще не обнаружил (тягомотина)26.12.03 18:29 Автор: SL Статус: Незарегистрированный пользователь
Если это досовский Clarion, то в файле скорее всего есть и номер версии. По крайней мере в тех, что я когда-то делал, проставлено Version 2.1 Release 218A.
Точно сейчас уже не помню, но вроде один раз какой-то глюк вылавливал трассировкой под td386.
Выложить / замылить exe нельзя?
Version 2.1 Release 2105. Могу намылить idb26.12.03 17:19 Автор: SL Статус: Незарегистрированный пользователь
Лучше все, если mail.ru выдержит. И желателно до 19-00, иначе только в понедельник. Гарантий не даю, но посмотрю обязательно (насколько терпения хватит).
ukv1@mail.ru
Без дебуга все-таки не обойтись25.12.03 17:33 Автор: SL Статус: Незарегистрированный пользователь
Программа весьма запутана - блоки кода, после каждого из которых идет jmp, который в зависимости от результатов работы блока может на самом деле не сработать, а проигнорироваться. Так называемый "фарш". Придется аккуратно идти дебугом пока не вывалишься. А это займет определенное время. Но картинка загрузки БД появляется.
Идея следующая - нужен небольшой help24.12.03 16:31 Автор: SL Статус: Незарегистрированный пользователь
Прога с оверлеями. Все оверлеи и reloc лежат в файле. Вся проверка ес-но в одном из них. Сегменты, в которые грузятся оверлейные модули, виртуальные. Я могу руками patch core в IDA - но строчки там короткие - всего 16 байт можно ввести. Кстати, проблема актуальная - как подпачить в IDA программу с конкретного адреса из бинарного файла? Версия IDA 4.04. Может более старшие версии это позволяют?
Можно скрипт на IDC написать.
24.12.03 17:10 Автор: :-) <:-)> Статус: Elderman
1. Насчет оверлея - это когда образ заменяется в памяти другим образом ?
А другие образы они что из себя представляют (расширение исполняемых файлов какое) ?
Загрузка происходит через ax=4b03 int 21h ?
Что такое виртуальные сегменты ?
2. Досовский софт-айс 2.80 он по размеру около 0,5 мегов ?
Его под эмуляцией доса в винде 98 запустить можно - прописать в config.sys device= адрес к софт айсу. А то я так сделал - у меня при загрузке намертво софт-айс стал грузиться (без возможности выхода из него - там вроде ошибка работы с памятью какая-то выскакивает)
3. В винде обращение из v86 к адресу 0хffff5 айсом не фиксируется (имеется в виду данная прога). Фиксируется из proc 32 - но это для всех загружаемых досовских программ (считывется 0х400 слов вроде).
По поводу оверлея ...- ответы25.12.03 11:08 Автор: SL Статус: Незарегистрированный пользователь
> 1. Насчет оверлея - это когда образ заменяется в памяти > другим образом ? > А другие образы они что из себя представляют (расширение > исполняемых файлов какое) ? > Загрузка происходит через ax=4b03 int 21h ? > Что такое виртуальные сегменты ? > Большая часть сегментов программы заполняется данными из самой программы, но приаттаченных в конце - оверлеи в самом файле. Механизм загрузки прозрачен - обычное чтение данных из файла, без всякой распоковки. Местонахождение relocations тоже известно.
> 2. Досовский софт-айс 2.80 он по размеру около 0,5 мегов ? > Его под эмуляцией доса в винде 98 запустить можно - > прописать в config.sys device= адрес к софт айсу. А то я > так сделал - у меня при загрузке намертво софт-айс стал > грузиться (без возможности выхода из него - там вроде > ошибка работы с памятью какая-то выскакивает) > > 3. В винде обращение из v86 к адресу 0хffff5 айсом не > фиксируется. Фиксируется из proc 32 - но это для всех > загружаемых досовских программ (считывется 0х400 слов > вроде).
Чтобы успешно продебужить твою прогу, ее надо предварительно пропустить через IDA - дебуг после этого вообще может не понадобится.
Идея насчет скрипта мне понравилась - посмотрю, что и как...
Механизм работы с оверлеями зависит от проги. В компиляторах...25.12.03 09:56 Автор: :-) <:-)> Статус: Elderman Отредактировано 25.12.03 09:59 Количество правок: 2
> 1. Насчет оверлея - это когда образ заменяется в памяти > другим образом ? > А другие образы они что из себя представляют (расширение > исполняемых файлов какое) ? > Загрузка происходит через ax=4b03 int 21h ? > Что такое виртуальные сегменты ?
Механизм работы с оверлеями зависит от проги. В компиляторах от Borland/MS для этого использовался int 3Fh. Оверлеи могут размещаться все в одном файле, например в конце .exe-шника.
> 2. Досовский софт-айс 2.80 он по размеру около 0,5 мегов ? > Его под эмуляцией доса в винде 98 запустить можно - > прописать в config.sys device= адрес к софт айсу. А то я > так сделал - у меня при загрузке намертво софт-айс стал > грузиться (без возможности выхода из него - там вроде > ошибка работы с памятью какая-то выскакивает)
Точно уже не помню, сколько он занимает. Но 0,5 мегов для него вполне нормально. Насколько я помню, грузить его надо в чистой системе (без himem.sys и emm386.exe). Или строго до/после himem.sys (в readme к нему должно быть написано).
> 3. В винде обращение из v86 к адресу 0хffff5 айсом не > фиксируется. Фиксируется из proc 32 - но это для всех > загружаемых досовских программ (считывется 0х400 слов > вроде).
Гм... Попробуй из-под ДОС bpx F000:FFF5
Я Поставил винду98, soft-ice 3.25 win98, IDA 4.
23.12.03 01:03 Автор: ReLinX Статус: Незарегистрированный пользователь
Я Поставил винду98, soft-ice 3.25 win98, IDA 4.
С помощью IDA посмотрел in, out, ins, outs - 70,71 - обращения к bios - нет там таких
С помощью айса поймать эти обращения не получается - винда сама постоянно обращается к этим портам - это можно как решить ?
Как еще может происходить обращение к bios ?
Программа перехватывает 21 вектор - в этом может быть какой-то смысл ?
Какие еще функции проконтролировать ?
Что это за функции
ax=71xx
int 21h
их даже софт-айс не комментирует ?
2 Yurii
> Попробуй поставить бряк на ffff:0005, вдруг поможет :)) А что это такое ?
Я Поставил винду98, soft-ice 3.25 win98, IDA 4.23.12.03 14:33 Автор: :-) <:-)> Статус: Elderman
> Я Поставил винду98, soft-ice 3.25 win98, IDA 4. > С помощью IDA посмотрел in, out, ins, outs - 70,71 - > обращения к bios - нет там таких > С помощью айса поймать эти обращения не получается - винда > сама постоянно обращается к этим портам - это можно как > решить ?
Поставь Soft-ICE 2.80 for DOS - левых срабатываний брякпойнтов точно не будет.
> Как еще может происходить обращение к bios ?
Если прога прявязывается к типу винта, то скорее всего вызывает Int 13h и запомнивает кол-во цилиндров/секторов/головок. Хотя может все это делать через порты.
> Программа перехватывает 21 вектор - в этом может быть > какой-то смысл ? > Какие еще функции проконтролировать ? > Что это за функции > ax=71xx > int 21h
Это функции ДОС 7.0+ для работы с длинными именами.
Хотя если прога перехватывает INT 21h, она может их обрабатывать по своему (если проага написана раньше, чем ДОС 7.0, то так оно и есть).
> их даже софт-айс не комментирует ? > > 2 Yurii > > Попробуй поставить бряк на ffff:0005, вдруг поможет > :)) То же самое, что и F000:FFF5, только сбоку. По этому адресу находится дата изготовления BIOS, скорее всего прога привязывается к ней (либо она может рассчитывать CRC всей BIOS [адреса F000:0 - F000:FFFF], это от фанатазии атора зависит).
> С помощью IDA посмотрел in, out, ins, outs - 70,71 - > обращения к bios - нет там таких
Порты 70 и 71 позволяют работать с CMOSом, а не с БИОСом.
> С помощью айса поймать эти обращения не получается - винда > сама постоянно обращается к этим портам - это можно как > решить ?
Вероятно в виндозном s-ice можно бряки только для указанного процесса ставить, но точно утверждать не могу -- маловато у меня опыта дебага под виндами.
> Как еще может происходить обращение к bios ?
БИОС живет в памяти, в сегменте F000.
> > Попробуй поставить бряк на ffff:0005, вдруг поможет > :)) > А что это такое ?
бряк -- breakpoint (в s-ice командой bpm)
Скорее всего прога привязывается к серийному номеру диска...22.12.03 15:42 Автор: SL Статус: Незарегистрированный пользователь
> Нужно сломать защиту на досовской проге. > Набросайте, плиз, какие у них есть варианты защиты. > Если вынуть винт и вставить его в другой аналогичный комп - > прога не работает. Скорее всего прога привязывается к серийному номеру диска (или какой-то уникальной информации, что маловероятно). Я бы попробовал пройти дебуггером и поискать, где она переназначает int3 и int1 (а также 8, 9, 21) для начала. Аккуратно отслеживай вершину стека.
Если не получится, присылай мне, посмотрю сам и дам рекомендации.
crypto2001@hotmail.ru