Сейчас на форуме: asfa, bartolomeo, hgdagon (+6 невидимых)

 eXeL@B —› Программирование —› Крайне необычный формат файлов - печальная история, прошу о помощи: пропадает долгий труд.
Посл.ответ Сообщение

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

Создано: 23 февраля 2006 13:58 · Поправил: Bak
· Личное сообщение · #1

Данный пост напрямую относится к теме "Взлом программ, снятие защиты", однако очень персонален и содержит описание моих долгих экспериментов. Поэтому пишу в этот подфорум. Тем более что для взлома в моем случае требуется не взлом как таковой, а написание вспомогательной утилитки. Бывают короткие посты, а этот - очень длинный. Потому что хочу максимально точно изложить свою проблему. Вкратце: для взлома защиты на одной игре требуется написать запаковщик файлов в один экзотический формат, имеется только распаковщик без исходников и примерное описание форматов.

Господа! Вы - моя последняя надежда. Гибнет четверо суток напряженного труда и надежды многих геймеров. Решил сюда написать, т.к. мой вопрос напрямую имеет отношение к взлому защиты. В данном случае - на злосчастной русской лицензии всенародно любимой стратегии Armies of Exigo.

Моя задача - сделать русификатор на английскую Armies of Exigo и отвязку от диска на русскую лицензию от "Нового Диска", оба вопроса упираются в одну и ту же заподлянку.

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

Как все начиналось (преамбула)

Имелся крек на английскую Armies of Exigo версии 1.4. Крек состоял из вылеченных Exigo.exe и Editor.exe. Работать на русской лицензии отказался - вылезала ошибка fesl.dll. Господа из "Нового Диска" зашили эту библиотеку внутрь protect.dll. Решение было найдено незамедлительно: fesl.dll был взят от английской игры версии 1.4, длл-ка следовательно идеально подошла к взломанному английскому .ехе. Запустил. Удивился - игра запустилась на английском и без звука. Немного поковырялся с пираткой и выяснил, что в версии от Нового Диска отсутвтует пара важных ключей реестра - Language и Locale, хотя в пиратке они присутствовали. Добавил эти ключи. Открыл потом в редакторе взломанный Exigo.exe и принялся долго и упорно читать его, как газету. Где-то на половине чтения наткнулся на открытый текст вида english {409}, german {407}. Ба! Да игра похоже использует Microsoft XML! Стал читать .ехе дальше и нашел ключи локализации: en_US, en_UK и все в том же духе. Нашел и ru-RU. Пошел в реестр, изменил Language с 409 на 419 (русский в классификации XML), Locale с en_US на ru-RU. Запустил игру.

О чудо, оно запустилось без диска - на русском и со всеми звуками. Только вместо буковок - квадратики. Первая мысль была: английский .exe накосячил с выбором кодировки. Пошел в .exe, нашел там ссылки на некие внутриигровые ресурсы типа fonts_unicode_eng.xml, fonts_unicode_eur.xml, fonts_unicode_hpc.xml. Они оказались зашитыми в игровой архив data.ork. Поменял внутри .ехе "fonts_unicode_eng.xml" на "fonts_unicode_hpc.xml" (в стандарт HPC имхо и кириллица включена), запустил игру. Длина .ехе не изменилась, все заработало. Получил те же квадратики, только уже перечеркнутые. А именно взятые из другого шрифта. Поменял внутри .ехе на "fonts_unicode_eur.xml". Снова квадратики, только опять же из другого шрифта

В душу стали закрадываться смутные подозрения. XML использует кодировку Unicode для ВСЕХ языков, стало быть неправильно выбрать кодировку .ехе не мог, т.к. она одна-единственная. Вышеперечисленные .xml файлы похоже просто задают какие шрифты грузятся игрой для разных языков. И у всех этих шрифтов, похоже, отсутствует кириллица, - подумал я.

