Решил создать отдельную тему, посвященную разжиманию (т.е. извлечению из архива) исполняемых файлов PS2. Сразу хочу высказать благодарность уважаемому Чуку, который является её идейным вдохновителем. Чем они (сжатые ELF) вредны – мешают AR, патчам, возможно работе HDLoader. Пользы не обнаружено. Хотя уважаемый Ромка говорил, что в таком виде они быстрее грузятся с DVD. Выход – разжимать. Начнём. Сразу вопрос. Как выяснить, что ELF сжат и как можно определить, чем именно?
Попробуй поискать пакеры на wasm.ru, там в основном для винды и exe файлов, но может есть и для линукса(там как раз elf файлы идут).
Ну что оно запаковано определить легко - попробуй его раром сжать. Если сжиматься будет плохо - то жатый. Есть пара распаковщиков. В принципе Тот кто написал пакер написал и универсальный распаклвщик, да вот только беда в том что обратно не разжимается как до упаковки было. Плюс к этому теряется еще дофига данных. Часто получаются неработоспособные модули. Но... Если подумать то эмулятор ПС2 как-то это дело запускает. Поэтому после запуска игры можно снять дамп и как на компе восстанавливать исполняемый модуль. Во всяком случае что примерно должно получится и что искать в дампе даст пасакованный (пусть и криво) модуль. Гораздо проще взять из англ версии елф не пакованый. И в дампе после запуска русской версии поискатьего. Пираты не так много правят в исполняемом модуле... Так что русский модуль можно восстановить.
Ну вот этот уродец сжался в 4 раза. Хоть Ромка и говорит, что он запакованный. www.f-archives.narod.ru/SLUS_203.12.rar Поверить не могу! Это ж как такое возможно? Алгоритм JPEG используют? )) Ничего не понял. Это ты предлагаешь делать через эмулятор PS2? Один раз посмотрел на этого убогого, уже больше года даже не интересуюсь им. Жаль, поэтому не умею с ним работать и не знаю функций.
Через эмулятор PS2 конечно по идее то можно снять дамп, но только потом из него придётся делать ELF - а это уже не очень просто. Кстати, я как-то было попытался использовать относительно свежий эмулятор для подобных целей однако проблема в том что он даже HD loader у меня запускал с не более чем 5fps и т-о-р-м-о-з-и-л. лучше бы он вообще ничего не показывал на экран тогда уж. ivse тогда говорил, что для такой цели нужен графический null-плагин (или что-то вроде того), но только ведь его похоже нет.
Oleg Soev, дело не в том что пакуется с потерями как жпег. Дело в том что при паковке изменяется расположение секций и служебной информации. Как я понял некоторые секции почему-то выкидываются. После разжимания Даже рабочий модуль уже будет не тем что раньше - например будет смещена секция кода. По поводу пакованного файла... Ну я не знаю что сказать... 2/3 части этого файла просто забыты нулями (хвост). Остальная часть не то чтобы сжата, а скорее зашифрована. PS2-Unpacker version 0.1.2 обламывается на нем. На счет эмулятора. Да какая разница что там долго. После того как приставка что-то показала отличное от логотипа можно уже снимать дамп, так как елф уже распакован. Кстати как писал автор распаковщика, он использует наработки эмулятора, но вот что-то не всегда у него получается
Дамп не выход, распаковщик может поместить код в любое место памяти, по любому адресу, единственный реальный выход, это дизассемблирование участка кода, который отвечает за распаковку.
TechnoWizard, ты думаешь что сжатие ехе файла это как раром тока оно еще выполняться умеет? Ты не получишь послераспаковки 100% исходный файл. И ты предлагаешь вот сидеть и мучиться с дезассемблированием? А потом что? Написать свой распаковщик. Ну ты орел... Я же предлагаю взять английский оригинал и дамп русской версии и сделать замену переведенного текста и измененных имен файлов по английскому варианту, который РЕАЛЬНО существует в природе и который можно достать. (ну поделится кто-нито например ) Да и в любом случае ну напишешь ты распаковщик. Только чтоон делать то будет? Он распакует исполняемую часть, хорошо. Дальше? Как ты воссоздашь исходные таблицы описаний, параметров и т.д. То ради чего это все затевалось - чтобы получить елф такой который сможет пропатчить АР МАХ. То есть практически такой же как оригинал. Извини за наезд, но то что ты написал - это красивая теория котрая не жизнеспособна. Даже на компе никто не дезассемблирует для распаковки упаковщик, так как это бестолку, если можно просто выудить то что после него получается. Нужны таблицы импорта, расположение секций, точка входа для воссоздания из полученного рабочего ехе. Зачем тебе алгоритм упаковки? Ты что перепаковщик делать собираешься?
хочу обратить внимание, что ... обычный (неупакованный) ELF для PS2 загружается IO-процессором и копируется (по частям) в основную системную память через DMA-канал. Сам Emotion Engine в данном процессе почти не участвует. Загрузка ELF-файла, как я понимаю, происходит только на стандартный адрес, указываемый при компиляции программы, никакого "импорта/экспорта" в обычных ELF'ах для EE не предусмотрено, взаимодействие с ядром системы (биосом) происходит с помощью инструкций "syscall". Соответственно, из всякой дополнительно информации в ELF'e для обычной загрузки программы нужен самый минимум.
М-да, друзья… Теме несколько дней, а мы пока так и не выяснили, как однозначно идентифицировать запакованный - зашифрованный модуль. Я надеялся, что компрессор (шифратор?) какие-то данные о себе оставляет в коде и по ним его можно обнаружить и всё полностью восстановить. Но, как выяснилось, дела обстоят намного хуже. Сжатые (зашифрованные и т.п.) elf это уже не просто зло, а зло в квадрате.
1) А расспаковщик распаковывает не только исполняемую часть но и сегменты данных и прочее. Если не распаковывает код в начале файла, то в любом случае где-то есть код, который делает это. 2) На компе не дизассемблируют потому что все дизасемблировано до нас. И как правило народ предпочитает использовать стандартные пакеры к которым давно есть распаковщики. Но бывают и исключения, я лично не так давно собственноручно выдирал алгоритм распаковки из EXE файла, заняло это дело часа 4. И все потому, что мне мидишка понравилась, которая была засунута в ресурсы файла. Народ пускаеться и в более тяжкие ради меньшего, это своего рода экстрим 3) Я даже не предлагал создавать распаковщик, я лишь заметил, что чтобы собрать из дампа памяти эмулатора ELF, нужно будет дизасемблировать часть кода отвечающую за распаковку, чтобы выяснить куда он эти самые сегменты засунул в памяти. Не замечал я чтот за IO процессорами такого, может не внимательно смотрел... :huh: Но все равно чтот мне подсказывает что загрузкой занимаеться именно BIOS.
TechnoWizard, ты знаешь, наверно от компрессора этого есть исходники ведь! Я в этом почти уверен. Так что можно их посмотреть... как тебе идея? Вопрос в том кто будет этим заниматься? Я лучше из дампа выловлю русский запакованый елф. И буду просить чтоб английский оригинальный дал кто нито Распаковать - дело интересное, но увы времени сейчас на это нет
Исходники есть всегда, вопрос ток где Представь себе звонишь ты ну напрмер в Squre Enix и просишь жалобным голосом, мол дайте люди добрые исходники пакера для elf файлов, а то у меня вашу игруху спиратить не получаеться Учти, что у каждой фирмы вполне может быть свой пакер написанный ими лично. Тут же не идет речь о каких либо стандартах.
К счастью такой фигней, как упаковка программ всякими пакерами, разработчики игр почти не занимаются.
Угу, но все равно как ты себе представляешь искать того самого пирата ? Только в россии каждый второй - пират
Да брось… Матрица, знаток в этом деле, говорил что существует всего около 3-4 кантор. И еще несколько на Украине.
ничего не понял... чем можно разобрать ельф по ресурсам и обратно все запаковать после изменения? для начала ,в качестве тренировки попытаюсь русифицировать медиаплеер.