День добрый! Вопрос касательно защиты StarForce - на руках есть оригинальный диск (не игра - электронный архив одного журнала), защищённый StarForce'ом. Так вот, нет ли здесь специалиста, способного помочь вопрос с распаковкой данных? В интернете есть множество информации, как скопировать такой защищённый диск или запустить его с эмулятора (которые, кстати с SF 3.7.11 почему-то не работают). Однако это не решает проблему доставания данных. Дело в том, что архив сделан с использованием жутко тормозящей оболочки, которая показывает DJVU файлы. Однако открыть эти файлы в каком-либо другом просмотрщике не получается, так как они находятся в зашифрованном виде...
Архив - на DVD, и насколько я понимаю, 2,5 гигабайта данных в память разом не подгружаются. Они скорее на лету распаковываются старфорсовским драйвером. Плюс ко всему я не являюсь профессиональным пользователем специального ПО для снятия дампов памяти/дизассемблирования и т.п. - чукча не писатель, чукча читатель ( Могу только сказать, что на диске находятся файлы part1.dat и part2.dat, первые четыре байта которых - SFFS - наверное сигнатура "StarForce File System"...
Скорее всего просто грузят файлы с виртуальной файловой системы в память, там дешифруют (а может даже и дешифровать не надо) и после этого отображают. Если это стандартный DJVU, есть вероятность, что их можно найти по стандартному DJVU'шному заголовку и прямо из памяти сдампить. Хотя и нудный это процесс - если руками делать. Как вариант для простого юзера - средствО автоматизации (чтобы странички скроллить)+тулзу для автоматического снятия скриншотов с окна+прогу для сборки панорам (хех, а аффтары, наверное, даже и не догадываются, КАКИЕ панорамы можно при желании собирать)+распознавалку текста. Если такой путь подходит - попробуй прежде всего SnagIt, там есть автоматическое снятие полного скрина скроллируемого окна (хотя и кривенько оно сделано - но иногда лучше так, чем никак).
Ставь хук на CreateFile, перехватывай хендлы и читай контент (правда с новыми версиями откровенно размер через GetFileSize не получишь, но SetFilePointer на начало и читай в бОльший буфер - а потом проверь сколько считалось). Это справедливо, если ты имеешь дело с sffs. Если это аналог оверлея (как в Protect.dll в играх) - смотри последние 8 байт (28 бит под размер, 4 старших под ID) - первые 4 байт из восьми - пакованый размер, вторые - распакованый (так было и вроде осталось без изменений). СФ имеет драйвер-фильтр который обрабатывает сам IRP и дальше не передает - но для программы он должен оставаться прозрачным, поэтому ты можешь скопировать контент в память через ReadFile или через CreateFileMapping. Или просто открытые хендлы процесса юзай.
Хотя если ты говоришь про 2.5 гига - точно не оверлей Тогда с хендлами видимо удобнее будет или с маппингом
CyberManiac Копировать через буфер обмена смысла не имеет. Потому как DJVU уже является сжатым файлом и повторное пережатие только ухудшит качество. Это как предложение снять защиту с DRM WMA через захват с колонок и пережатие в MP3. Не говоря о том, что это бешенная по своим объёмам работа. - 40 лет по 12 номеров, по 80 страниц - почти 40000 страниц. По поводу перехватов и тому подобного - это всё здорово, но кто-нибудь из вас пытался снять StarForce? И не в том смысле, что отвязать от диска или сделать копию, а именно снять, то есть получить диск с исходным содержимым - незашифрованными файлами данных и exe/dll? Судя по статьям о SF, разработчики защиты не лохи и используют множество анти-... техник. И я, повторюсь ещё раз не являюсь кракером/хакером и т.п. Так что советы куда повесить хук - это пустой разговор... Максимум, что я могу сделать - социальная инженерия. ) Но это не про компы. Реальная помощь - если кто знает об утилите, расшифровывающей пакет с данными (SFFS)...
Да, кстати, получить дамп с сигнатурами DJVU не выйдет, т.к просмотрщик, что защищён SF, в свою очередь имеет собственный контейнер, где и хранятся djvu файлы - "электронную книгу" проприетарного формата (*.box файл). Правда на сайте разработчика выложена в свободный доступ демо версия проги, создающей эти box-файлы и тестовый архив. Прога эта жутко глючная и без возможности экстракции файлов из своего архива. Но, по-видимому, практически не защищённая (CCT Archive Manager). И из неё можно вытащить код распаковщика. Опять же говорю только теоретически, т.к. сам необходимой квалификацией для подобных действий не обладаю. (
я сомневаюсь что возможен универсальный распаковщик SFFS, ключ шифрования скорее всего генерится для каждого приложения свой, формат может отличатся в разных версия защиты. Наиболее реальный вариант вытащить данные - внедрить свой код в запущенную программу который будет использовать теже функции для открытия и чтения файлов, которые использует программа. Надо только определить имена файлов которые содержатся в контейнере и их длину, поскольку попытка чтения за пределами файла скорее всего рассматривается как попытка взлома защиты
Может это как-то облегчит работу - вчера вышедшая новая версия Daemon Tools успешно подцепляет образ диска и обходит-таки SF 3.7 (с отключением CD/DVD, но обходит). Так что, всем заинтересовавшимся могу передать на исследование необходимые материалы. Вот только при установке Daemon Tools пишет, что не совместим с Soft ICE и другими дебагерами. Хм...
А если судить по другим статьям - СФ это дыра на дыре (взять хотя бы оставляемые в системе драйвера, дающие доступ кому угодно в ядро и т.д, RPC и прочее) - они полные лохи, не думающие, что кроме них и их защиты есть еще пользователи компов. При каждой проверке диска время системы отстает на 20 сек. Если запускать несколько раз на рабочей станции в составе домена - при расхождении времени домен не пустит и все - и это называется "используют много анти техник"? Основная антитехника - антипользователь.
SFFS - это, скорее всего, single file file-system. Если спросить у гугля, он по этому вопросу много чего выдает. Однако сабж остается.
Хм, незнаю как насчет СФ 3.7 но в СФ 3.4 небыло никаких SFFS. Даные были как-то шифрованы и это решалось или загрузкой Длл или CreateRemoteThread где делалось CreateFile(crypted); GetFileSize(); ReadFile(crypted); .... после чего в буффере был полностью расшифрованый файл. PS: DT 4.0 справляется с СФ 3.6 (только при физическом отключении сдрома) 3.7 не видел :/
А нельзя скинуть файлик, который бы все это делал? Так как второй чукча тоже не читатель, от писатель. Был бы о-о-о-чень благодарен.