Monster Hunter Freedom Unite, нужен перевод |
Здравствуйте, гость ( Вход | Регистрация )
Monster Hunter Freedom Unite, нужен перевод |
21.11.2009, 23:12
Сообщение
#41
|
|
Участник Группа: Пользователи Сообщений: 20 Регистрация: 19.11.2009 Из: Украина, Луганская обл. Пользователь №: 472 |
привет тебе от Варяга))
P.S. |
|
|
22.11.2009, 18:04
Сообщение
#42
|
|
Администратор Группа: Администраторы Сообщений: 948 Регистрация: 28.12.2007 Из: Ростов-на-Дону Пользователь №: 1 |
Нет, ребятки, скорей всего без 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 }; Однако, на деле это ничего не дало, что говорит о том, что я либо чего-то не учёл, либо с данным происходят ещё какие-то преобразования, либо я вообще копаю не в ту сторону. -------------------- |
|
|
22.11.2009, 18:42
Сообщение
#43
|
|
Участник Группа: Пользователи Сообщений: 20 Регистрация: 19.11.2009 Из: Украина, Луганская обл. Пользователь №: 472 |
Вот коментарий Админа с форума monsterhunter.forum.st его ник - GoozzZ
Цитата Я делал перевод МХ. И его выполнить не возможно без знаний программирования и возможности переписать часть кода в МХ отвечающую за размер шрифта.
МХ использует шрифт вшитый в прошивку PSP, поэтому перерисовывать ничего не придется. 1. При помощи декриптора вытащил все файлы с текстом. 2. Переписал их на русский в кодировке utf-8 3. PSP отлично поняла его. Но в МХ использует сжатый по длине на 50% латинский алфавит (этот шрифт зашит в прошивку PSP). А кирилического алфавита сжатого на 50% в прошивке PSP нет. Поэтому там где умещаются 10 символов латинского алфавита, влезает только 5 русских букв. На моем форуме уже была тема где все это обсуждалось, и я там выкладывал скрины. Но весь русский текст выглядел так: з а д а н и е з а в е р ш е н о. Я заморочился и отредактировал кирилический шрифт вшитый в прошивку чтобы он был на 50% уже. Но в игре это не помогло, буквы стали узкими, но расстояние между ними не изменилось и проблема таким образом не была решена. Мне кажется кроме того что эта затея не имеет никакого смысла (стоит делать перевод только описаний в тренировке и первых монологов). Так еще и почти не осуществима для простых смертных. Так что сообщите это Хорору. |
|
|
22.11.2009, 18:54
Сообщение
#44
|
|
Администратор Группа: Администраторы Сообщений: 948 Регистрация: 28.12.2007 Из: Ростов-на-Дону Пользователь №: 1 |
Цитата И его выполнить не возможно без знаний программирования и возможности переписать часть кода в МХ отвечающую за размер шрифта. Как говорится - спасибо, Кэп! Да-да, я нифига не шарю в программировании, никогда в жизни не смогу разобраться в коде MIPS R4000, а всё мною вышеописанное приснилось мне ночью. И вообще я лунатик, и в этой теме отписывался только спящим. Я думаю, того факта, что мы уже давно занимаемся переводами игр, хватило бы, чтобы сделать выводы о нашей компетентности в данном вопросе. -- А вот экзешник вы мне всё-таки декриптуйте. Возможно, там другая матрица вшита... -------------------- |
|
|
22.11.2009, 18:57
Сообщение
#45
|
|
Участник Группа: Пользователи Сообщений: 20 Регистрация: 19.11.2009 Из: Украина, Луганская обл. Пользователь №: 472 |
Я отписал твои результаты у них на форуме ждем результата... поскольку незнаю как он декриптовал Eboot.bin у нас не выходит...
|
|
|
23.11.2009, 18:07
Сообщение
#46
|
|
Администратор Группа: Администраторы Сообщений: 948 Регистрация: 28.12.2007 Из: Ростов-на-Дону Пользователь №: 1 |
Замените кто-нибудь этим BOOT.BIN оригинальный, запустите игру. Она должна повиснуть сразу после запуска. Если это случится - сдампите память, если нет - придётся искать способ декриптовать EBOOT.BIN.
-------------------- |
|
|
23.11.2009, 18:17
Сообщение
#47
|
|
Участник Группа: Пользователи Сообщений: 20 Регистрация: 19.11.2009 Из: Украина, Луганская обл. Пользователь №: 472 |
Сейчас попробую...
Игра не повисла а запустилась и норм работает... |
|
|
29.11.2009, 22:59
Сообщение
#48
|
|
Активный участник Группа: Переводчики Сообщений: 74 Регистрация: 11.10.2008 Пользователь №: 264 |
то, что используется шрифт из flash0 вы наверное уже знаете
для тех, кто маипуляции с файлами для HoRRoR'а проводит: откройте в хексе Boot.bin, если он начинается с заголовка ELF, то вполне можете кидать его, декриптовать ничего не надо. Пробуйте сделать так: бэкапите eboot.bin, делаете копию boot.bin и переименовываете в eboot.bin, собираете образ. Если всё пучком - выкладывайте этот самый boot.bin для дальнейшего ковыряния Михой. >Игра не повисла а запустилась и норм работает... а она и не должна была повиснуть всё потому, что всё читается из eboot.bin. в новых версиях игр вообще бут.бин не несёт смысловой нагрузки и тупо забит нулями. если нифтга у вас с этим делом не получится, кидайте оригинальный eboot.bin мне - буду декриптовать. зы - заглядываю сюда не часто, так что ежели надо - Миха, стукни в аську. |
|
|
29.11.2009, 23:18
Сообщение
#49
|
|
Администратор Группа: Администраторы Сообщений: 948 Регистрация: 28.12.2007 Из: Ростов-на-Дону Пользователь №: 1 |
Цитата Пробуйте сделать так: бэкапите eboot.bin, делаете копию boot.bin и переименовываете в eboot.bin, собираете образ. Если всё пучком - выкладывайте этот самый boot.bin для дальнейшего ковыряния Михой. Чёрт, всё гениальное - просто! Я чего-то даже не додумался до такого... Ведь реально есть шанс, что экзешники одинаковы. Цитата а она и не должна была повиснуть Ну была смутная надежда, что запускается BOOT.BIN. -- Да, файлы одинаковы, спасибо lupus'у. Теперь надо заменить EBOOT.BIN на тот BOOT.BIN, что я давал. -------------------- |
|
|
30.11.2009, 14:45
Сообщение
#50
|
|
Участник Группа: Пользователи Сообщений: 20 Регистрация: 19.11.2009 Из: Украина, Луганская обл. Пользователь №: 472 |
Ну так что там? нам что то делать нужно?)
|
|
|
30.11.2009, 15:23
Сообщение
#51
|
|
Администратор Группа: Администраторы Сообщений: 948 Регистрация: 28.12.2007 Из: Ростов-на-Дону Пользователь №: 1 |
А для кого я предыдущее сообщение писал?
-------------------- |
|
|
30.11.2009, 15:58
Сообщение
#52
|
|
Участник Группа: Пользователи Сообщений: 20 Регистрация: 19.11.2009 Из: Украина, Луганская обл. Пользователь №: 472 |
Простоя не пойму что именно нужно сделать...
Что на что заменить... Открыть образ... взять твой BOOT.bin переименовать в EBOOT.bin и заменить им оригинальный из образа? Если можно просто обьяснить что и как делать по порядку... |
|
|
30.11.2009, 17:28
Сообщение
#53
|
|
Администратор Группа: Администраторы Сообщений: 948 Регистрация: 28.12.2007 Из: Ростов-на-Дону Пользователь №: 1 |
Господи, написал всё простым русским языком.
Цитата Открыть образ... взять твой BOOT.bin переименовать в EBOOT.bin и заменить им оригинальный из образа? Поздравляю, сектор "приз" на барабане. -------------------- |
|
|
30.11.2009, 20:36
Сообщение
#54
|
|
Участник Группа: Пользователи Сообщений: 20 Регистрация: 19.11.2009 Из: Украина, Луганская обл. Пользователь №: 472 |
Извеняюсь за задержку проблема с инетом...
Как я понял тебе после всех тех манипуляций нужно снять Дам Памяти с того что получилось... Кстати дай твой Boot.bin .... |
|
|
30.11.2009, 20:46
Сообщение
#55
|
|
Администратор Группа: Администраторы Сообщений: 948 Регистрация: 28.12.2007 Из: Ростов-на-Дону Пользователь №: 1 |
Слушай, ты просто гениальная личность. Прокрути страницу чуть выше, а?
-------------------- |
|
|
1.12.2009, 1:02
Сообщение
#56
|
|
Активный участник Группа: Переводчики Сообщений: 74 Регистрация: 11.10.2008 Пользователь №: 264 |
блин, я порой просто поражаюсь с некоторых воинов интернета... Миха, тебе повезло ))
|
|
|
1.12.2009, 14:31
Сообщение
#57
|
|
Участник Группа: Пользователи Сообщений: 20 Регистрация: 19.11.2009 Из: Украина, Луганская обл. Пользователь №: 472 |
Я и забыл что ты выкладывал думал ты по Асе скидывал...
|
|
|
1.12.2009, 15:21
Сообщение
#58
|
|
Участник Группа: Пользователи Сообщений: 20 Регистрация: 19.11.2009 Из: Украина, Луганская обл. Пользователь №: 472 |
Готовый Дамп
Дамп снят с образа с замененным EBOOT.bin на тот что дал Хоррор... После замены игра виснет в начале на окне проверки Карты Памяти - |
|
|
9.12.2009, 18:56
Сообщение
#59
|
|
Активный участник Группа: Переводчики Сообщений: 74 Регистрация: 11.10.2008 Пользователь №: 264 |
оказывается jpcsp (http://jpcsp.org/index.php?p=Downloads) кое что таки деюыжит...
пруфлинк: http://www.pspx.ru/forum/showthread.php?t=....bin&page=5 |
|
|
9.12.2009, 19:11
Сообщение
#60
|
|
Администратор Группа: Администраторы Сообщений: 948 Регистрация: 28.12.2007 Из: Ростов-на-Дону Пользователь №: 1 |
Прям уж открытие Америки. Только понту от дебаггера этого, если игра не доходит до вызова необходимых функций. Если бы хотя бы значения регистров менять можно было - была бы более-менее существенная польза, а так - её почти нет.
-------------------- |
|
|
Текстовая версия | Сейчас: 20.9.2024, 14:20 |