Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Monster Hunter Freedom Unite
Старые Консольные Игры - Форум > Ромхакинг > Разрабатываемые проекты
Страницы: 1, 2
SGun
Есть несколько единомышленников, которые хотели-бы увидеть в свете русскую версию Monster Hunter Freedom Unite. Вопрос в следующем: возможно ли это? Ну и понятное дело, что мы согласны сложиться некоторой суммой вам в поддержку. Спасибо за ответ )
HoRRoR
Теоретически - возможно, но в качестве коммерческого проекта (ибо мне, например, игра совершенно не интересна, тем более PSP у меня давно уже нет). Как следствие, сумма должна нас заинтересовать. "Халтурка" нам сейчас совсем не повредит.
SGun
HoRRoR Назови размер "халтурки" в личку. Я с ребятами обсужу.
HoRRoR
Я не знаю, каковы ваши возможности, так что уж лучше назовите вы "размер", который вы готовы предоставить, а мы подумаем, окупятся ли наши труды.
SGun
Возможности довольно неопределенные. Могу предложить вот какой вариант: я на двух форумах (один по PSP, другой просто местный для меня форум) расскажу народу о своей задумке, попрошу зайти на главную страницу этого сайта и сделать пожертвование на один из ваших кошельков. Думаю, это будет и реклама и вариант оплаты, по достижении определенной суммы вы соглашаетесь сделать перевод. Если такой вариант устраивает, то можем и сумму обговорить.
HoRRoR
В таком случае лучше собрать людей, которые будут готовы пожертвовать после завершения перевода, и узнать, какая сумма ожидается.
UchihaEliot
Уважаемый HoRRoR если все таки возьметесь за данную игру(Monster Hunter Freedom Unite) я лично выплачу вам - 4 300 Российских Рублей
(таковы мои возможности на данный момент)...
Решать вам братся за ето дело или нет...

Мои контактные данные:

ICQ: 480-582-374
Skype: Tkbjn5000
Em@il: zeliotz@bk.ru
Мой профиль на PSPHome

Имя: Никита

Буду надеятся на принятие правильного решения...
HoRRoR
Цитата
если все таки возьметесь за данную игру

Давайте так: если возьмёмся и сделаем. Сумма, конечно, скромная, но в контексте того, что платит один человек - вполне даже солидная.
В ближайшее время поглядим игрушку.
SGun
ОК, от меня 1000 - 1500 руб. Приведу еще людей. UchihaEliot побеседуй на фансайте с кем-нибудь, может кто еще согласится.
UchihaEliot
SGun На Фан сайтах не сижу... думаю данное занятие более приемлимо тебе...
Разослал рекламу на Фан Сайтах ждем результата...
HoRRoR
Возможно ничего не выйдет. Игровой архив явно криптован, без наличия PSP с возможностью дампа памяти дело гиблое. Либо же кто-то должен мне помочь и кинуть дамп всей памяти. А я пока посмотрю, что можно сделать.
UchihaEliot
Напишы мне завтро в ICQ я обладаю PSP и хорошим интернет каналом...
Окажу любую поддержку... с тебя указания и руководства...
SGun
HoRRoR
Я так понимаю, нужен дамп памяти при запущенной игре? Чем снять дамп?
HoRRoR
Да, верно. Помню такую штуку, как SWCheat. В ней вроде была такая функция...
SGun
Поставил CWCheat, догнать не могу как снять дамп. Включил снятие дампа, дальше не пойму. Могу залезть в память, посмотреть, а как задампить?
HoRRoR
Там по идее на какую-то кнопку стоит, или назначить надо. Я ж не помню, почитай руководство. А вообще по идее там строка должна быть - сдампить, которая в корене флешки вроде создаёт файл.
SGun
От русских никогда ничего не добьешься. где только не лазил - везде этот плагин используют только для поиска читов. Нашел у америкосов нормальное объяснение.
Дамп
Снял дамп
Моя ася: 3 шесть 7 - 6 девять 4 - 1 ноль 3
На летитбит можно не ждать, после ввода кода открыть исходный код и взять оттуда прямую ссылку
Нажмите для просмотра прикрепленного файла
HoRRoR
Спасибо, но ррррр, указать на очевидную уловку можно, а паковать файлы не учили? sad.gif
SGun
Пакованный дамп
HoRRoR
Да поздно, почти выкачал.
UchihaEliot
Я тут... окажу любую помощь happy.gif
HoRRoR
Сможете декриптовать EBOOT.BIN?
SGun
Скажи чем, декриптуем.
Хотя, раз ты задал вопрос, значит ты не знаешь алгоритма криптования, или я не прав?
HoRRoR
http://pspfaqs.ru/news/636-umd-decrypter-d...-555-i-600.html
UchihaEliot уже взялся.
HoRRoR
Всё-таки сделай ты, у UchihaEliot'а не получается.
UchihaEliot
Мда... у меня Декриптованный EBOOT не появляется...
SGun
Вот
UchihaEliot
Ну, в инструкции сказано, что не появится, а именно этот и декриптуется. Т.е. заменяются по-сути несколько байт данных. По-моему так.

