IPB

Здравствуйте, гость ( Вход | Регистрация )

4 страниц V  < 1 2 3 4 >  
Ответить в данную темуНачать новую тему
Monster Hunter Freedom Unite, нужен перевод
UchihaEliot
сообщение 21.11.2009, 23:12
Сообщение #41


Участник
**

Группа: Пользователи
Сообщений: 20
Регистрация: 19.11.2009
Из: Украина, Луганская обл.
Пользователь №: 472



happy.gif привет тебе от Варяга))

P.S.
Перейти в начало страницы
 
+Цитировать сообщение
HoRRoR
сообщение 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
};



Однако, на деле это ничего не дало, что говорит о том, что я либо чего-то не учёл, либо с данным происходят ещё какие-то преобразования, либо я вообще копаю не в ту сторону.


--------------------
Перейти в начало страницы
 
+Цитировать сообщение
UchihaEliot
сообщение 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% уже. Но в игре это не помогло, буквы стали узкими, но расстояние между ними не изменилось и проблема таким образом не была решена.

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

Так что сообщите это Хорору.
Перейти в начало страницы
 
+Цитировать сообщение
HoRRoR
сообщение 22.11.2009, 18:54
Сообщение #44


Администратор
***

Группа: Администраторы
Сообщений: 948
Регистрация: 28.12.2007
Из: Ростов-на-Дону
Пользователь №: 1



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

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

--

А вот экзешник вы мне всё-таки декриптуйте. Возможно, там другая матрица вшита...


--------------------
Перейти в начало страницы
 
+Цитировать сообщение
UchihaEliot
сообщение 22.11.2009, 18:57
Сообщение #45


Участник
**

Группа: Пользователи
Сообщений: 20
Регистрация: 19.11.2009
Из: Украина, Луганская обл.
Пользователь №: 472



Я отписал твои результаты у них на форуме ждем результата... поскольку незнаю как он декриптовал Eboot.bin у нас не выходит...
Перейти в начало страницы
 
+Цитировать сообщение
HoRRoR
сообщение 23.11.2009, 18:07
Сообщение #46


Администратор
***

Группа: Администраторы
Сообщений: 948
Регистрация: 28.12.2007
Из: Ростов-на-Дону
Пользователь №: 1



Замените кто-нибудь этим BOOT.BIN оригинальный, запустите игру. Она должна повиснуть сразу после запуска. Если это случится - сдампите память, если нет - придётся искать способ декриптовать EBOOT.BIN.


--------------------
Перейти в начало страницы
 
+Цитировать сообщение
UchihaEliot
сообщение 23.11.2009, 18:17
Сообщение #47


Участник
**

Группа: Пользователи
Сообщений: 20
Регистрация: 19.11.2009
Из: Украина, Луганская обл.
Пользователь №: 472



Сейчас попробую...

Игра не повисла а запустилась и норм работает...
Перейти в начало страницы
 
+Цитировать сообщение
lupus
сообщение 29.11.2009, 22:59
Сообщение #48


Активный участник
***

Группа: Переводчики
Сообщений: 74
Регистрация: 11.10.2008
Пользователь №: 264



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

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

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

зы - заглядываю сюда не часто, так что ежели надо - Миха, стукни в аську.
Перейти в начало страницы
 
+Цитировать сообщение
HoRRoR
сообщение 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, что я давал.


--------------------
Перейти в начало страницы
 
+Цитировать сообщение
UchihaEliot
сообщение 30.11.2009, 14:45
Сообщение #50


Участник
**

Группа: Пользователи
Сообщений: 20
Регистрация: 19.11.2009
Из: Украина, Луганская обл.
Пользователь №: 472



Ну так что там? нам что то делать нужно?)
Перейти в начало страницы
 
+Цитировать сообщение
HoRRoR
сообщение 30.11.2009, 15:23
Сообщение #51


Администратор
***

Группа: Администраторы
Сообщений: 948
Регистрация: 28.12.2007
Из: Ростов-на-Дону
Пользователь №: 1



А для кого я предыдущее сообщение писал?