Родилась идея: расковырять data.ork, найти там имя кириллической таблицы от Нового Диска и засунуть его в .ехе. Если таблица самостоятельно задает пути и спецификации шрифтов, то все должно заработать.

Нашел описание формата .ork и ахнул.

Файлы формата .ork представляют собой склеенные между собой цепочки файлов, упакованных по алгоритму ZIP. Все файлы зашифрованы, в качестве пароля на каждый файл использовано его имя + путь до этого файла внутри игрового архива. Например файл внутри игрового архива defaultprofile\config.con зашифрован по паролю "defaultprofile\config.con". При запуске игры она в оперативной памяти воссоздает всю виртуальную структуру папок игрового архива и лежащих в нём файлов, а внутри самого .ork они хранятся как сельди в бочке

Да, забыл совсем сказать - имена файлов не хранятся в .ork, откуда их берёт .exe игры - науке неизвестно. Вместо имен в .ork лежат md5 хеши файлов. Вывод: не зная пути до файла и его имени внутри игрового архива, невозможно этот файл извлечь!

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

Осталось теперь их извлечь. Поискал в интернете. Нашел ork extractor, написанный человеком angel_death с сайта extractor.ru. Автор проги проделал точно такой же умственный путь что и я. Экстрактор работал по принципу - скармливаешь ему файл-лист, он пытается это вытянуть из архива.

Ну я и скормил экстрактору свой файл-лист, созданный пираткой. Экстрактор все прекрасно распаковал. Первым делом я взялся за шрифты - открыл их все поочередно в программе font expert. Как и следовало ожидать, в регистре cyrillic у этих шрифтов стояли одни квадратики. Все стало ясно.

Заглянул и в пресловутые fonts_unicode_***.xml - там действительно лежали ссылки на эти фонты. Русской таблицы я не получил, т.к. имя ее неизвестно и английский .ехе ее не вызывает, потому имя это не уходит в лог. Пробовал вслепую по аналогии копнуть в том же месте на предмет fonts_unicode_rus.xml, fonts_unicode_cyr.xml. Ничего не получил. Нет имени - нет файла Ох уж это шифрование.

Игра изначально сделана с поддержкой множества языков (теоретически, если ее на эти языки переведут) Тексты и звуки хранятся на каждый язык отдельно, какую локализацию грузить - .ехе смотрит по ключам реестра, помимо того у .ехе есть свой default language, который по большому счету ничего не решает (игра грузит default language если в реестре не найдены нужные ключи, вот и все).

А вот таблицы шрифтов работают хитрее. При запуске игра смотрит к какой языковой группе принадлежит запускаемый язык - eng, eur, hpc и грузит соответствующую таблицу шрифтов. А в таблице - ссылки на шрифты, ЛИШЁННЫЕ кириллицы. И игра покорно грузит русский текст, русский звук и русскую раскладку, вместо которой в шрифтах - квадраты. Предполагалось, что при переводе игры на какой-либо язык локализаторы изменят/добавят шрифты и отредактируют нужные таблицы. Изначально шрифты держат только английский, французский, немецкий, итальянский, чешский, польский и еще пару языков.

Родился вопрос: а как же оригинальный .ехе запускает игру на русском? Скачал из интернета мини-образ лицензионного диска, поставил Daemon Tools 4.03, отключил сидиром. Через два часа мучительных ковыряний удалось сэмулировать новомодный StarForce 3.7.10. Глянул в игру. Ужаснулся. Шрифт вместо трех грузился только один и не слишком похожий на шрифты оригинала.

Судя по всему, никакой кириллической таблицы в архиве игровом и нет, либо она лежит по неизвестному адресу в крайне убогом виде и содержит ссылку на один-единственный шрифт, лежащий по неизвестному адресу в крайне убогом виде. Не зная имен, файлов не извлечь. Русский .ехе логов не ведет. К тому же он шибко зашифрован, открытым тестом там имя таблицы не хранится...