Сравнил файлы компаратором... идентичны. Ща я поковыряюсь что там такое.
UchihaEliot
Цитата(SGun @ 20.11.2009, 18:09) *


У тебя появился в папке Decryptor ?
HoRRoR
Цитата
Т.е. заменяются по-сути несколько байт данных. По-моему так.

Декриптация должна изменить файл полностью, кроме заголовка.
SGun
Выдает вот что
Нажмите для просмотра прикрепленного файла

HoRRoR
Дай тот, что у тебя eboot.bin
HoRRoR
У меня такой же, как у тебя...
UchihaEliot
Ну что есть какой то прогресс или все уперлось в Декрипт ?(
HoRRoR
Можете скачать демку и на ней тоже сдампить память?
UchihaEliot
Сейчас попробую...
HoRRoR
Всё-таки это ужасно - ломать игру на PSP без PSP... Это как картинку с монитора письмами бумажными принимать smile.gif
UchihaEliot
Чесно говоря жил бы ты поближе можно было бы тебе подыскать Б/У PSP для тестов... яб купил и выслал...
Dangaard
*скучным голосом* Текст еще переводить надо и графику перерисовывать. Взлом игры - это полдела.
UchihaEliot
Ну ни кто же ничего и не говорит))
UchihaEliot
SGun блин подскажи как Дамп снять... ато Рашен инструкция мне ни очем не сказала...
Все разобрался... нашел подробную инструкцию на Английском...

Прошу - Готовый Дамп
HoRRoR
Есть две новости, хорошая и плохая.
Хорошая - я почти раскопал алгоритм шифрования, благо отыскал отвечающий за это код и таблицу кодирования.
Плохая - такими темпами мой мозг можно будет насадить на шампур в качестве готового продукта питания, прошедшего термическую обработку.
UchihaEliot
happy.gif привет тебе от Варяга))

P.S.
HoRRoR
Нет, ребятки, скорей всего без PSP мне вряд ли удастся что-нибудь сделать. Либо я напал на ложный след, либо там всё гораздо сложнее, чем я думаю. Даже была бы у меня PSP - совсем не факт, что я бы разобрался, без дебаггера (которого для PSP нет в природе, разве что у разработчиков) довольно сложно выходит: я не знаю даже, какими именно данными оперирует процедура, адреса чего хранятся в регистрах, какие исходные данные берутся при генерации ключей для шифрования, и т.д. и т.п. В принципе, это можно было бы узнать, но заняло бы довольно много времени и сил, да и то только при наличии PSP.
Я, конечно, постараюсь ещё что-нибудь сделать, но я действую вслепую, я не могу свои догадки даже проверить. Так что в случае чего - не расстраивайтесь.

А пока выпишу всё, что мне удалось узнать, на всякий случай.

Если судить по той процедуре, что я нашёл (она, кстати, двусторонняя - как для шифрования, так и для дешифрования, разве что для каждого случая нужны разные матрицы, о них ниже), данные криптуются следующим образом:
Имеется 32-х битный ключ, состоящий по сути из двух независимых 16-битных ключей. О нём чуть позже.
Также имеются две 256-ти элементные матрицы кодов - байты от 0 до 255, разбросанные в хаотичном порядке, при этом присутствует только по одному экземпляру каждого байта. Нужны они, чтобы заменять кодами из матрицы исходные данные методом взятия кода из матрицы по индексу, которым является исходный байт. Т.е. было у нас что-либо вроде 11 00 00 00, стало 5F 56 56 56 - уже не похоже на исходные данные. По сути это можно описать как byte = matrix[byte]. Первая матрица - в одну сторону, вторая - в обратную, для декодирования. Т.е. последовательность byte = matrix[byte]; byte = matrix2[byte]; вернёт нам исходный байт.
Код
unsigned char changeByte(unsigned char b){
    return matrix[b];
}