--------------------
Перейти в начало страницы
 
+Цитировать сообщение
UchihaEliot
сообщение 30.11.2009, 15:58
Сообщение #52


Участник
**

Группа: Пользователи
Сообщений: 20
Регистрация: 19.11.2009
Из: Украина, Луганская обл.
Пользователь №: 472



Простоя не пойму что именно нужно сделать...
Что на что заменить...
Открыть образ... взять твой BOOT.bin переименовать в EBOOT.bin и заменить им оригинальный из образа?
Если можно просто обьяснить что и как делать по порядку...
Перейти в начало страницы
 
+Цитировать сообщение
HoRRoR
сообщение 30.11.2009, 17:28
Сообщение #53


Администратор
***

Группа: Администраторы
Сообщений: 948
Регистрация: 28.12.2007
Из: Ростов-на-Дону
Пользователь №: 1



Господи, написал всё простым русским языком.

Цитата
Открыть образ... взять твой BOOT.bin переименовать в EBOOT.bin и заменить им оригинальный из образа?

Поздравляю, сектор "приз" на барабане.


--------------------
Перейти в начало страницы
 
+Цитировать сообщение
UchihaEliot
сообщение 30.11.2009, 20:36
Сообщение #54


Участник
**

Группа: Пользователи
Сообщений: 20
Регистрация: 19.11.2009
Из: Украина, Луганская обл.
Пользователь №: 472



Извеняюсь за задержку проблема с инетом...
Как я понял тебе после всех тех манипуляций нужно снять Дам Памяти с того что получилось...

Кстати дай твой Boot.bin ....
Перейти в начало страницы
 
+Цитировать сообщение
HoRRoR
сообщение 30.11.2009, 20:46
Сообщение #55


Администратор
***

Группа: Администраторы
Сообщений: 948
Регистрация: 28.12.2007
Из: Ростов-на-Дону
Пользователь №: 1



Слушай, ты просто гениальная личность. Прокрути страницу чуть выше, а?


--------------------
Перейти в начало страницы
 
+Цитировать сообщение
lupus
сообщение 1.12.2009, 1:02
Сообщение #56


Активный участник
***

Группа: Переводчики
Сообщений: 74
Регистрация: 11.10.2008
Пользователь №: 264



блин, я порой просто поражаюсь с некоторых воинов интернета... Миха, тебе повезло ))
Перейти в начало страницы
 
+Цитировать сообщение
UchihaEliot
сообщение 1.12.2009, 14:31
Сообщение #57


Участник
**

Группа: Пользователи
Сообщений: 20
Регистрация: 19.11.2009
Из: Украина, Луганская обл.
Пользователь №: 472



Я и забыл что ты выкладывал думал ты по Асе скидывал...
Перейти в начало страницы
 
+Цитировать сообщение
UchihaEliot
сообщение 1.12.2009, 15:21
Сообщение #58


Участник
**

Группа: Пользователи
Сообщений: 20
Регистрация: 19.11.2009
Из: Украина, Луганская обл.
Пользователь №: 472



Готовый Дамп
Дамп снят с образа с замененным EBOOT.bin на тот что дал Хоррор...
После замены игра виснет в начале на окне проверки Карты Памяти -
Перейти в начало страницы
 
+Цитировать сообщение
lupus
сообщение 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
Перейти в начало страницы
 
+Цитировать сообщение
HoRRoR
сообщение 9.12.2009, 19:11
Сообщение #60


Администратор
***

Группа: Администраторы
Сообщений: 948
Регистрация: 28.12.2007
Из: Ростов-на-Дону
Пользователь №: 1



Прям уж открытие Америки. Только понту от дебаггера этого, если игра не доходит до вызова необходимых функций. Если бы хотя бы значения регистров менять можно было - была бы более-менее существенная польза, а так - её почти нет.


--------------------
Перейти в начало страницы
 
+Цитировать сообщение

4 страниц V  < 1 2 3 4 >
Быстрый ответОтветить в данную темуНачать новую тему
3 чел. читают эту тему (гостей: 3, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 28.3.2024, 15:48