Что мне оставалось делать? На русский .ехе и русскую таблицу я решительно плюнул. Родилась идея - если английский шрифт при запуске русской версии работает исправно - латиница-то отображается верно - то может просто заменить этот шрифт на аналог, где в регистре cyrillic есть русские буквы? Кодировка-то - юникод, загрузиться должны исправно. Ведь английский .ехе исправно кушает ключи 0x419 и ru-RU и по идее грузит буковки именно из пустого регистра cyrillic.

Полазал в инете. Нашел похожий шрифт ttf с полноценной кириллицей. Полез в реестр, там был ключ DATA с путем до несуществующей папки Data. "Оверрайд," - подумал я, - "Вот сейчас положу свой шрифт в оверрайд и все запашет".

В следующие 2 часа я занимался поклажей разных шрифтов, измененных файлов в папку DATA с сохранением их внутренних путей, т.к. собственно вместе с путями они и были успешно извлечены; это ни к чему не привело. Игра не реагирует принципиально ни на какую информацию, лежащую за пределами data.ork. Зачем в реестре ключ DATA, я так и не понял.

Далее я вспомнил, что пиратка версии 1.0 успешно патчится, а лицензия от Нового Диска уже вышла в последней версии 1.4. И в пропатченной пиратке есть файлики data1.ork и data2.ork. В версии Нового Диска их нет, видимо игра была собрана одним куском т.к. патчей уже не требовала. "Вот он, оверрайд!" - подумал я, - "Взломанный английский .ехе 1.4 наверняка тоже попытается из них брать данные, осталось только запихать в data3.ork нужный шрифт!"

Ну прежде всего я решил доказать на практике, что data1.ork и data2.ork - это оверрайд. Положил их в отдельную папку, и прогнал через ork extractor. Data1.ork оказался пустышкой длиной в несколько десятков байт, которая состояла из заголовка архива и открытого текста "good luck!". Data2.ork успешно распаковалась - все ее содержимое, 475 файлов, уже засветилось в моем файл-листе. Поглядел на распакованное - действительно оверрайд, все имена, естественно, совпадают с уже имеющимися в Data.ork.



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

Создано: 23 февраля 2006 13:59 · Поправил: Bak
· Личное сообщение · #2

Так что единственный способ создать No-CD на игру от Нового Диска - запаковать шрифт с кириллицей в ork под старым именем английского шрифта. Стало быть нужен запаковщик, созданный по аналогии с распаковщиком. Я сам не программист, а написать прогу позарез надо. О чем я вас всех слёзно прошу. Автор ork экстрактора отказался чем-либо заниматься по причине "очень занят". Может быть, кто-то из вас поможет. Буду ОЧЕНЬ признателен. Нужен просто запаковщик в .ork, всю остальную канитель с .dll, .ехе и прочим я беру на себя т.к. полностью разобрался и никого не хочу утруждать вторичной ненужной работой.

Со своей стороны предоставляю следующие материалы:

Data1.ork - маленький файл от патча, содержит только заголовок и слова Good Luck! Его исследование и сравнение с Data2.ork помогут вычленить специфические заголовок и концовку файлов .ork

Data2.ork - большой (28 Мб) файл от патча, в нем лежит 475 файлов, все имена которых известны.

Filelist.log - лог использования файлов от пиратки 1.0. Прошу заметить, там только 3000 имен, которые .ехе затронул за час игры, а в оригинальном data.ork их свыше 16.000 но это, в сущности, неважно.

Ork extractor.exe - ему скармливается Filelist.log, по которому прочесывается data2.ork и в результате все его содержимое выходит наружу Синтаксис: ork_extractor.exe data2.ork filelist.log из корня где все это лежит.

Всё это выложено по адресу: http://www.sendspace.com/file/mwj0xt http://www.sendspace.com/file/mwj0xt

Основной признак того, что созданный вами запаковщик работает исправно - тот факт, что распаковщик его распаковывает Вся надежда на вас, господа!