Ключи генерируются следующим образом: если верить коду, то туда передаётся некий параметр (вообще я уверен, что на создание ключа влияет номер сектора, в котором хранятся данные, однако в коде я такого не углядел), расположенный по адресу [data_addr + size - 4] (я в этом не уверен, но код говорит именно это), при этом эти 4 байта дважды прогоняются через преобразование по матрице (matrix[matrix[byte]]), затем делятся на два ключа по 2 байта. Если первый "полуключ" получается нулевым, ему присваевается 0x215F. Если второй - 0xDFA3.
Код
void createKey(unsigned int value){
    key1 = value & 0xFFFF;
    key2 = (value >> 16) & 0xFFFF;
    if(!key1) key1 = 0x215F;
    if(!key2) key2 = 0xDFA3;
}

Далее данные обрабатываются по 4 байта следующим образом: все 4 байта преобразуются через матрицу, затем вызывается процедура смены ключей (о ней ниже), 4 байта представляются как одно значение и xor'ятся с ключом, который возвращает процедура смены ключей. Затем 4 байта снова преобразуются.
Смена ключей происходит примерно так:
Код
unsigned int getKey(){
    key1 = (key1 * 0x215F) % 0xFF8F;
    key2 = (key2 * 0xDFA3) % 0xFFEF;
    return key1 + (key2 << 16);
}


Сама же процедура обработки - примерно так:
Код
void processData(unsigned int offset){
  int i;
  for(i = 0; i < 4; i++) data[offset + i] = matrix[data[offset + i]];
  *(unsigned int*)(&data[offset]) ^= getKey();
  for(i = 0; i < 4; i++) data[offset + i] = matrix[data[offset + i]];
}


А вот, собственно, сами матрицы (я не знаю, какая из них служит для кодирования, а какая для раскодирования):
Код
unsigned char matrix[256] = {
    0x3A, 0x11, 0x72, 0x6E, 0x2F, 0x7A, 0x23, 0xF0, 0x6B, 0x5C, 0xCA, 0x41, 0x57, 0x5D, 0xB2, 0xA8,
    0x06, 0x5F, 0xC9, 0xD8, 0x17, 0x82, 0xBB, 0xD2, 0x88, 0x86, 0x27, 0x47, 0xC7, 0x29, 0x5B, 0x04,
    0x8E, 0xAE, 0x5E, 0x33, 0x49, 0xDB, 0xA5, 0x7B, 0x31, 0xB7, 0xB5, 0x84, 0xF6, 0x76, 0x81, 0xAD,
    0x6F, 0xE0, 0x39, 0x87, 0xC0, 0xAB, 0x68, 0x4D, 0x05, 0x92, 0x77, 0xFF, 0x99, 0x36, 0x2C, 0x07,
    0x0A, 0x59, 0xFA, 0xBC, 0x54, 0xE1, 0x94, 0x3D, 0x1F, 0x58, 0xA6, 0xAA, 0x53, 0x2E, 0x89, 0xEB,
    0x9C, 0x98, 0x1B, 0xD6, 0xC1, 0x30, 0x00, 0xF4, 0xEF, 0x7D, 0xBF, 0xE8, 0x0C, 0xC4, 0xAC, 0xF3,
    0xEA, 0x78, 0xBE, 0xAF, 0xB0, 0x08, 0xA1, 0x90, 0x60, 0x2A, 0xD4, 0x62, 0x3B, 0xA7, 0xD9, 0xED,
    0x7C, 0xF5, 0xEC, 0xBA, 0x9B, 0x4A, 0x0F, 0x3C, 0x7F, 0xC6, 0x24, 0x55, 0x01, 0x43, 0x22, 0x8A,
    0xA0, 0x70, 0x65, 0x67, 0x50, 0x1D, 0x96, 0x42, 0xCE, 0x20, 0x03, 0x12, 0xE3, 0x4E, 0x95, 0x26,
    0xE4, 0xB8, 0xD7, 0x48, 0xD0, 0xC3, 0xB9, 0x80, 0x18, 0xD5, 0x02, 0x34, 0x21, 0x8B, 0xDF, 0xE9,
    0x61, 0x79, 0x0E, 0x93, 0xA3, 0x63, 0x1A, 0x9D, 0xB3, 0xCD, 0xE6, 0x14, 0x2D, 0xDC, 0xA4, 0x9E,
    0x28, 0x75, 0xA9, 0x66, 0x91, 0xBD, 0xD3, 0x6A, 0x6D, 0xFB, 0x5A, 0x8C, 0xE7, 0x64, 0x97, 0x19,
    0x46, 0xFE, 0x32, 0xF2, 0x9F, 0x38, 0x9A, 0x10, 0x3F, 0x6C, 0xE2, 0xD1, 0x45, 0x15, 0xB4, 0xDE,
    0x40, 0x56, 0xE5, 0x3E, 0xF9, 0xC8, 0x35, 0x16, 0x69, 0xFC, 0x85, 0x8F, 0x51, 0xA2, 0xC5, 0xEE,
    0xB6, 0x8D, 0x74, 0xCC, 0xB1, 0x4F, 0x25, 0xFD, 0x7E, 0x1C, 0x09, 0x13, 0x4B, 0x37, 0xCF, 0xDA,
    0x4C, 0xF7, 0xC2, 0x52, 0x2B, 0xF1, 0x1E, 0xF8, 0x0B, 0x83, 0xCB, 0x44, 0x0D, 0x73, 0x71, 0xDD
};

