PrxEncrypter Mod v1.0.0.1 - Full Range Demo Game Sign
PrxEncrypter Mod
Подписываем приложения оригинальными заголовками
Как вы знаете, оригинальная версия Энкриптера содержит в себе только 3 заголовка для подписи приложений, диапазон размеров которых бывает явно недостаточен для более тонкого шифрования исполняемых файлов. Поэтому я собрал все имеющиеся в наличии заголовки демо-версий игр и портировал их в классический PrxEncrypter.
Что это за мод?
Это версия шифровальщика, собранного на основании предыдущей подготовительной темы, включающего 103 заголовка демонстрационных версий игр, способного подписывать приложения для запуска с карты памяти на официальных прошивках.
Способен подписывать исполняемые файлы DATA.PSP в диапазоне ~ 368 kb - 8 Mb
Для подписи автоматически подбирается самый маленький из 103-ёх по размеру заголовок
Используются "теги" категории "MG Demo" (MemoryStick Game Demo) - 0x0C000000 и 0xADF305F0
Можно подписывать только DATA.PSP для использования в контейнере EBOOT.PBP
Но никак не EBOOT.BIN для способа NP.ISO => EBOOT.PBP, т.к. для этого контейнера требуются теги другого диапазона "EG" - 0xD916xxF0
Для этого случая уже имеется прекрасный инструмент - SEBOOT (Sign EBOOT.BIN)
Подписываемые приложения не должны иметь Kernel-модулей, только User-режим.
Для запуска приложений, использующих kernel-режим, требуется внедрение rebootex модуля, что пока лично мной не изучено. Если кто-то имеет информацию по данному вопросу, то можете поделиться ей. Например неплохо было бы заставить работать PSPident на официальных прошивках...
В папку "PrxEncrypter Mod" скопируйте для подписываения файлы EBOOT.PBP, DATA.PSP или EBOOT.BIN. Так же, чтобы сразу собралась подписанная программа со всеми ресурсами, можете в папку добавить файлы ICON0.PNG ICON1.PNG PIC0.PNG PIC1.PNG SND0.AT3 DATA.PSAR.
Запустите программу "PrxEncrypterMod.exe" для подписи.
Заберите создавшуюся папку "SIGNED GAME" с подписанным EBOOT.PBP и положите её на карту памяти в папку ms0(ef0):/PSP/GAME/
Папку можете переименовать по названию вашей игры или программы.
Changelog PrxEncrypterMod:
Добавлено 100 заголовков от демоверсий для подписи, к 3-ём ранее имеющимся. Итого 103 заголовка.
Добавлена проверка на ~PSP и ELF
Заменён механизм сжатия в GZIP библиотекой zlib на консольный 7-Zip.
Исправлен баг, когда файл всегда подписывался бОльшим заголовком, чем он сам, несмотря на используемое сжатие. То есть, даже если файл сжимался намного меньшим размером и свободно помещался в меньший заголовок, то заголовок всё равно брался бОльший, чем несжатый файл.
Автоматизирован процесс подписи.
Таблица включённых в PrxEncrypter заголовков по алфавиту:
Таблица демонстрационных игр, выпущенных для Sony PSP (по алфавиту)
Дайте libz.a. Глупые люди думают, что его легче собрать чем скачать бинар.
Ну вот собрал libz-1.2.8 (April 28, 2013) из исходников.
Скомпилировал через MSYS по инструкции, надеюсь правильно сделал через [win32/Makefile.gcc].
Изменения 1.2.5 -> 1.2.8
Changes in 1.2.8 (28 Apr 2013)
- Update contrib/minizip/iowin32.c for Windows RT [Vollant]
- Do not force Z_CONST for C++
- Clean up contrib/vstudio [Ro§]
- Correct spelling error in zlib.h
- Fix mixed line endings in contrib/vstudio
Changes in 1.2.7.3 (13 Apr 2013)
- Fix version numbers and DLL names in contrib/vstudio/*/zlib.rc
Changes in 1.2.7.2 (13 Apr 2013)
- Change check for a four-byte type back to hexadecimal
- Fix typo in win32/Makefile.msc
- Add casts in gzwrite.c for pointer differences
Changes in 1.2.7.1 (24 Mar 2013)
- Replace use of unsafe string functions with snprintf if available
- Avoid including stddef.h on Windows for Z_SOLO compile [Niessink]
- Fix gzgetc undefine when Z_PREFIX set [Turk]
- Eliminate use of mktemp in Makefile (not always available)
- Fix bug in 'F' mode for gzopen()
- Add inflateGetDictionary() function
- Correct comment in deflate.h
- Use _snprintf for snprintf in Microsoft C
- On Darwin, only use /usr/bin/libtool if libtool is not Apple
- Delete "--version" file if created by "ar --version" [Richard G.]
- Fix configure check for veracity of compiler error return codes
- Fix CMake compilation of static lib for MSVC2010 x64
- Remove unused variable in infback9.c
- Fix argument checks in gzlog_compress() and gzlog_write()
- Clean up the usage of z_const and respect const usage within zlib
- Clean up examples/gzlog.[ch] comparisons of different types
- Avoid shift equal to bits in type (caused endless loop)
- Fix unintialized value bug in gzputc() introduced by const patches
- Fix memory allocation error in examples/zran.c [Nor]
- Fix bug where gzopen(), gzclose() would write an empty file
- Fix bug in gzclose() when gzwrite() runs out of memory
- Check for input buffer malloc failure in examples/gzappend.c
- Add note to contrib/blast to use binary mode in stdio
- Fix comparisons of differently signed integers in contrib/blast
- Check for invalid code length codes in contrib/puff
- Fix serious but very rare decompression bug in inftrees.c
- Update inflateBack() comments, since inflate() can be faster
- Use underscored I/O function names for WINAPI_FAMILY
- Add _tr_flush_bits to the external symbols prefixed by --zprefix
- Add contrib/vstudio/vc10 pre-build step for static only
- Quote --version-script argument in CMakeLists.txt
- Don't specify --version-script on Apple platforms in CMakeLists.txt
- Fix casting error in contrib/testzlib/testzlib.c
- Fix types in contrib/minizip to match result of get_crc_table()
- Simplify contrib/vstudio/vc10 with 'd' suffix
- Add TOP support to win32/Makefile.msc
- Suport i686 and amd64 assembler builds in CMakeLists.txt
- Fix typos in the use of _LARGEFILE64_SOURCE in zconf.h
- Add vc11 and vc12 build files to contrib/vstudio
- Add gzvprintf() as an undocumented function in zlib
- Fix configure for Sun shell
- Remove runtime check in configure for four-byte integer type
- Add casts and consts to ease user conversion to C++
- Add man pages for minizip and miniunzip
- In Makefile uninstall, don't rm if preceding cd fails
- Do not return Z_BUF_ERROR if deflateParam() has nothing to write
Changes in 1.2.7 (2 May 2012)
- Replace use of memmove() with a simple copy for portability
- Test for existence of strerror
- Restore gzgetc_ for backward compatibility with 1.2.6
- Fix build with non-GNU make on Solaris
- Require gcc 4.0 or later on Mac OS X to use the hidden attribute
- Include unistd.h for Watcom C
- Use __WATCOMC__ instead of __WATCOM__
- Do not use the visibility attribute if NO_VIZ defined
- Improve the detection of no hidden visibility attribute
- Avoid using __int64 for gcc or solo compilation
- Cast to char * in gzprintf to avoid warnings [Zinser]
- Fix make_vms.com for VAX [Zinser]
- Don't use library or built-in byte swaps
- Simplify test and use of gcc hidden attribute
- Fix bug in gzclose_w() when gzwrite() fails to allocate memory
- Add "x" (O_EXCL) and "e" (O_CLOEXEC) modes support to gzopen()
- Fix bug in test/minigzip.c for configure --solo
- Fix contrib/vstudio project link errors [Mohanathas]
- Add ability to choose the builder in make_vms.com [Schweda]
- Add DESTDIR support to mingw32 win32/Makefile.gcc
- Fix comments in win32/Makefile.gcc for proper usage
- Allow overriding the default install locations for cmake
- Generate and install the pkg-config file with cmake
- Build both a static and a shared version of zlib with cmake
- Include version symbols for cmake builds
- If using cmake with MSVC, add the source directory to the includes
- Remove unneeded EXTRA_CFLAGS from win32/Makefile.gcc [Truta]
- Move obsolete emx makefile to old [Truta]
- Allow the use of -Wundef when compiling or using zlib
- Avoid the use of the -u option with mktemp
- Improve inflate() documentation on the use of Z_FINISH
- Recognize clang as gcc
- Add gzopen_w() in Windows for wide character path names
- Rename zconf.h in CMakeLists.txt to move it out of the way
- Add source directory in CMakeLists.txt for building examples
- Look in build directory for zlib.pc in CMakeLists.txt
- Remove gzflags from zlibvc.def in vc9 and vc10
- Fix contrib/minizip compilation in the MinGW environment
- Update ./configure for Solaris, support --64 [Mooney]
- Remove -R. from Solaris shared build (possible security issue)
- Avoid race condition for parallel make (-j) running example
- Fix type mismatch between get_crc_table() and crc_table
- Fix parsing of version with "-" in CMakeLists.txt [Snider, Ziegler]
- Fix the path to zlib.map in CMakeLists.txt
- Force the native libtool in Mac OS X to avoid GNU libtool [Beebe]
- Add instructions to win32/Makefile.gcc for shared install [Torri]
Changes in 1.2.6.1 (12 Feb 2012)
- Avoid the use of the Objective-C reserved name "id"
- Include io.h in gzguts.h for Microsoft compilers
- Fix problem with ./configure --prefix and gzgetc macro
- Include gz_header definition when compiling zlib solo
- Put gzflags() functionality back in zutil.c
- Avoid library header include in crc32.c for Z_SOLO
- Use name in GCC_CLASSIC as C compiler for coverage testing, if set
- Minor cleanup in contrib/minizip/zip.c [Vollant]
- Update make_vms.com [Zinser]
- Remove unnecessary gzgetc_ function
- Use optimized byte swap operations for Microsoft and GNU [Snyder]
- Fix minor typo in zlib.h comments [Rzesniowiecki]
Changes in 1.2.6 (29 Jan 2012)
- Update the Pascal interface in contrib/pascal
- Fix function numbers for gzgetc_ in zlibvc.def files
- Fix configure.ac for contrib/minizip [Schiffer]
- Fix large-entry detection in minizip on 64-bit systems [Schiffer]
- Have ./configure use the compiler return code for error indication
- Fix CMakeLists.txt for cross compilation [McClure]
- Fix contrib/minizip/zip.c for 64-bit architectures [Dalsnes]
- Fix compilation of contrib/minizip on FreeBSD [Marquez]
- Correct suggested usages in win32/Makefile.msc [Shachar, Horvath]
- Include io.h for Turbo C / Borland C on all platforms [Truta]
- Make version explicit in contrib/minizip/configure.ac [Bosmans]
- Avoid warning for no encryption in contrib/minizip/zip.c [Vollant]
- Minor cleanup up contrib/minizip/unzip.c [Vollant]
- Fix bug when compiling minizip with C++ [Vollant]
- Protect for long name and extra fields in contrib/minizip [Vollant]
- Avoid some warnings in contrib/minizip [Vollant]
- Add -I../.. -L../.. to CFLAGS for minizip and miniunzip
- Add missing libs to minizip linker command
- Add support for VPATH builds in contrib/minizip
- Add an --enable-demos option to contrib/minizip/configure
- Add the generation of configure.log by ./configure
- Exit when required parameters not provided to win32/Makefile.gcc
- Have gzputc return the character written instead of the argument
- Use the -m option on ldconfig for BSD systems [Tobias]
- Correct in zlib.map when deflateResetKeep was added
Changes in 1.2.5.3 (15 Jan 2012)
- Restore gzgetc function for binary compatibility
- Do not use _lseeki64 under Borland C++ [Truta]
- Update win32/Makefile.msc to build test/*.c [Truta]
- Remove old/visualc6 given CMakefile and other alternatives
- Update AS400 build files and documentation [Monnerat]
- Update win32/Makefile.gcc to build test/*.c [Truta]
- Permit stronger flushes after Z_BLOCK flushes
- Avoid extraneous empty blocks when doing empty flushes
- Permit Z_NULL arguments to deflatePending
- Allow deflatePrime() to insert bits in the middle of a stream
- Remove second empty static block for Z_PARTIAL_FLUSH
- Write out all of the available bits when using Z_BLOCK
- Insert the first two strings in the hash table after a flush
Changes in 1.2.5.2 (17 Dec 2011)
- fix ld error: unable to find version dependency 'ZLIB_1.2.5'
- use relative symlinks for shared libs
- Avoid searching past window for Z_RLE strategy
- Assure that high-water mark initialization is always applied in deflate
- Add assertions to fill_window() in deflate.c to match comments
- Update python link in README
- Correct spelling error in gzread.c
- Fix bug in gzgets() for a concatenated empty gzip stream
- Correct error in comment for gz_make()
- Change gzread() and related to ignore junk after gzip streams
- Allow gzread() and related to continue after gzclearerr()
- Allow gzrewind() and gzseek() after a premature end-of-file
- Simplify gzseek() now that raw after gzip is ignored
- Change gzgetc() to a macro for speed (~40% speedup in testing)
- Fix gzclose() to return the actual error last encountered
- Always add large file support for windows
- Include zconf.h for windows large file support
- Include zconf.h.cmakein for windows large file support
- Update zconf.h.cmakein on make distclean
- Merge vestigial vsnprintf determination from zutil.h to gzguts.h
- Clarify how gzopen() appends in zlib.h comments
- Correct documentation of gzdirect() since junk at end now ignored
- Add a transparent write mode to gzopen() when 'T' is in the mode
- Update python link in zlib man page
- Get inffixed.h and MAKEFIXED result to match
- Add a ./config --solo option to make zlib subset with no libary use
- Add undocumented inflateResetKeep() function for CAB file decoding
- Add --cover option to ./configure for gcc coverage testing
- Add #define ZLIB_CONST option to use const in the z_stream interface
- Add comment to gzdopen() in zlib.h to use dup() when using fileno()
- Note behavior of uncompress() to provide as much data as it can
- Add files in contrib/minizip to aid in building libminizip
- Split off AR options in Makefile.in and configure
- Change ON macro to Z_ARG to avoid application conflicts
- Facilitate compilation with Borland C++ for pragmas and vsnprintf
- Include io.h for Turbo C / Borland C++
- Move example.c and minigzip.c to test/
- Simplify incomplete code table filling in inflate_table()
- Remove code from inflate.c and infback.c that is impossible to execute
- Test the inflate code with full coverage
- Allow deflateSetDictionary, inflateSetDictionary at any time (in raw)
- Add deflateResetKeep and fix inflateResetKeep to retain dictionary
- Fix gzwrite.c to accommodate reduced memory zlib compilation
- Have inflate() with Z_FINISH avoid the allocation of a window
- Do not set strm->adler when doing raw inflate
- Fix gzeof() to behave just like feof() when read is not past end of file
- Fix bug in gzread.c when end-of-file is reached
- Avoid use of Z_BUF_ERROR in gz* functions except for premature EOF
- Document gzread() capability to read concurrently written files
- Remove hard-coding of resource compiler in CMakeLists.txt [Blammo]
Changes in 1.2.5.1 (10 Sep 2011)
- Update FAQ entry on shared builds (#13)
- Avoid symbolic argument to chmod in Makefile.in
- Fix bug and add consts in contrib/puff [Oberhumer]
- Update contrib/puff/zeros.raw test file to have all block types
- Add full coverage test for puff in contrib/puff/Makefile
- Fix static-only-build install in Makefile.in
- Fix bug in unzGetCurrentFileInfo() in contrib/minizip [Kuno]
- Add libz.a dependency to shared in Makefile.in for parallel builds
- Spell out "number" (instead of "nb") in zlib.h for total_in, total_out
- Replace $(...) with `...` in configure for non-bash sh [Bowler]
- Add darwin* to Darwin* and solaris* to SunOS\ 5* in configure [Groffen]
- Add solaris* to Linux* in configure to allow gcc use [Groffen]
- Add *bsd* to Linux* case in configure [Bar-Lev]
- Add inffast.obj to dependencies in win32/Makefile.msc
- Correct spelling error in deflate.h [Kohler]
- Change libzdll.a again to libz.dll.a (!) in win32/Makefile.gcc
- Add test to configure for GNU C looking for gcc in output of $cc -v
- Add zlib.pc generation to win32/Makefile.gcc [Weigelt]
- Fix bug in zlib.h for _FILE_OFFSET_BITS set and _LARGEFILE64_SOURCE not
- Add comment in zlib.h that adler32_combine with len2 < 0 makes no sense
- Make NO_DIVIDE option in adler32.c much faster (thanks to John Reiser)
- Make stronger test in zconf.h to include unistd.h for LFS
- Apply Darwin patches for 64-bit file offsets to contrib/minizip [Slack]
- Fix zlib.h LFS support when Z_PREFIX used
- Add updated as400 support (removed from old) [Monnerat]
- Avoid deflate sensitivity to volatile input data
- Avoid division in adler32_combine for NO_DIVIDE
- Clarify the use of Z_FINISH with deflateBound() amount of space
- Set binary for output file in puff.c
- Use u4 type for crc_table to avoid conversion warnings
- Apply casts in zlib.h to avoid conversion warnings
- Add OF to prototypes for adler32_combine_ and crc32_combine_ [Miller]
- Improve inflateSync() documentation to note indeterminancy
- Add deflatePending() function to return the amount of pending output
- Correct the spelling of "specification" in FAQ [Randers-Pehrson]
- Add a check in configure for stdarg.h, use for gzprintf()
- Check that pointers fit in ints when gzprint() compiled old style
- Add dummy name before $(SHAREDLIBV) in Makefile [Bar-Lev, Bowler]
- Delete line in configure that adds -L. libz.a to LDFLAGS [Weigelt]
- Add debug records in assmebler code [Londer]
- Update RFC references to use http://tools.ietf.org/html/... [Li]
- Add --archs option, use of libtool to configure for Mac OS X [Borstel]
Прошу любить и жаловать, Ваш Добро пожаловать в наш Чат в Telegram
Я вообще не пойму откуда у меня компиляция происходит.
Я обновил zlib на 1.2.8 в MinGW и в PSPSDK. Компилируется всё так же нормально.
Но пробовал переименовать zlib.a и zlib.h - всё равно компилируется нормально. Что за чудеса?
Прошу любить и жаловать, Ваш Добро пожаловать в наш Чат в Telegram
мусор при запаковке победил
интересная вещь, последние 4 байта декриптованого стаффа не нули.. что же они значат?
/upd
Очень интересно. Хедеры подбираются по 0x70 оффсету в Kirk хедере. В нем хранится размер закриптованого DATA.PSP.
Этот оффсет с выравниванием и поправками (хз зачем, но получается верно) сравнивается с размером считанного elf и подбирается подходящий хедер.
Я вот не пойму почему размер ELF меряется с размером криптованого файла?!
Последний раз редактировалось frostegater; 03.05.2013 в 17:36.
/upd
Очень интересно. Хедеры подбираются по 0x70 оффсету в Kirk хедере. В нем хранится размер закриптованого DATA.PSP.
Этот оффсет с выравниванием и поправками (хз зачем, но получается верно) сравнивается с размером считанного elf и подбирается подходящий хедер.
Ну так я об чём писал здесь и здесь и ещё одну строчку здесь.
Я уже по нескольку раз здесь переписал диссертацию, а вы по ходу её не читали
Сообщение от frostegater
интересная вещь, последние 4 байта декриптованого стаффа не нули.. что же они значат?
Они не всегда 4 байта. Это зависит от размера архива. При архивировании архив забивается нулями по размеру 0x70 в кирке и в конец добавляются какие-то байты, я встречал до 8-ми байт. Скорее всего контрольные суммы блоков.
И потом, после подписывания ты наверное проверяешь и декриптуешь. Но декриптер тебе выдаёт уже разархивированный файл, поэтому сам архив ты не видишь, как он выглядет внутри и сколько места занимает. Я уже писал вот здесь (Ликбез №2), что лучше в исходниках PrxDecrypter (не путать с Энкриптером) пофиксить расжатие 1F8B и он не будет разархивировать, а только декриптовать. Тогда ты сможешь подсмотреть, как сжимает Энкриптер в архив, сколько места занимает, на сколько добиватся нулями и что дописывает в конце. Конец архива GZ найдёшь по размеру декриптованного файла. - Поэтому я и говорю, что Astonishia Энкриптер не в состоянии ужать до исходника.
Сообщение от frostegater
Я вот не пойму почему размер ELF меряется с размером криптованого файла?!
Я думаю, что он сначала ищет по psp_header, затем проверяет по kirk-header, если кирк не подходит, то он снова отправляется в поиск по psp-header. То есть зацикленный круг, пока не сойдётся. Я тоже сначала полумал, с какой стати он из обработки кирка начинает искать в psp-header.
Прошу любить и жаловать, Ваш Добро пожаловать в наш Чат в Telegram
ErikPshat, ну дак ты пишешь жидко, среди твоего рассуждения истину искать что иголку в стоге сена.
Для начала нужно устроить мега-компрессию. 7-zip юзает стандартную zlib библиотеку. Я нашел объявление функции сжатия:
ZEXTERN int ZEXPORT deflateInit2 OF((z_streamp strm,
int level,
int method,
int windowBits,
int memLevel,
int strategy));
method
The method parameter is the compression method. It must be Z_DEFLATED in this version of the library.
windowBits
The windowBits parameter is the base two logarithm of the window size (the size of the history buffer). It should be in the range 8..15 for this version of the library. Larger values of this parameter result in better compression at the expense of memory usage. The default value is 15 if deflateInit is used instead
windowBits can also be –8..–15 for raw deflate. In this case, -windowBits determines the window size. deflate() will then generate raw deflate data with no zlib header or trailer, and will not compute an adler32 check value.
windowBits can also be greater than 15 for optional gzip encoding. Add 16 to windowBits to write a simple gzip header and trailer around the compressed data instead of a zlib wrapper. The gzip header will have no file name, no extra data, no comment, no modification time (set to zero), no header crc, and the operating system will be set to 255 (unknown). If a gzip stream is being written, strm->adler is a crc32 instead of an adler32.
memLevel
The memLevel parameter specifies how much memory should be allocated for the internal compression state. memLevel=1 uses minimum memory but is slow and reduces compression ratio; memLevel=9 uses maximum memory for optimal speed. The default value is 8. See zconf.h for total memory usage as a function of windowBits and memLevel.
strategy
The strategy parameter is used to tune the compression algorithm. Use the value Z_DEFAULT_STRATEGY for normal data, Z_FILTERED for data produced by a filter (or predictor), Z_HUFFMAN_ONLY to force Huffman encoding only (no string match), or Z_RLE to limit match distances to one (run-length encoding). Filtered data consists mostly of small values with a somewhat random distribution. In this case, the compression algorithm is tuned to compress them better. The effect of Z_FILTERED is to force more Huffman coding and less string matching; it is somewhat intermediate between Z_DEFAULT_STRATEGY and Z_HUFFMAN_ONLY. Z_RLE is designed to be almost as fast as Z_HUFFMAN_ONLY, but give better compression for PNG image data. The strategy parameter only affects the compression ratio but not the correctness of the compressed output even if it is not set appropriately. Z_FIXED prevents the use of dynamic Huffman codes, allowing for a simpler decoder for special applications.
у нас стоит
deflateInit2(&strm,
9, // максимальный насколько я понимаю
Z_DEFLATED, // метод DEFLATED он в этой либе такой всегда
15+16,
8, // это размер памяти который будет выделен на внутрение операции (в уровнях, 8 по дефолту)
Z_DEFAULT_STRATEGY // алгоритм сжатия
);
Скажи мне какие параметры должны быть для максимального сжатия? Вроде они такие как и должны быть.
frostegater, да, я уже 100500 раз перечитыл исходники, изучил метод компрессии zlib
К сожалению тут всё выставлено на максимум и алгоритм deflateInit2 самый расширенный, поэтому не знаю даже куда копать.
Можно ещё memLevel=9 выставить, он у меня так и проставлено, но это на большее сжатие вроде не влияет.
Единственно тут не хватает сжатия по словарю, как в 7-Zip:
Changes in 1.2.5.2 (17 Dec 2011)
- Allow deflateSetDictionary, inflateSetDictionary at any time (in raw)
- Add deflateResetKeep and fix inflateResetKeep to retain dictionary
- Fix gzwrite.c to accommodate reduced memory zlib compilation
Кстати, выше я скомпилировал zlib-1.2.8 для Win32, а оказывается нужно было под Unix, но у меня так выползает непонятная ошибка. Поэтому выкладываю zlib-1.2.7
Может как-то подключить либу 7z?
Прошу любить и жаловать, Ваш Добро пожаловать в наш Чат в Telegram
После подписи Astonishia виснет на Now Loading, не вырубается.
Значит она запускается и это нормально. Просто с Астонишией должен в комплекте быть ещё один файл ресурсов "ASTO.DRM" (15 Мб), который она должна запускать. У тебя его по видимому нету. Хотя у меня оригинал и с этим файлом висит на Now Loading, может сам что-то не так проверял.
А сам EBOOT.PBP - это всего лишь лоадер.
Подбираем заголовок сравнивая 0x28 оффсет в pspHeader с размером исходного эльфа.
Пакуем 7-zip'ом через прямой вызов system.
Сравниваем размер архива с оффсетом 0xB0 в pspHeader. На сколько я понимаю, этот размер включает ~PSP хедер.
Если не проходит, то возвращаемся к 1 пункту.
Сделал 2 батничка на ELF и EBOOT подписывание. Только не могу все лишние exe уложить в Utils. unpack-pbp не хочет работать с относительными путями.
В общем.. доделаешь. Будет баг, стучи. http://rghost.ru/45825803
Декриптую без расжатия - получаю архив GZ (1F8B0808) = 368196 байта - внутри архива палится название temp.uncompressed
По размеру декриптованного файла 0хEF008 нахожу настоящий конец архива = 366578 байта настоящий архив.
Расжимаю в ELF = 978952 байта
Ну сжался получается прямо почти копейка в копейку. На 1618 байта меньше оригинального сжатия.
Astonishia запускается и работает замечательно!
Декриптую без расжатия - получаю архив GZ (1F8B0808) = 368196 байта - внутри архива палится название temp.uncompressed
По размеру декриптованного файла 0хEF008 нахожу настоящий конец архива = 19030 байта настоящий архив, в конце забитый только нулями, а не как было раньше - забитый остатками ELF-файла.
Расжимаю в ELF = 978952 байта, конец забит нулями очень много )))
В общем всё чётко, всё работает как надо.
Прошу любить и жаловать, Ваш Добро пожаловать в наш Чат в Telegram
Последний раз редактировалось ErikPshat; 08.05.2013 в 19:41.