Ранг: 1288.1 (!!!!), 273thx
Активность: 1.290
Статус: Участник

Создано: 23 февраля 2006 14:22
· Личное сообщение · #3

ниасилил.
одно ясно-бесплатно этим врядли кто-то будет заниматься..



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

Создано: 23 февраля 2006 14:26
· Личное сообщение · #4

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




Ранг: 105.9 (ветеран)
Активность: 0.060
Статус: Участник

Создано: 23 февраля 2006 14:32
· Личное сообщение · #5

Все это можно было написать 2-4 предложениями.

1. Есть игра использующая формат .ork
2. Для этотго формата есть extractor.
3. Необходимо написать обратный упаковщик в этот формат.
4. Твои контакты + сколько платишь (там качать только 30mb ).
А свои размышления и действия можно было не писать, это только отталкивает от твоего топика.



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

Создано: 23 февраля 2006 14:42
· Личное сообщение · #6

Нисколько не плачу Читал правила форума - там было сказано про запросы на взлом и их отличие от платных запросов на взлом. А фразу "там качать только 30 мб" я вообще не понял. Сидишь на диалапе - не парься



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

Создано: 23 февраля 2006 19:40
· Личное сообщение · #7

После этого поста что-то мне не хочется браться за это дело... Сорри, ничего личного...




Ранг: 233.1 (наставник), 30thx
Активность: 0.210
Статус: Участник

Создано: 25 марта 2006 20:09
· Личное сообщение · #8

А игра действительно рульная...
Жаль...
что нет NoCd

-----
AutoIt




Ранг: 516.1 (!), 39thx
Активность: 0.280
Статус: Участник

Создано: 26 марта 2006 19:17
· Личное сообщение · #9

OLEGator

hxxp://m0001.gamecopyworld.com/games/pc_armies_of_exigo.shtml




Ранг: 233.1 (наставник), 30thx
Активность: 0.210
Статус: Участник

Создано: 26 марта 2006 21:39
· Личное сообщение · #10

Av0id
Благодарю...
Но там типа под инглиш версию....
А проетектор на инглиш версии вроде другой стоял.
Типа таже проблема, что и изложена выше...
У меня русская лицензия от Нового диска.

Эх...
ладно придётся юзать с Daemon tools'ом и вырублеными приводами.

-----
AutoIt




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

Создано: 22 мая 2006 06:38
· Личное сообщение · #11

Перечитывал несколько раз... плохо понял.

Я понял так:
1. Есть русская лицензия. Она вам нравится, но нет no-cd. А вы хотите no-cd.
2. Есть английская пиратка. Вы хотите русскую. Ставите exe от английской в русскую и ничего не работает.

Т.е. нужен no-cd для русской версии, так?

-----
MicroSoft? Is it some kind of a toilet paper?




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

Создано: 22 мая 2006 09:52
· Личное сообщение · #12

Bak
Где-то, я эту цедулю уже видел. Полгода назад примерно. И тоже слезно умоляли забесплатно помочь.



Ранг: 34.9 (посетитель)
Активность: 0.030
Статус: Участник

Создано: 22 мая 2006 13:53
· Личное сообщение · #13

IMHO, eto bolshe pohodit na stat'y...



Ранг: 78.3 (постоянный)
Активность: 0.030
Статус: Участник

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

Bak пишет:
Заглянул и в пресловутые fonts_unicode_***.xml - там действительно лежали ссылки на эти фонты. Русской таблицы я не получил, т.к. имя ее неизвестно и английский .ехе ее не вызывает, потому имя это не уходит в лог. Пробовал вслепую по аналогии копнуть в том же месте на предмет fonts_unicode_rus.xml, fonts_unicode_cyr.xml. Ничего не получил. Нет имени - нет файла Ох уж это шифрование.

поподбирай еще. может умельцы с нового диска запихнули русский в fonts_unicode_ger.xml и т.д..


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


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