unsigned char matrix2[256] = {
    0x56, 0x7C, 0x9A, 0x8A, 0x1F, 0x38, 0x10, 0x3F, 0x65, 0xEA, 0x40, 0xF8, 0x5C, 0xFC, 0xA2, 0x76,
    0xC7, 0x01, 0x8B, 0xEB, 0xAB, 0xCD, 0xD7, 0x14, 0x98, 0xBF, 0xA6, 0x52, 0xE9, 0x85, 0xF6, 0x48,
    0x89, 0x9C, 0x7E, 0x06, 0x7A, 0xE6, 0x8F, 0x1A, 0xB0, 0x1D, 0x69, 0xF4, 0x3E, 0xAC, 0x4D, 0x04,
    0x55, 0x28, 0xC2, 0x23, 0x9B, 0xD6, 0x3D, 0xED, 0xC5, 0x32, 0x00, 0x6C, 0x77, 0x47, 0xD3, 0xC8,
    0xD0, 0x0B, 0x87, 0x7D, 0xFB, 0xCC, 0xC0, 0x1B, 0x93, 0x24, 0x75, 0xEC, 0xF0, 0x37, 0x8D, 0xE5,
    0x84, 0xDC, 0xF3, 0x4C, 0x44, 0x7B, 0xD1, 0x0C, 0x49, 0x41, 0xBA, 0x1E, 0x09, 0x0D, 0x22, 0x11,
    0x68, 0xA0, 0x6B, 0xA5, 0xBD, 0x82, 0xB3, 0x83, 0x36, 0xD8, 0xB7, 0x08, 0xC9, 0xB8, 0x03, 0x30,
    0x81, 0xFE, 0x02, 0xFD, 0xE2, 0xB1, 0x2D, 0x3A, 0x61, 0xA1, 0x05, 0x27, 0x70, 0x59, 0xE8, 0x78,
    0x97, 0x2E, 0x15, 0xF9, 0x2B, 0xDA, 0x19, 0x33, 0x18, 0x4E, 0x7F, 0x9D, 0xBB, 0xE1, 0x20, 0xDB,
    0x67, 0xB4, 0x39, 0xA3, 0x46, 0x8E, 0x86, 0xBE, 0x51, 0x3C, 0xC6, 0x74, 0x50, 0xA7, 0xAF, 0xC4,
    0x80, 0x66, 0xDD, 0xA4, 0xAE, 0x26, 0x4A, 0x6D, 0x0F, 0xB2, 0x4B, 0x35, 0x5E, 0x2F, 0x21, 0x63,
    0x64, 0xE4, 0x0E, 0xA8, 0xCE, 0x2A, 0xE0, 0x29, 0x91, 0x96, 0x73, 0x16, 0x43, 0xB5, 0x62, 0x5A,
    0x34, 0x54, 0xF2, 0x95, 0x5D, 0xDE, 0x79, 0x1C, 0xD5, 0x12, 0x0A, 0xFA, 0xE3, 0xA9, 0x88, 0xEE,
    0x94, 0xCB, 0x17, 0xB6, 0x6A, 0x99, 0x53, 0x92, 0x13, 0x6E, 0xEF, 0x25, 0xAD, 0xFF, 0xCF, 0x9E,
    0x31, 0x45, 0xCA, 0x8C, 0x90, 0xD2, 0xAA, 0xBC, 0x5B, 0x9F, 0x60, 0x4F, 0x72, 0x6F, 0xDF, 0x58,
    0x07, 0xF5, 0xC3, 0x5F, 0x57, 0x71, 0x2C, 0xF1, 0xF7, 0xD4, 0x42, 0xB9, 0xD9, 0xE7, 0xC1, 0x3B
};



