![]() |
Добро пожаловать, гость ( Вход | Регистрация )
![]() |
Siberian GRemlin |
![]() ![]()
Сообщение
#1
|
![]() Advanced Member ![]() ![]() ![]() Группа: CTPAX-X Сообщений: 537 Регистрация: 4-February 08 Пользователь №: 2 Спасибо сказали: 222 раз(а) ![]() |
Первые четыре байта -- смещение на таблицу. Здесь больше информации. Однако, там всё зашифровано! Пробовал XOR'ить -- ничего не вышло.
Образец. Корявый распаковщик. Извлекает только из папки с игрой. Ветка реестра "HKEY_LOCAL_MACHINE\SOFTWARE\Arkane Studios\Installed Apps\Arx Fatalis", параметр "Folder". |
![]() ![]() |
-=CHE@TER=- |
![]()
Сообщение
#2
|
Walter Sullivan ![]() ![]() ![]() Группа: Root Admin Сообщений: 1,371 Регистрация: 4-February 08 Пользователь №: 3 Спасибо сказали: 318 раз(а) ![]() |
Блин, редкостная программа - ей нужна именно запись в реестре, несмотря на то, что та версия, на которую я дал ссылку, если не нашла игру просит указать каталог...
Ок, сегодня поковыряю что да как и отпишусь. Добавлено: Ок, поковырял. Алгоритм шифрования и файловая стуктура весьма простые и сдались на 5 минуте отладки, а вот использование PKWARE explode() выжрало мозг на час с лишним - кто же мог предположить, что там даже не "stdcall", а "cdecl"?.. Но и на этом проблемы не кончились - максимум распаковывается 1 файл через explode() и всё падает. Почему-то нельзя использовать память выделенную через GetMem() - нужно обязательно указывать статический буфер. Я там под это дело 64К завёл (0..$FFFF-1) - на тех архивах что ты выложил, вроде бы, хватает и ничего не падает с ошибками. Отчего такая фигня - почему указатель нельзя освободить - даже представить не могу. Причём ладно бы он поменялся, так тот же самый... То ли какая защита вешается на эту область памяти во время работы, то ли ещё что - короче, ничего непонятно. Кстати, товарищ Axsis! Может ты глянешь почему там всё при использовании указателя валится? Может быть это я где-то туплю... Если надо делать перепаковку - то это функция implode() - см. в исходных кодах ссылки на два сайта - там можно найти заголовок этой функции (там 6 параметров, вроде бы). В принципе, можно и без упаковки (FlRec^.Pack = 0), но тогда после патча игра раздуется. Хотя, конечно, это куда меньше геммороя, чем с этими долбанными функциями... А! Если ты будешь через InnoSetup делать, то я тебя обрадую - там Callback функции. Т.е. либо делать ещё одну .DLL и её вызывать (т.е. будет две: repack.dll вызывающая impborl.dll), либо искать реализацию implode / explode на Delphi, что, скорее всего, фиг где попадётся. Вот программа и исходные коды: Arx Fatalis .PAK unpacker [OffTopic] |
![]() ![]() |
Упрощённая версия | Сейчас: 1st May 2025 - 01:53 |