|
PSP хакинг и девелопмент Взгляд изнутри |
28.04.2013, 03:45
|
Сообщение: #1 (1070629)
|
Модель консоли: Все PSP
Прошивка: 5.00 m33-6
Регистрация: 20.01.2010
Сообщений: 3,415
Вы сказали Спасибо: 2,368
Поблагодарили 1,618 раз(а) в 873 сообщениях
Сила репутации: 1Репутация: 1618 
(обеспечено прекрасное будущее)
|
Сообщение от ErikPshat
Для запуска приложений, использующих kernel-режим, требуется внедрение rebootex модуля, что пока лично мной не изучено. Если кто-то имеет информацию по данному вопросу, то можете поделиться ей. Например неплохо было бы заставить работать PSPident на официальных прошивках...
|
Ну во-первых rebootex не есть модуль. Чтобы досконально изучить это дело можешь посмотреть Davee's Downgrader. Схема работы такая.
1. Использование kernel-эксплоита под определённую прошивку.
2. rebootex по сути это код с kernel правами, который так и так выполняется каждый раз при перезагрузке или смене режима (VSH, GAME...).
Так вот он внедряется. Он патчатит необходимые модули: LoadExec в первую очередь. И только потом можно уже стандартно загрузить модуль с правами ядра.
Что мы сейчас написали? Угу, прошивку. Поэтому, предположение было в корне неправильное
Что насчет енкриптера. Я не совсем понял о чем ты говоришь. То есть тебя смущает что заголовок подбирается под несжатый файл, а только потом жмется?
P.S. Если ты хочешь чтобы подборка хедера работала корректно, то их нужно располагать в строгом порядке возрастания размера подписи, т.к. этого требует алгоритм. Он буквально берет первый подходящий, а не самый оптимальный из списка. Нужно или переписать алгоритм или располагать в порядке возрастания.
Header_List *get_header_list(int size)
{
int i;
int h_size;
for(i=0; i<sizeof(header_list)/sizeof(header_list[i]); i++) {
h_size = get_kirk_size(header_list[i].kirkHeader);
h_size -= 0x150;
if( h_size >= size ) {
return &header_list[i];
}
}
return NULL;
}
|
|
|
28.04.2013, 04:20
|
Сообщение: #2 (1070630)
|
Модель консоли: PSP-1004
Прошивка: 6.60 PROMOD
Другие консоли: iPad 3 WiFi
Регистрация: 18.12.2006
Адрес: Москва
Возраст: 58
Сообщений: 47,704
Вы сказали Спасибо: 27,946
Поблагодарили 43,588 раз(а) в 12,392 сообщениях
Сила репутации: 10Репутация: 42779 
(репутация неоспорима)
|
Сообщение от frostegater
их нужно располагать в строгом порядке возрастания размера подписи
|
Они именно так расположены.
Сами хедеры идут сверху вниз по убыванию размера в заголовке, а листинг, список хедеров, идёт по возрастанию размеров.
Таблица в шапке уже составлена по возрастанию, а я располагал хедеры именно в том порядке, как было подготовлено в таблице.
Тут всё правильно, подпись берётся именно по возрастанию. Я проверял, если файл не умещается в заголовок, то берётся следующий.
А вот со сжатием в энкриптере совсем не правильно. Что оно есть, что его нет - один фиг.
Просто сжатие есть и сжимает, но потом подписывает заголовком большим, чем декриптованный файл.
Ну если бы ты повнимательнее почитал бы, что я написал и вник бы, то наверное бы всё понял.
|
|
|
28.04.2013, 06:36
|
Сообщение: #3 (1070631)
|
Модель консоли: Все PSP
Прошивка: 5.00 m33-6
Регистрация: 20.01.2010
Сообщений: 3,415
Вы сказали Спасибо: 2,368
Поблагодарили 1,618 раз(а) в 873 сообщениях
Сила репутации: 1Репутация: 1618 
(обеспечено прекрасное будущее)
|
ErikPshat, ну вот смотри, ты хочешь чтобы все было так: - Считали некриптованый файл
- Зажали его
- Измерили размер
- Подобрали заголовок
- Загнали нулями пустое место
- Подписали
Я прав?
|
|
|
28.04.2013, 07:51
|
Сообщение: #4 (1070632)
|
Модель консоли: PSP-1004
Прошивка: 6.60 PROMOD
Другие консоли: iPad 3 WiFi
Регистрация: 18.12.2006
Адрес: Москва
Возраст: 58
Сообщений: 47,704
Вы сказали Спасибо: 27,946
Поблагодарили 43,588 раз(а) в 12,392 сообщениях
Сила репутации: 10Репутация: 42779 
(репутация неоспорима)
|
frostegater, да, именно так, но немного не так. Ещё нужно, чтобы математика была точной и опираться на указанные в заголовке размеры: - 0x28 - размер ELF декриптованного файла.
- 0x2C - размер всего файла с заголовком.
- 0xB0 - размер архива.
Только по твоей формуле как мы будем забивать декриптованный ELF нулями до размера 0x28, если он уже будет запакован 
Тут нужно как-то изловчиться по другому... - Считали некриптованый ELF файл
- Подобрали заголовок >= по позиции 0х28
- Забили ELF нулями до этого размера 0х28
- Зажали его
- Измерили размер архива
- (размер разархивированного архива записан в последних 4-ёх байтах GZ-архива, должен равняться позиции 0x28 - это и есть конец архива)
- Забили конец архива нулями до размера в позиции 0xB0
- Подписали
Я не понимаю, как у них внутри архива оказывается конец на 1/3 архива, а остальное забито остатками декриптованного незаархивированного ELF. Они наверное архивируют не в чистое место памяти, а прямо туда же в начало, где находится ELF, потом отрезают по размеру 0xB0 и получается хвост не просто забитый нулями, а забитый остатками ELF
Причём зачем-то в последней строчке нулевого архива вставляют какой-то код. Оно ведь и так конец читать не будет и правильно разархивируется.
Последний раз редактировалось ErikPshat; 28.04.2013 в 09:56.
|
|
|
28.04.2013, 23:45
|
Сообщение: #5 (1070678)
|
Модель консоли: PSP-1004
Прошивка: 6.61 PROMOD-C2p
Другие консоли: Все PSP, все PSV, SCPH-1002, SCPH-102, SCPH-77008, CECH-4208C, SCPH-1000R
Регистрация: 19.03.2008
Адрес: Россия
Сообщений: 5,808
Вы сказали Спасибо: 825
Поблагодарили 3,946 раз(а) в 2,063 сообщениях
Сила репутации: 1Репутация: 3946 
(репутация неоспорима)
|
Сообщение от frostegater
Ну во-первых rebootex не есть модуль. Чтобы досконально изучить это дело можешь посмотреть Davee's Downgrader. Схема работы такая.
|
Я ему в личку про это писал.
Сообщение от ErikPshat
Ну если бы ты повнимательнее почитал бы, что я написал и вник бы, то наверное бы всё понял.
|
Что я, что Фрости могут сделать что нужно, но оба нифига не поняли. У тебя, как я и говорил у тебя в гостях, в тексте слишком много воды. Как всё работает я спокойно могу прочесть в исходниках. А вот что не так по твоему мнению приходится выискивать в дебрях букв. Единственное, что я нормально понял, так это то, что эльф своим же родным заголовком не подписывается - вот от этого утверждения ещё можно плясать.
Последний раз редактировалось Yoti; 29.04.2013 в 03:11.
|
|
|
29.04.2013, 00:39
|
Сообщение: #6 (1070684)
|
Модель консоли: PSP-1004
Прошивка: 6.60 PROMOD
Другие консоли: iPad 3 WiFi
Регистрация: 18.12.2006
Адрес: Москва
Возраст: 58
Сообщений: 47,704
Вы сказали Спасибо: 27,946
Поблагодарили 43,588 раз(а) в 12,392 сообщениях
Сила репутации: 10Репутация: 42779 
(репутация неоспорима)
|
Сообщение от Yoti
эльф своим же родным заголовком не подписывается - вот от этого утверждения ещё можно плясать.
|
Ну да, я об этом постоянно твержу ))
Просто я более подробнее описываю суть проблемы и в каком месте, что программа работает не так, как должно быть.
И подробно описал принцип ихней упаковки на примере последующей распаковки.
Можешь сам проверить на оригинальных исходниках.
Удаляешь оттуда все лишние хедеры с кирками и оставляешь только 1 кирк с хедером от того же файла, который хочешь подписать.
Взять тот же Astonishia Story 2 или vshmain.prx, или любой другой.
Ессно файл не влезет обратно в свой родной заголовок и будет ошибка " ELF is to big"
P.S. Порядок упорядочивания кода я уже написал в предыдущем посту.
|
|
|
29.04.2013, 01:21
|
Сообщение: #7 (1070686)
|
Модель консоли: PSP-1004
Прошивка: 6.61 PROMOD-C2p
Другие консоли: Все PSP, все PSV, SCPH-1002, SCPH-102, SCPH-77008, CECH-4208C, SCPH-1000R
Регистрация: 19.03.2008
Адрес: Россия
Сообщений: 5,808
Вы сказали Спасибо: 825
Поблагодарили 3,946 раз(а) в 2,063 сообщениях
Сила репутации: 1Репутация: 3946 
(репутация неоспорима)
|
Сообщение от ErikPshat
Порядок упорядочивания кода я уже написал в предыдущем посту.
|
Вот это немного сбивает с толку, на самом деле. Я тебе цитировал код вверху, там же не по пунктам разложено =)
|
|
|
29.04.2013, 03:09
|
Сообщение: #8 (1070701)
|
Модель консоли: PSP-1004
Прошивка: 6.60 PROMOD
Другие консоли: iPad 3 WiFi
Регистрация: 18.12.2006
Адрес: Москва
Возраст: 58
Сообщений: 47,704
Вы сказали Спасибо: 27,946
Поблагодарили 43,588 раз(а) в 12,392 сообщениях
Сила репутации: 10Репутация: 42779 
(репутация неоспорима)
|
Yoti, ладно, поставим вопрос по другому.
Если я беру декриптованный файл Astonishia Story 2 и его-же кирк с заголовком, то получаю сообщение: - PRX SIGNER: Elf is to big
Header_List *target_header = get_header_list( elfSize );
if( target_header == NULL ) {
printf("PRX SIGNER: Elf is to big\n");
return 0;
}
В то время, когда нифига не BIG, а в точности совпадает и подходит размер ELF с размером 0x28 в psp_header.
Где ошибка?
Вот здесь мне кажется нужно выкинуть h_size -= 0x150; или сделать равным нулю.
Header_List *get_header_list(int size)
{
int i;
int h_size;
for(i=0; i<sizeof(header_list)/sizeof(header_list[i]); i++) {
h_size = get_kirk_size(header_list[i].kirkHeader); // получаем полный размер файла из заголовка
h_size -= 0x150; // получаем полезный размер файла
if( h_size >= size ) { // если текущий заголовок подходит
return &header_list[i]; // используем его
}
}
return NULL; // подходящего заголовка нет
}
Нет, ничего не даёт. Балин, наплодили формул, фиг разберёшься )))
P.S. Нужно было в таблицах ещё добавить размеры ELF.
|
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
Опции темы |
|
Опции просмотра |
Комбинированный вид
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Текущее время: 10:58. Часовой пояс GMT +3.
Powered by vBulletin® Version 3.8.7 Copyright ©2000 - 2025, vBulletin Solutions, Inc. Перевод: zCarot
PSPx Forum - Сообщество фанатов игровых консолей.
|
|
|