Однако, на деле это ничего не дало, что говорит о том, что я либо чего-то не учёл, либо с данным происходят ещё какие-то преобразования, либо я вообще копаю не в ту сторону.
UchihaEliot
Вот коментарий Админа с форума monsterhunter.forum.st его ник - GoozzZ

Цитата
Я делал перевод МХ. И его выполнить не возможно без знаний программирования и возможности переписать часть кода в МХ отвечающую за размер шрифта.

МХ использует шрифт вшитый в прошивку PSP, поэтому перерисовывать ничего не придется.

1. При помощи декриптора вытащил все файлы с текстом.
2. Переписал их на русский в кодировке utf-8
3. PSP отлично поняла его.

Но в МХ использует сжатый по длине на 50% латинский алфавит (этот шрифт зашит в прошивку PSP). А кирилического алфавита сжатого на 50% в прошивке PSP нет. Поэтому там где умещаются 10 символов латинского алфавита, влезает только 5 русских букв.

На моем форуме уже была тема где все это обсуждалось, и я там выкладывал скрины. Но весь русский текст выглядел так: з а д а н и е з а в е р ш е н о.

Я заморочился и отредактировал кирилический шрифт вшитый в прошивку чтобы он был на 50% уже. Но в игре это не помогло, буквы стали узкими, но расстояние между ними не изменилось и проблема таким образом не была решена.

Мне кажется кроме того что эта затея не имеет никакого смысла (стоит делать перевод только описаний в тренировке и первых монологов). Так еще и почти не осуществима для простых смертных.

Так что сообщите это Хорору.
HoRRoR
Цитата
И его выполнить не возможно без знаний программирования и возможности переписать часть кода в МХ отвечающую за размер шрифта.

Как говорится - спасибо, Кэп!
Да-да, я нифига не шарю в программировании, никогда в жизни не смогу разобраться в коде MIPS R4000, а всё мною вышеописанное приснилось мне ночью. И вообще я лунатик, и в этой теме отписывался только спящим.
Я думаю, того факта, что мы уже давно занимаемся переводами игр, хватило бы, чтобы сделать выводы о нашей компетентности в данном вопросе.

--

А вот экзешник вы мне всё-таки декриптуйте. Возможно, там другая матрица вшита...
UchihaEliot
Я отписал твои результаты у них на форуме ждем результата... поскольку незнаю как он декриптовал Eboot.bin у нас не выходит...
HoRRoR
Замените кто-нибудь этим BOOT.BIN оригинальный, запустите игру. Она должна повиснуть сразу после запуска. Если это случится - сдампите память, если нет - придётся искать способ декриптовать EBOOT.BIN.
UchihaEliot
Сейчас попробую...

Игра не повисла а запустилась и норм работает...
lupus
то, что используется шрифт из flash0 вы наверное уже знаете smile.gif
для тех, кто маипуляции с файлами для HoRRoR'а проводит: откройте в хексе Boot.bin, если он начинается с заголовка ELF, то вполне можете кидать его, декриптовать ничего не надо. Пробуйте сделать так: бэкапите eboot.bin, делаете копию boot.bin и переименовываете в eboot.bin, собираете образ. Если всё пучком - выкладывайте этот самый boot.bin для дальнейшего ковыряния Михой.

>Игра не повисла а запустилась и норм работает...
а она и не должна была повиснуть smile.gif всё потому, что всё читается из eboot.bin. в новых версиях игр вообще бут.бин не несёт смысловой нагрузки и тупо забит нулями.

если нифтга у вас с этим делом не получится, кидайте оригинальный eboot.bin мне - буду декриптовать.

зы - заглядываю сюда не часто, так что ежели надо - Миха, стукни в аську.
HoRRoR
Цитата
Пробуйте сделать так: бэкапите eboot.bin, делаете копию boot.bin и переименовываете в eboot.bin, собираете образ. Если всё пучком - выкладывайте этот самый boot.bin для дальнейшего ковыряния Михой.

Чёрт, всё гениальное - просто! Я чего-то даже не додумался до такого... Ведь реально есть шанс, что экзешники одинаковы.

Цитата
а она и не должна была повиснуть

Ну была смутная надежда, что запускается BOOT.BIN.

--

Да, файлы одинаковы, спасибо lupus'у. Теперь надо заменить EBOOT.BIN на тот BOOT.BIN, что я давал.
UchihaEliot
Ну так что там? нам что то делать нужно?)
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
IPB NULL RU