PSPx форум

PSPx форум (https://www.pspx.ru/forum/index.php)
-   PSP хакинг и девелопмент (https://www.pspx.ru/forum/forumdisplay.php?f=195)
-   -   PrxEncrypter Mod v1.0.0.1 - Full Range Demo Game Sign (https://www.pspx.ru/forum/showthread.php?t=103580)

ErikPshat 25.04.2013 12:26

PrxEncrypter Mod v1.0.0.1 - Full Range Demo Game Sign
 
Вложений: 3
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 на официальных прошивках...


Как им пользоваться?
  1. Скачайте и разархивируйте архив с энкриптером: PrxEncrypterMod_(103-Demo-Games).zip
  2. В папку "PrxEncrypter Mod" скопируйте для подписываения файлы EBOOT.PBP, DATA.PSP или EBOOT.BIN. Так же, чтобы сразу собралась подписанная программа со всеми ресурсами, можете в папку добавить файлы ICON0.PNG ICON1.PNG PIC0.PNG PIC1.PNG SND0.AT3 DATA.PSAR.
  3. Запустите программу "PrxEncrypterMod.exe" для подписи.
  4. Заберите создавшуюся папку "SIGNED GAME" с подписанным EBOOT.PBP и положите её на карту памяти в папку ms0(ef0):/PSP/GAME/
    Папку можете переименовать по названию вашей игры или программы.
Changelog PrxEncrypterMod:
  • Добавлено 100 заголовков от демоверсий для подписи, к 3-ём ранее имеющимся. Итого 103 заголовка.
  • Добавлена проверка на ~PSP и ELF
  • Заменён механизм сжатия в GZIP библиотекой zlib на консольный 7-Zip.
  • Исправлен баг, когда файл всегда подписывался бОльшим заголовком, чем он сам, несмотря на используемое сжатие. То есть, даже если файл сжимался намного меньшим размером и свободно помещался в меньший заголовок, то заголовок всё равно брался бОльший, чем несжатый файл.
  • Автоматизирован процесс подписи.



Таблица включённых в PrxEncrypter заголовков по алфавиту:
Таблица демонстрационных игр, выпущенных для Sony PSP (по алфавиту)
Наименование игрыDISC_IDРегионПОДата релиза ГГГГ.ММ.ДДТег шифрованияКате-
гория
Размер
GZIP 0xB0
Размер
ELF 0x28
Размер DATA.PSP
1Airport Hero NaHa DemoULJM05171:JPN:3.402007.05.300xADF305F0MG8 249 2848 249 2848 249 632
2Airport Hero Narita DemoULJM05128:JPN:3.402007.05.290xADF305F0MG8 360 6018 360 6018 360 944
3Ape Academy 2 DemoUCES00302:EUR:2.812006.11.030xADF305F0MG7 657 8247 657 8247 658 160
4Ape Escape Racing DemoUCJS10032:JPN:2.822006.09.250xADF305F0MG8 149 1108 149 1108 149 456
5Ape Escape: Saru Saru DemoUCJS10060:JPN:3.502007.06.290xADF305F0MG6 805 3366 805 3366 805 680
6Astonishia Story 2 DemoULKS46142:KOR:3.902008.03.200xADF305F0MG368 196978 952368 544
7Bleach: Heat the Soul 5 DemoNPJG90020:JPN:3.902008.04.210xADF305F0MG5 737 5307 756 3285 737 872
8Bleach: Soul Carnival 2NPJG90041:JPN:5.002009.05.160xADF305F0MG810 6492 678 576810 992
9Blokus Club Portable DemoULJS00068:JPN:2.812006.10.290xADF305F0MG6 158 4126 158 4126 158 752
10Bounty Hounds DemoULJS00021:JPN:2.802006.09.300xADF305F0MG8 085 3408 085 3408 085 680
11Brain Trainer Portable 2 DemoULJM05126:JPN:3.402007.05.290xADF305F0MG5 245 5715 245 5715 245 920
12Computer Science 1 DemoULJM05135:JPN:3.402007.05.240xADF305F0MG5 417 9985 417 9985 418 336
13Computer Science 2 DemoULJM05189:JPN:3.402007.05.240xADF305F0MG5 456 4365 456 4365 456 784
14DJ Max Portable 2 DemoULKS46116:KOR:3.112007.03.260xADF305F0MG7 922 0387 922 0387 922 384
15Doko: Let's Gakkou! DemoUCJS10039:JPN:3.402007.04.260xADF305F0MG5 627 0005 627 0005 627 344
16Dokusho 2 DemoULJM05393:JPN:4.052008.10.080xADF305F0MG6 652 91113 723 3486 653 248
17Dungeon Explorer DemoULJM05164:JPN:3.512007.09.200xADF305F0MG4 960 8998 227 6444 961 248
18Dungeon Explorer DemoULUS10289:USA:3.902008.03.200xADF305F0MG4 946 7048 253 2364 947 040
19Dungeon Explorer Famitsu DemoULJM05164:JPN:3.732007.12.240xADF305F0MG5 031 8608 345 2925 032 208
20Dynasty Warriors: StrikeforceULJM91017:JPN:5.032009.02.170xADF305F0MG1 457 8384 406 7161 458 176
21echochrome DemoNPJG90019:JPN:3.902008.03.060xADF305F0MG3 913 0927 861 2323 913 440
22echochrome DemoNPHG00005:HKG:3.902008.03.140xADF305F0MG3 864 5997 855 2403 864 944
23Everybody's Sukkiri #1NPJG90047:JPN:5.512009.07.170xADF305F0MG429 8331 119 380430 176
24Everybody's Sukkiri #2NPJG90047:JPN:5.512009.07.310xADF305F0MG511 3911 368 996511 728
25Everybody's Sukkiri #3NPJG90047:JPN:5.512009.09.030xADF305F0MG492 5331 334 524492 880
26Everybody's Sukkiri #4NPJG90047:JPN:5.512009.09.110xADF305F0MG497 0451 341 124497 392
27Everyone in Reading DemoULJM05352:JPN:3.952008.06.190xADF305F0MG5 743 59014 565 4685 743 936
28Exit 2 DemoULJM05161:JPN:2.802006.10.290xADF305F0MG8 089 6408 089 6408 089 984
29Full Auto 2 DemoNPUH90001:USA:3.402007.05.110xADF305F0MG7 799 6687 799 6687 800 016
30Go! Sudoku DemoUCJS10036:JPN:2.712006.06.010x0C000000MG5 735 2205 735 2205 735 568
31Gurumin DemoULJM05123:JPN:3.402007.05.240xADF305F0MG8 223 4728 223 4728 223 808
32Half-Minute Hero 2 Demo #1NPJH90170:JPN:6.312010.11.050xADF305F0MG6 908 8628 055 6926 909 200
33Hello Kitty no Happy AccessoryULJM05469:JPN:5.032009.05.120xADF305F0MG6 107 6069 282 3566 107 952
34Hitman Reborn 2NPJH90061:JPN:5.512009.09.010xADF305F0MG5 396 43513 957 1045 396 784
35Hitman Reborn DemoNPJH90007:USA:4.052008.08.270xADF305F0MG6 254 01813 876 3046 254 368
36Hitman Reborn TagNPJH90081:JPN:6.202010.01.250xADF305F0MG6 449 7359 045 5926 450 080
37Homestar Portable DemoULJM05184:JPN:3.402007.05.290xADF305F0MG7 299 9507 299 9507 300 288
38Hot Pixel DemoULED90025:EUR:3.502007.06.290xADF305F0MG8 241 5928 241 5928 241 936
39Hot Shots Golf 2 Demo #1UCJS10075:JPN:3.802008.02.010xADF305F0MG7 975 3579 791 9887 975 696
40Hot Shots Golf 2 Demo #2UCJS10075:JPN:3.802008.02.010xADF305F0MG8 327 18110 187 0288 327 520
41Hototogisu Ran DemoULJS00159:JPN:4.052008.10.240xADF305F0MG4 940 7207 469 3124 941 056
42Ikuze! Gen-San DemoULJS00141:JPN:3.952008.05.090xADF305F0MG5 468 0597 695 6845 468 400
43Infinite Loop DemoNPJH90004:JPN:3.952008.07.180xADF305F0MG8 383 03712 548 1568 383 376
44Intelligent License 2 DemoULJS00087:JPN:3.402007.05.240xADF305F0MG6 524 3986 524 3986 524 736
45Kanji Trainer Portable DemoULJM05201:JPN:3.402007.05.290xADF305F0MG6 320 0646 320 0646 320 400
46Killzone: Liberation DemoUCES00279:EUR:3.022007.01.020xADF305F0MG8 008 5368 008 5368 008 880
47Killzone: Liberation DemoUCUS98646:USA:3.012007.01.020xADF305F0MG8 008 6168 008 6168 008 960
48LocoRoco Demo #1UCJS10041:JPN:2.712006.04.240x0C000000MG8 004 5748 004 5748 004 912
49LocoRoco Demo #1UCKS45020:KOR:2.712006.04.250x0C000000MG7 944 9267 944 9267 945 264
50LocoRoco Demo #1UCAS40063:HKG:2.712006.04.250x0C000000MG8 084 5108 084 5108 084 848
51LocoRoco Demo #1UCUS98662:USA:2.712006.04.250x0C000000MG8 183 8068 183 8068 184 144
52LocoRoco Demo #1UCES00304:EUR:2.712006.04.250x0C000000MG8 185 7508 185 7508 186 096
53LocoRoco Demo #2UCJS10041:JPN:2.802006.10.260xADF305F0MG8 347 5508 347 5508 347 888
54LocoRoco Demo #3UCAS40063:HKG:2.822006.10.290xADF305F0MG8 233 8068 233 8068 234 144
55LocoRoco Demo #3UCUS98662:USA:2.822006.10.290xADF305F0MG8 289 2628 289 2628 289 600
56LocoRoco Demo #3UCES00304:EUR:2.802006.10.290xADF305F0MG8 316 5508 316 5508 316 896
57LocoRoco Demo #3UCKS45020:KOR:2.822006.10.300xADF305F0MG8 087 6228 087 6228 087 968
58LocoRoco Demo #4UCKS45020:KOR:3.022006.12.110xADF305F0MG7 933 7427 933 7427 934 080
59LocoRoco Demo #4UCJS10041:JPN:3.022006.12.110xADF305F0MG7 950 5747 950 5747 950 912
60LocoRoco Demo #4UCAS40063:HKG:3.022006.12.110xADF305F0MG8 050 8068 050 8068 051 152
61LocoRoco Demo #4UCUS98662:USA:3.022006.12.110xADF305F0MG8 113 5428 113 5428 113 888
62LocoRoco Demo #4UCED90007:EUR:3.022006.12.110xADF305F0MG8 122 7188 122 7188 123 056
63LocoRoco Demo #5UCJS10041:JPN:3.402007.04.270xADF305F0MG7 134 6787 134 6787 135 024
64Lumines 2 DemoULJM05232:JPN:3.112007.04.270xADF305F0MG7 630 4367 630 4367 630 784
65Mawaskes DemoULJS00105:JPN:3.512007.07.250xADF305F0MG6 167 1757 995 2526 167 520
66Medal of Honor: Heroes DemoULED90008:EUR:3.032007.02.020xADF305F0MG6 799 9366 799 9366 800 272
67Mercury Meltdown Demo #1UCJS10043:JPN:2.802006.07.280xADF305F0MG6 817 3486 817 3486 817 696
68Mercury Meltdown Demo #2ULED90018:EUR:2.802006.12.250xADF305F0MG6 767 1086 767 1086 767 456
69Metal Gear Solid: Portable Ops DemoULED90040:EUR:3.402007.05.120xADF305F0MG6 563 5246 563 5246 563 872
70MLB 07 DemoUCUS98667:USA:3.302007.05.020xADF305F0MG5 781 6445 781 6445 781 984
71Monster Hunter Portable 2nd G TrailerULJM05500:JPN:1.002007.12.260xADF305F0MG4 784 4745 145 1884 784 816
72Moto GP DemoUCES00373:EUR:2.802006.10.270xADF305F0MG8 271 5528 271 5528 271 888
73NBA 07 DemoUCUS98644:USA:3.032007.04.060xADF305F0MG7 127 8847 127 8847 128 224
74NBA 08 DemoUCUS98699:USA:3.712007.12.050xADF305F0MG1 772 2645 881 5321 772 608
75Neo Angelique Special DemoNPJH90010:JPN:4.052008.09.120xADF305F0MG3 868 7934 167 3203 869 136
76Onore no Shinzuru Michi wo YukeNPJH90034:JPN:5.032009.04.170xADF305F0MG3 251 6589 286 1563 252 000
77Otsugea Uranai na Desu DemoULJM05409:JPN:5.012008.12.040xADF305F0MG5 799 28111 721 1005 799 632
78Phantasy Star PortableULJM91014:JPN:3.952008.07.110xADF305F0MG2 417 7496 735 4882 418 096
79Ridge Racer 2 DemoUCES00422:EUR:2.812006.10.200xADF305F0MG6 687 7486 687 7486 688 096
80R-Type Tactics 2: Operation Bitter Chocolate ver. AULJS00233:JPN:5.512009.09.240xADF305F0MG8 272 69311 715 2048 273 040
81R-Type Tactics 2: Operation Bitter Chocolate ver. BULJS00233:JPN:6.002009.10.080xADF305F0MG7 165 57610 410 5967 165 920
82R-Type Tactics 2: Operation Bitter Chocolate ver. CULJS00233:JPN:6.102009.11.230xADF305F0MG7 877 64011 405 3967 877 984
83Shichoka Crossword DemoULJM05168:JPN:3.402007.05.290xADF305F0MG7 536 4647 536 4647 536 800
84Smash Court Tennis 3 DemoUCED90036:EUR:3.402007.06.080xADF305F0MG2 665 7402 665 7402 666 080
85Socom Fireteam Bravo 2 Demo #1UCUS98645:USA:3.502007.05.160xADF305F0MG4 553 8764 553 8764 554 224
86Socom Fireteam Bravo 2 Demo #2UCED90042:EUR:3.502007.06.290xADF305F0MG5 930 5738 870 7245 930 912
87Space Invaders Extreme DemoULJM05315:JPN:3.802008.02.180xADF305F0MG5 103 9186 284 4565 104 256
88Syphon Filter: Dark Mirror DemoUCUS98641:USA:3.032007.02.160xADF305F0MG7 452 5607 452 5607 452 896
89The Legend of Heroes: Trails in the SkyULJM05170:JPN:3.402007.05.240xADF305F0MG7 891 3767 891 3767 891 712
90ToCA Race Driver 3 DemoULED90009:EUR:3.032007.02.090xADF305F0MG3 400 2243 400 2243 400 560
91Umihara Kawase DemoULJS00137:JPN:3.902008.03.140xADF305F0MG3 125 2589 288 4443 125 600
92Valhalla Knights 2 DemoULJS00138:JPN:3.952008.05.190xADF305F0MG5 327 41112 722 5405 327 760
93Warhammer 40k Squad Command DemoULUD90004:USA:3.712007.10.240xADF305F0MG6 537 95910 703 8966 538 304
94Warhammer 40k Squad Command DemoNPEH90001:EUR:3.522007.10.290xADF305F0MG6 537 95910 703 8966 538 304
95What Did I Do To Deserve This, My LordNPJG90009:JPN:3.722007.11.150xADF305F0MG3 725 4398 141 7723 725 776
96World Tour Soccer 06 DemoUCES00206:EUR:2.802006.07.270xADF305F0MG5 583 6165 583 6165 583 952
97World Tour Soccer 2 DemoUCUS98631:USA:2.802006.07.270xADF305F0MG5 583 0565 583 0565 583 392
98Worms Open Warfare 2 DemoULED90045:EUR:3.522007.08.170xADF305F0MG4 411 2797 732 9724 411 616
99Xyanide: Resurrection DemoULED90043:EUR:3.502007.06.150xADF305F0MG8 296 2688 296 2688 296 608
100Yuusha 30 #1NPJH90024:JPN:5.022009.02.130xADF305F0MG6 175 0856 792 8766 175 424
101Yuusha 30 #2NPJH90026:JPN:5.032009.03.260xADF305F0MG7 165 4467 709 7247 165 792
102Yuusha 30 #3NPJH90025:JPN:5.032009.04.280xADF305F0MG5 312 1945 677 2285 312 544
103Yuusha 30 #4NPJH90027:JPN:5.032009.05.220xADF305F0MG6 936 9927 575 0526 937 328

Таблица включённых в PrxEncrypter заголовков по размеру DATA.PSP:
Таблица демонстрационных игр, выпущенных для Sony PSP (по размеру DATA.PSP)
Наименование игрыDISC_IDРегионПОДата релиза ГГГГ.ММ.ДДТег шифрованияКате-
гория
Размер
GZIP 0xB0
Размер
ELF 0x28
Размер DATA.PSP
1Astonishia Story 2 DemoULKS46142:KOR:3.902008.03.200xADF305F0MG368 196978 952368 544
2Everybody's Sukkiri #1NPJG90047:JPN:5.512009.07.170xADF305F0MG429 8331 119 380430 176
3Everybody's Sukkiri #3NPJG90047:JPN:5.512009.09.030xADF305F0MG492 5331 334 524492 880
4Everybody's Sukkiri #4NPJG90047:JPN:5.512009.09.110xADF305F0MG497 0451 341 124497 392
5Everybody's Sukkiri #2NPJG90047:JPN:5.512009.07.310xADF305F0MG511 3911 368 996511 728
6Bleach: Soul Carnival 2NPJG90041:JPN:5.002009.05.160xADF305F0MG810 6492 678 576810 992
7Dynasty Warriors: StrikeforceULJM91017:JPN:5.032009.02.170xADF305F0MG1 457 8384 406 7161 458 176
8NBA 08 DemoUCUS98699:USA:3.712007.12.050xADF305F0MG1 772 2645 881 5321 772 608
9Phantasy Star PortableULJM91014:JPN:3.952008.07.110xADF305F0MG2 417 7496 735 4882 418 096
10Smash Court Tennis 3 DemoUCED90036:EUR:3.402007.06.080xADF305F0MG2 665 7402 665 7402 666 080
11Umihara Kawase DemoULJS00137:JPN:3.902008.03.140xADF305F0MG3 125 2589 288 4443 125 600
12Onore no Shinzuru Michi wo YukeNPJH90034:JPN:5.032009.04.170xADF305F0MG3 251 6589 286 1563 252 000
13ToCA Race Driver 3 DemoULED90009:EUR:3.032007.02.090xADF305F0MG3 400 2243 400 2243 400 560
14What Did I Do To Deserve This, My LordNPJG90009:JPN:3.722007.11.150xADF305F0MG3 725 4398 141 7723 725 776
15echochrome DemoNPHG00005:HKG:3.902008.03.140xADF305F0MG3 864 5997 855 2403 864 944
16Neo Angelique Special DemoNPJH90010:JPN:4.052008.09.120xADF305F0MG3 868 7934 167 3203 869 136
17echochrome DemoNPJG90019:JPN:3.902008.03.060xADF305F0MG3 913 0927 861 2323 913 440
18Worms Open Warfare 2 DemoULED90045:EUR:3.522007.08.170xADF305F0MG4 411 2797 732 9724 411 616
19Socom Fireteam Bravo 2 Demo #1UCUS98645:USA:3.502007.05.160xADF305F0MG4 553 8764 553 8764 554 224
20Monster Hunter Portable 2nd G TrailerULJM05500:JPN:1.002007.12.260xADF305F0MG4 784 4745 145 1884 784 816
21Hototogisu Ran DemoULJS00159:JPN:4.052008.10.240xADF305F0MG4 940 7207 469 3124 941 056
22Dungeon Explorer DemoULUS10289:USA:3.902008.03.200xADF305F0MG4 946 7048 253 2364 947 040
23Dungeon Explorer DemoULJM05164:JPN:3.512007.09.200xADF305F0MG4 960 8998 227 6444 961 248
24Dungeon Explorer Famitsu DemoULJM05164:JPN:3.732007.12.240xADF305F0MG5 031 8608 345 2925 032 208
25Space Invaders Extreme DemoULJM05315:JPN:3.802008.02.180xADF305F0MG5 103 9186 284 4565 104 256
26Brain Trainer Portable 2 DemoULJM05126:JPN:3.402007.05.290xADF305F0MG5 245 5715 245 5715 245 920
27Yuusha 30 #3NPJH90025:JPN:5.032009.04.280xADF305F0MG5 312 1945 677 2285 312 544
28Valhalla Knights 2 DemoULJS00138:JPN:3.952008.05.190xADF305F0MG5 327 41112 722 5405 327 760
29Hitman Reborn 2NPJH90061:JPN:5.512009.09.010xADF305F0MG5 396 43513 957 1045 396 784
30Computer Science 1 DemoULJM05135:JPN:3.402007.05.240xADF305F0MG5 417 9985 417 9985 418 336
31Computer Science 2 DemoULJM05189:JPN:3.402007.05.240xADF305F0MG5 456 4365 456 4365 456 784
32Ikuze! Gen-San DemoULJS00141:JPN:3.952008.05.090xADF305F0MG5 468 0597 695 6845 468 400
33World Tour Soccer 2 DemoUCUS98631:USA:2.802006.07.270xADF305F0MG5 583 0565 583 0565 583 392
34World Tour Soccer 06 DemoUCES00206:EUR:2.802006.07.270xADF305F0MG5 583 6165 583 6165 583 952
35Doko: Let's Gakkou! DemoUCJS10039:JPN:3.402007.04.260xADF305F0MG5 627 0005 627 0005 627 344
36Go! Sudoku DemoUCJS10036:JPN:2.712006.06.010x0C000000MG5 735 2205 735 2205 735 568
37Bleach: Heat the Soul 5 DemoNPJG90020:JPN:3.902008.04.210xADF305F0MG5 737 5307 756 3285 737 872
38Everyone in Reading DemoULJM05352:JPN:3.952008.06.190xADF305F0MG5 743 59014 565 4685 743 936
39MLB 07 DemoUCUS98667:USA:3.302007.05.020xADF305F0MG5 781 6445 781 6445 781 984
40Otsugea Uranai na Desu DemoULJM05409:JPN:5.012008.12.040xADF305F0MG5 799 28111 721 1005 799 632
41Socom Fireteam Bravo 2 Demo #2UCED90042:EUR:3.502007.06.290xADF305F0MG5 930 5738 870 7245 930 912
42Hello Kitty no Happy AccessoryULJM05469:JPN:5.032009.05.120xADF305F0MG6 107 6069 282 3566 107 952
43Blokus Club Portable DemoULJS00068:JPN:2.812006.10.290xADF305F0MG6 158 4126 158 4126 158 752
44Mawaskes DemoULJS00105:JPN:3.512007.07.250xADF305F0MG6 167 1757 995 2526 167 520
45Yuusha 30 #1NPJH90024:JPN:5.022009.02.130xADF305F0MG6 175 0856 792 8766 175 424
46Hitman Reborn DemoNPJH90007:USA:4.052008.08.270xADF305F0MG6 254 01813 876 3046 254 368
47Kanji Trainer Portable DemoULJM05201:JPN:3.402007.05.290xADF305F0MG6 320 0646 320 0646 320 400
48Hitman Reborn TagNPJH90081:JPN:6.202010.01.250xADF305F0MG6 449 7359 045 5926 450 080
49Intelligent License 2 DemoULJS00087:JPN:3.402007.05.240xADF305F0MG6 524 3986 524 3986 524 736
50Warhammer 40k Squad Command DemoULUD90004:USA:3.712007.10.240xADF305F0MG6 537 95910 703 8966 538 304
51Warhammer 40k Squad Command DemoNPEH90001:EUR:3.522007.10.290xADF305F0MG6 537 95910 703 8966 538 304
52Metal Gear Solid: Portable Ops DemoULED90040:EUR:3.402007.05.120xADF305F0MG6 563 5246 563 5246 563 872
53Dokusho 2 DemoULJM05393:JPN:4.052008.10.080xADF305F0MG6 652 91113 723 3486 653 248
54Ridge Racer 2 DemoUCES00422:EUR:2.812006.10.200xADF305F0MG6 687 7486 687 7486 688 096
55Mercury Meltdown Demo #2ULED90018:EUR:2.802006.12.250xADF305F0MG6 767 1086 767 1086 767 456
56Medal of Honor: Heroes DemoULED90008:EUR:3.032007.02.020xADF305F0MG6 799 9366 799 9366 800 272
57Ape Escape: Saru Saru DemoUCJS10060:JPN:3.502007.06.290xADF305F0MG6 805 3366 805 3366 805 680
58Mercury Meltdown Demo #1UCJS10043:JPN:2.802006.07.280xADF305F0MG6 817 3486 817 3486 817 696
59Half-Minute Hero 2 Demo #1NPJH90170:JPN:6.312010.11.050xADF305F0MG6 908 8628 055 6926 909 200
60Yuusha 30 #4NPJH90027:JPN:5.032009.05.220xADF305F0MG6 936 9927 575 0526 937 328
61NBA 07 DemoUCUS98644:USA:3.032007.04.060xADF305F0MG7 127 8847 127 8847 128 224
62LocoRoco Demo #5UCJS10041:JPN:3.402007.04.270xADF305F0MG7 134 6787 134 6787 135 024
63Yuusha 30 #2NPJH90026:JPN:5.032009.03.260xADF305F0MG7 165 4467 709 7247 165 792
64R-Type Tactics 2: Operation Bitter Chocolate ver. BULJS00233:JPN:6.002009.10.080xADF305F0MG7 165 57610 410 5967 165 920
65Homestar Portable DemoULJM05184:JPN:3.402007.05.290xADF305F0MG7 299 9507 299 9507 300 288
66Syphon Filter: Dark Mirror DemoUCUS98641:USA:3.032007.02.160xADF305F0MG7 452 5607 452 5607 452 896
67Shichoka Crossword DemoULJM05168:JPN:3.402007.05.290xADF305F0MG7 536 4647 536 4647 536 800
68Lumines 2 DemoULJM05232:JPN:3.112007.04.270xADF305F0MG7 630 4367 630 4367 630 784
69Ape Academy 2 DemoUCES00302:EUR:2.812006.11.030xADF305F0MG7 657 8247 657 8247 658 160
70Full Auto 2 DemoNPUH90001:USA:3.402007.05.110xADF305F0MG7 799 6687 799 6687 800 016
71R-Type Tactics 2: Operation Bitter Chocolate ver. CULJS00233:JPN:6.102009.11.230xADF305F0MG7 877 64011 405 3967 877 984
72The Legend of Heroes: Trails in the SkyULJM05170:JPN:3.402007.05.240xADF305F0MG7 891 3767 891 3767 891 712
73DJ Max Portable 2 DemoULKS46116:KOR:3.112007.03.260xADF305F0MG7 922 0387 922 0387 922 384
74LocoRoco Demo #4UCKS45020:KOR:3.022006.12.110xADF305F0MG7 933 7427 933 7427 934 080
75LocoRoco Demo #1UCKS45020:KOR:2.712006.04.250x0C000000MG7 944 9267 944 9267 945 264
76LocoRoco Demo #4UCJS10041:JPN:3.022006.12.110xADF305F0MG7 950 5747 950 5747 950 912
77Hot Shots Golf 2 Demo #1UCJS10075:JPN:3.802008.02.010xADF305F0MG7 975 3579 791 9887 975 696
78LocoRoco Demo #1UCJS10041:JPN:2.712006.04.240x0C000000MG8 004 5748 004 5748 004 912
79Killzone: Liberation DemoUCES00279:EUR:3.022007.01.020xADF305F0MG8 008 5368 008 5368 008 880
80Killzone: Liberation DemoUCUS98646:USA:3.012007.01.020xADF305F0MG8 008 6168 008 6168 008 960
81LocoRoco Demo #4UCAS40063:HKG:3.022006.12.110xADF305F0MG8 050 8068 050 8068 051 152
82LocoRoco Demo #1UCAS40063:HKG:2.712006.04.250x0C000000MG8 084 5108 084 5108 084 848
83Bounty Hounds DemoULJS00021:JPN:2.802006.09.300xADF305F0MG8 085 3408 085 3408 085 680
84LocoRoco Demo #3UCKS45020:KOR:2.822006.10.300xADF305F0MG8 087 6228 087 6228 087 968
85Exit 2 DemoULJM05161:JPN:2.802006.10.290xADF305F0MG8 089 6408 089 6408 089 984
86LocoRoco Demo #4UCUS98662:USA:3.022006.12.110xADF305F0MG8 113 5428 113 5428 113 888
87LocoRoco Demo #4UCED90007:EUR:3.022006.12.110xADF305F0MG8 122 7188 122 7188 123 056
88Ape Escape Racing DemoUCJS10032:JPN:2.822006.09.250xADF305F0MG8 149 1108 149 1108 149 456
89LocoRoco Demo #1UCUS98662:USA:2.712006.04.250x0C000000MG8 183 8068 183 8068 184 144
90LocoRoco Demo #1UCES00304:EUR:2.712006.04.250x0C000000MG8 185 7508 185 7508 186 096
91Gurumin DemoULJM05123:JPN:3.402007.05.240xADF305F0MG8 223 4728 223 4728 223 808
92LocoRoco Demo #3UCAS40063:HKG:2.822006.10.290xADF305F0MG8 233 8068 233 8068 234 144
93Hot Pixel DemoULED90025:EUR:3.502007.06.290xADF305F0MG8 241 5928 241 5928 241 936
94Airport Hero NaHa DemoULJM05171:JPN:3.402007.05.300xADF305F0MG8 249 2848 249 2848 249 632
95Moto GP DemoUCES00373:EUR:2.802006.10.270xADF305F0MG8 271 5528 271 5528 271 888
96R-Type Tactics 2: Operation Bitter Chocolate ver. AULJS00233:JPN:5.512009.09.240xADF305F0MG8 272 69311 715 2048 273 040
97LocoRoco Demo #3UCUS98662:USA:2.822006.10.290xADF305F0MG8 289 2628 289 2628 289 600
98Xyanide: Resurrection DemoULED90043:EUR:3.502007.06.150xADF305F0MG8 296 2688 296 2688 296 608
99LocoRoco Demo #3UCES00304:EUR:2.802006.10.290xADF305F0MG8 316 5508 316 5508 316 896
100Hot Shots Golf 2 Demo #2UCJS10075:JPN:3.802008.02.010xADF305F0MG8 327 18110 187 0288 327 520
101LocoRoco Demo #2UCJS10041:JPN:2.802006.10.260xADF305F0MG8 347 5508 347 5508 347 888
102Airport Hero Narita DemoULJM05128:JPN:3.402007.05.290xADF305F0MG8 360 6018 360 6018 360 944
103Infinite Loop DemoNPJH90004:JPN:3.952008.07.180xADF305F0MG8 383 03712 548 1568 383 376

Таблица включённых в PrxEncrypter заголовков по размеру ELF:
Таблица демонстрационных игр, выпущенных для Sony PSP (по размеру декриптованного ELF)
Наименование игрыDISC_IDРегионПОДата релиза ГГГГ.ММ.ДДТег шифрованияКате-
гория
Размер
GZIP 0xB0
Размер
ELF 0x28
Размер DATA.PSP
1Astonishia Story 2 DemoULKS46142:KOR:3.902008.03.200xADF305F0MG368 196978 952368 544
2Everybody's Sukkiri #1NPJG90047:JPN:5.512009.07.170xADF305F0MG429 8331 119 380430 176
3Everybody's Sukkiri #3NPJG90047:JPN:5.512009.09.030xADF305F0MG492 5331 334 524492 880
4Everybody's Sukkiri #4NPJG90047:JPN:5.512009.09.110xADF305F0MG497 0451 341 124497 392
5Everybody's Sukkiri #2NPJG90047:JPN:5.512009.07.310xADF305F0MG511 3911 368 996511 728
6Smash Court Tennis 3 DemoUCED90036:EUR:3.402007.06.080xADF305F0MG2 665 7402 665 7402 666 080
7Bleach: Soul Carnival 2NPJG90041:JPN:5.002009.05.160xADF305F0MG810 6492 678 576810 992
8ToCA Race Driver 3 DemoULED90009:EUR:3.032007.02.090xADF305F0MG3 400 2243 400 2243 400 560
9Neo Angelique Special DemoNPJH90010:JPN:4.052008.09.120xADF305F0MG3 868 7934 167 3203 869 136
10Dynasty Warriors: StrikeforceULJM91017:JPN:5.032009.02.170xADF305F0MG1 457 8384 406 7161 458 176
11Socom Fireteam Bravo 2 Demo #1UCUS98645:USA:3.502007.05.160xADF305F0MG4 553 8764 553 8764 554 224
12Monster Hunter Portable 2nd G TrailerULJM05500:JPN:1.002007.12.260xADF305F0MG4 784 4745 145 1884 784 816
13Brain Trainer Portable 2 DemoULJM05126:JPN:3.402007.05.290xADF305F0MG5 245 5715 245 5715 245 920
14Computer Science 1 DemoULJM05135:JPN:3.402007.05.240xADF305F0MG5 417 9985 417 9985 418 336
15Computer Science 2 DemoULJM05189:JPN:3.402007.05.240xADF305F0MG5 456 4365 456 4365 456 784
16World Tour Soccer 2 DemoUCUS98631:USA:2.802006.07.270xADF305F0MG5 583 0565 583 0565 583 392
17World Tour Soccer 06 DemoUCES00206:EUR:2.802006.07.270xADF305F0MG5 583 6165 583 6165 583 952
18Doko: Let's Gakkou! DemoUCJS10039:JPN:3.402007.04.260xADF305F0MG5 627 0005 627 0005 627 344
19Yuusha 30 #3NPJH90025:JPN:5.032009.04.280xADF305F0MG5 312 1945 677 2285 312 544
20Go! Sudoku DemoUCJS10036:JPN:2.712006.06.010x0C000000MG5 735 2205 735 2205 735 568
21MLB 07 DemoUCUS98667:USA:3.302007.05.020xADF305F0MG5 781 6445 781 6445 781 984
22NBA 08 DemoUCUS98699:USA:3.712007.12.050xADF305F0MG1 772 2645 881 5321 772 608
23Blokus Club Portable DemoULJS00068:JPN:2.812006.10.290xADF305F0MG6 158 4126 158 4126 158 752
24Space Invaders Extreme DemoULJM05315:JPN:3.802008.02.180xADF305F0MG5 103 9186 284 4565 104 256
25Kanji Trainer Portable DemoULJM05201:JPN:3.402007.05.290xADF305F0MG6 320 0646 320 0646 320 400
26Intelligent License 2 DemoULJS00087:JPN:3.402007.05.240xADF305F0MG6 524 3986 524 3986 524 736
27Metal Gear Solid: Portable Ops DemoULED90040:EUR:3.402007.05.120xADF305F0MG6 563 5246 563 5246 563 872
28Ridge Racer 2 DemoUCES00422:EUR:2.812006.10.200xADF305F0MG6 687 7486 687 7486 688 096
29Phantasy Star PortableULJM91014:JPN:3.952008.07.110xADF305F0MG2 417 7496 735 4882 418 096
30Mercury Meltdown Demo #2ULED90018:EUR:2.802006.12.250xADF305F0MG6 767 1086 767 1086 767 456
31Yuusha 30 #1NPJH90024:JPN:5.022009.02.130xADF305F0MG6 175 0856 792 8766 175 424
32Medal of Honor: Heroes DemoULED90008:EUR:3.032007.02.020xADF305F0MG6 799 9366 799 9366 800 272
33Ape Escape: Saru Saru DemoUCJS10060:JPN:3.502007.06.290xADF305F0MG6 805 3366 805 3366 805 680
34Mercury Meltdown Demo #1UCJS10043:JPN:2.802006.07.280xADF305F0MG6 817 3486 817 3486 817 696
35NBA 07 DemoUCUS98644:USA:3.032007.04.060xADF305F0MG7 127 8847 127 8847 128 224
36LocoRoco Demo #5UCJS10041:JPN:3.402007.04.270xADF305F0MG7 134 6787 134 6787 135 024
37Homestar Portable DemoULJM05184:JPN:3.402007.05.290xADF305F0MG7 299 9507 299 9507 300 288
38Syphon Filter: Dark Mirror DemoUCUS98641:USA:3.032007.02.160xADF305F0MG7 452 5607 452 5607 452 896
39Hototogisu Ran DemoULJS00159:JPN:4.052008.10.240xADF305F0MG4 940 7207 469 3124 941 056
40Shichoka Crossword DemoULJM05168:JPN:3.402007.05.290xADF305F0MG7 536 4647 536 4647 536 800
41Yuusha 30 #4NPJH90027:JPN:5.032009.05.220xADF305F0MG6 936 9927 575 0526 937 328
42Lumines 2 DemoULJM05232:JPN:3.112007.04.270xADF305F0MG7 630 4367 630 4367 630 784
43Ape Academy 2 DemoUCES00302:EUR:2.812006.11.030xADF305F0MG7 657 8247 657 8247 658 160
44Ikuze! Gen-San DemoULJS00141:JPN:3.952008.05.090xADF305F0MG5 468 0597 695 6845 468 400
45Yuusha 30 #2NPJH90026:JPN:5.032009.03.260xADF305F0MG7 165 4467 709 7247 165 792
46Worms Open Warfare 2 DemoULED90045:EUR:3.522007.08.170xADF305F0MG4 411 2797 732 9724 411 616
47Bleach: Heat the Soul 5 DemoNPJG90020:JPN:3.902008.04.210xADF305F0MG5 737 5307 756 3285 737 872
48Full Auto 2 DemoNPUH90001:USA:3.402007.05.110xADF305F0MG7 799 6687 799 6687 800 016
49echochrome DemoNPHG00005:HKG:3.902008.03.140xADF305F0MG3 864 5997 855 2403 864 944
50echochrome DemoNPJG90019:JPN:3.902008.03.060xADF305F0MG3 913 0927 861 2323 913 440
51The Legend of Heroes: Trails in the SkyULJM05170:JPN:3.402007.05.240xADF305F0MG7 891 3767 891 3767 891 712
52DJ Max Portable 2 DemoULKS46116:KOR:3.112007.03.260xADF305F0MG7 922 0387 922 0387 922 384
53LocoRoco Demo #4UCKS45020:KOR:3.022006.12.110xADF305F0MG7 933 7427 933 7427 934 080
54LocoRoco Demo #1UCKS45020:KOR:2.712006.04.250x0C000000MG7 944 9267 944 9267 945 264
55LocoRoco Demo #4UCJS10041:JPN:3.022006.12.110xADF305F0MG7 950 5747 950 5747 950 912
56Mawaskes DemoULJS00105:JPN:3.512007.07.250xADF305F0MG6 167 1757 995 2526 167 520
57LocoRoco Demo #1UCJS10041:JPN:2.712006.04.240x0C000000MG8 004 5748 004 5748 004 912
58Killzone: Liberation DemoUCES00279:EUR:3.022007.01.020xADF305F0MG8 008 5368 008 5368 008 880
59Killzone: Liberation DemoUCUS98646:USA:3.012007.01.020xADF305F0MG8 008 6168 008 6168 008 960
60LocoRoco Demo #4UCAS40063:HKG:3.022006.12.110xADF305F0MG8 050 8068 050 8068 051 152
61Half-Minute Hero 2 Demo #1NPJH90170:JPN:6.312010.11.050xADF305F0MG6 908 8628 055 6926 909 200
62LocoRoco Demo #1UCAS40063:HKG:2.712006.04.250x0C000000MG8 084 5108 084 5108 084 848
63Bounty Hounds DemoULJS00021:JPN:2.802006.09.300xADF305F0MG8 085 3408 085 3408 085 680
64LocoRoco Demo #3UCKS45020:KOR:2.822006.10.300xADF305F0MG8 087 6228 087 6228 087 968
65Exit 2 DemoULJM05161:JPN:2.802006.10.290xADF305F0MG8 089 6408 089 6408 089 984
66LocoRoco Demo #4UCUS98662:USA:3.022006.12.110xADF305F0MG8 113 5428 113 5428 113 888
67LocoRoco Demo #4UCED90007:EUR:3.022006.12.110xADF305F0MG8 122 7188 122 7188 123 056
68What Did I Do To Deserve This, My LordNPJG90009:JPN:3.722007.11.150xADF305F0MG3 725 4398 141 7723 725 776
69Ape Escape Racing DemoUCJS10032:JPN:2.822006.09.250xADF305F0MG8 149 1108 149 1108 149 456
70LocoRoco Demo #1UCUS98662:USA:2.712006.04.250x0C000000MG8 183 8068 183 8068 184 144
71LocoRoco Demo #1UCES00304:EUR:2.712006.04.250x0C000000MG8 185 7508 185 7508 186 096
72Gurumin DemoULJM05123:JPN:3.402007.05.240xADF305F0MG8 223 4728 223 4728 223 808
73Dungeon Explorer DemoULJM05164:JPN:3.512007.09.200xADF305F0MG4 960 8998 227 6444 961 248
74LocoRoco Demo #3UCAS40063:HKG:2.822006.10.290xADF305F0MG8 233 8068 233 8068 234 144
75Hot Pixel DemoULED90025:EUR:3.502007.06.290xADF305F0MG8 241 5928 241 5928 241 936
76Airport Hero NaHa DemoULJM05171:JPN:3.402007.05.300xADF305F0MG8 249 2848 249 2848 249 632
77Dungeon Explorer DemoULUS10289:USA:3.902008.03.200xADF305F0MG4 946 7048 253 2364 947 040
78Moto GP DemoUCES00373:EUR:2.802006.10.270xADF305F0MG8 271 5528 271 5528 271 888
79LocoRoco Demo #3UCUS98662:USA:2.822006.10.290xADF305F0MG8 289 2628 289 2628 289 600
80Xyanide: Resurrection DemoULED90043:EUR:3.502007.06.150xADF305F0MG8 296 2688 296 2688 296 608
81LocoRoco Demo #3UCES00304:EUR:2.802006.10.290xADF305F0MG8 316 5508 316 5508 316 896
82Dungeon Explorer Famitsu DemoULJM05164:JPN:3.732007.12.240xADF305F0MG5 031 8608 345 2925 032 208
83LocoRoco Demo #2UCJS10041:JPN:2.802006.10.260xADF305F0MG8 347 5508 347 5508 347 888
84Airport Hero Narita DemoULJM05128:JPN:3.402007.05.290xADF305F0MG8 360 6018 360 6018 360 944
85Socom Fireteam Bravo 2 Demo #2UCED90042:EUR:3.502007.06.290xADF305F0MG5 930 5738 870 7245 930 912
86Hitman Reborn TagNPJH90081:JPN:6.202010.01.250xADF305F0MG6 449 7359 045 5926 450 080
87Hello Kitty no Happy AccessoryULJM05469:JPN:5.032009.05.120xADF305F0MG6 107 6069 282 3566 107 952
88Onore no Shinzuru Michi wo YukeNPJH90034:JPN:5.032009.04.170xADF305F0MG3 251 6589 286 1563 252 000
89Umihara Kawase DemoULJS00137:JPN:3.902008.03.140xADF305F0MG3 125 2589 288 4443 125 600
90Hot Shots Golf 2 Demo #1UCJS10075:JPN:3.802008.02.010xADF305F0MG7 975 3579 791 9887 975 696
91Hot Shots Golf 2 Demo #2UCJS10075:JPN:3.802008.02.010xADF305F0MG8 327 18110 187 0288 327 520
92R-Type Tactics 2: Operation Bitter Chocolate ver. BULJS00233:JPN:6.002009.10.080xADF305F0MG7 165 57610 410 5967 165 920
93Warhammer 40k Squad Command DemoULUD90004:USA:3.712007.10.240xADF305F0MG6 537 95910 703 8966 538 304
94Warhammer 40k Squad Command DemoNPEH90001:EUR:3.522007.10.290xADF305F0MG6 537 95910 703 8966 538 304
95R-Type Tactics 2: Operation Bitter Chocolate ver. CULJS00233:JPN:6.102009.11.230xADF305F0MG7 877 64011 405 3967 877 984
96R-Type Tactics 2: Operation Bitter Chocolate ver. AULJS00233:JPN:5.512009.09.240xADF305F0MG8 272 69311 715 2048 273 040
97Otsugea Uranai na Desu DemoULJM05409:JPN:5.012008.12.040xADF305F0MG5 799 28111 721 1005 799 632
98Infinite Loop DemoNPJH90004:JPN:3.952008.07.180xADF305F0MG8 383 03712 548 1568 383 376
99Valhalla Knights 2 DemoULJS00138:JPN:3.952008.05.190xADF305F0MG5 327 41112 722 5405 327 760
100Dokusho 2 DemoULJM05393:JPN:4.052008.10.080xADF305F0MG6 652 91113 723 3486 653 248
101Hitman Reborn DemoNPJH90007:USA:4.052008.08.270xADF305F0MG6 254 01813 876 3046 254 368
102Hitman Reborn 2NPJH90061:JPN:5.512009.09.010xADF305F0MG5 396 43513 957 1045 396 784
103Everyone in Reading DemoULJM05352:JPN:3.952008.06.190xADF305F0MG5 743 59014 565 4685 743 936

Таблица включённых в PrxEncrypter заголовков по размеру GZIP:
Таблица демонстрационных игр, выпущенных для Sony PSP (по размеру декриптованного GZIP [kirk 0x70])
Наименование игрыDISC_IDРегионПОДата релиза ГГГГ.ММ.ДДТег шифрованияКате-
гория
Размер
GZIP 0xB0
Размер
ELF 0x28
Размер DATA.PSP
1Astonishia Story 2 DemoULKS46142:KOR:3.902008.03.200xADF305F0MG368 196978 952368 544
2Everybody's Sukkiri #1NPJG90047:JPN:5.512009.07.170xADF305F0MG429 8331 119 380430 176
3Everybody's Sukkiri #3NPJG90047:JPN:5.512009.09.030xADF305F0MG492 5331 334 524492 880
4Everybody's Sukkiri #4NPJG90047:JPN:5.512009.09.110xADF305F0MG497 0451 341 124497 392
5Everybody's Sukkiri #2NPJG90047:JPN:5.512009.07.310xADF305F0MG511 3911 368 996511 728
6Bleach: Soul Carnival 2NPJG90041:JPN:5.002009.05.160xADF305F0MG810 6492 678 576810 992
7Dynasty Warriors: StrikeforceULJM91017:JPN:5.032009.02.170xADF305F0MG1 457 8384 406 7161 458 176
8NBA 08 DemoUCUS98699:USA:3.712007.12.050xADF305F0MG1 772 2645 881 5321 772 608
9Phantasy Star PortableULJM91014:JPN:3.952008.07.110xADF305F0MG2 417 7496 735 4882 418 096
10Smash Court Tennis 3 DemoUCED90036:EUR:3.402007.06.080xADF305F0MG2 665 7402 665 7402 666 080
11Umihara Kawase DemoULJS00137:JPN:3.902008.03.140xADF305F0MG3 125 2589 288 4443 125 600
12Onore no Shinzuru Michi wo YukeNPJH90034:JPN:5.032009.04.170xADF305F0MG3 251 6589 286 1563 252 000
13ToCA Race Driver 3 DemoULED90009:EUR:3.032007.02.090xADF305F0MG3 400 2243 400 2243 400 560
14What Did I Do To Deserve This, My LordNPJG90009:JPN:3.722007.11.150xADF305F0MG3 725 4398 141 7723 725 776
15echochrome DemoNPHG00005:HKG:3.902008.03.140xADF305F0MG3 864 5997 855 2403 864 944
16Neo Angelique Special DemoNPJH90010:JPN:4.052008.09.120xADF305F0MG3 868 7934 167 3203 869 136
17echochrome DemoNPJG90019:JPN:3.902008.03.060xADF305F0MG3 913 0927 861 2323 913 440
18Worms Open Warfare 2 DemoULED90045:EUR:3.522007.08.170xADF305F0MG4 411 2797 732 9724 411 616
19Socom Fireteam Bravo 2 Demo #1UCUS98645:USA:3.502007.05.160xADF305F0MG4 553 8764 553 8764 554 224
20Monster Hunter Portable 2nd G TrailerULJM05500:JPN:1.002007.12.260xADF305F0MG4 784 4745 145 1884 784 816
21Hototogisu Ran DemoULJS00159:JPN:4.052008.10.240xADF305F0MG4 940 7207 469 3124 941 056
22Dungeon Explorer DemoULUS10289:USA:3.902008.03.200xADF305F0MG4 946 7048 253 2364 947 040
23Dungeon Explorer DemoULJM05164:JPN:3.512007.09.200xADF305F0MG4 960 8998 227 6444 961 248
24Dungeon Explorer Famitsu DemoULJM05164:JPN:3.732007.12.240xADF305F0MG5 031 8608 345 2925 032 208
25Space Invaders Extreme DemoULJM05315:JPN:3.802008.02.180xADF305F0MG5 103 9186 284 4565 104 256
26Brain Trainer Portable 2 DemoULJM05126:JPN:3.402007.05.290xADF305F0MG5 245 5715 245 5715 245 920
27Yuusha 30 #3NPJH90025:JPN:5.032009.04.280xADF305F0MG5 312 1945 677 2285 312 544
28Valhalla Knights 2 DemoULJS00138:JPN:3.952008.05.190xADF305F0MG5 327 41112 722 5405 327 760
29Hitman Reborn 2NPJH90061:JPN:5.512009.09.010xADF305F0MG5 396 43513 957 1045 396 784
30Computer Science 1 DemoULJM05135:JPN:3.402007.05.240xADF305F0MG5 417 9985 417 9985 418 336
31Computer Science 2 DemoULJM05189:JPN:3.402007.05.240xADF305F0MG5 456 4365 456 4365 456 784
32Ikuze! Gen-San DemoULJS00141:JPN:3.952008.05.090xADF305F0MG5 468 0597 695 6845 468 400
33World Tour Soccer 2 DemoUCUS98631:USA:2.802006.07.270xADF305F0MG5 583 0565 583 0565 583 392
34World Tour Soccer 06 DemoUCES00206:EUR:2.802006.07.270xADF305F0MG5 583 6165 583 6165 583 952
35Doko: Let's Gakkou! DemoUCJS10039:JPN:3.402007.04.260xADF305F0MG5 627 0005 627 0005 627 344
36Go! Sudoku DemoUCJS10036:JPN:2.712006.06.010x0C000000MG5 735 2205 735 2205 735 568
37Bleach: Heat the Soul 5 DemoNPJG90020:JPN:3.902008.04.210xADF305F0MG5 737 5307 756 3285 737 872
38Everyone in Reading DemoULJM05352:JPN:3.952008.06.190xADF305F0MG5 743 59014 565 4685 743 936
39MLB 07 DemoUCUS98667:USA:3.302007.05.020xADF305F0MG5 781 6445 781 6445 781 984
40Otsugea Uranai na Desu DemoULJM05409:JPN:5.012008.12.040xADF305F0MG5 799 28111 721 1005 799 632
41Socom Fireteam Bravo 2 Demo #2UCED90042:EUR:3.502007.06.290xADF305F0MG5 930 5738 870 7245 930 912
42Hello Kitty no Happy AccessoryULJM05469:JPN:5.032009.05.120xADF305F0MG6 107 6069 282 3566 107 952
43Blokus Club Portable DemoULJS00068:JPN:2.812006.10.290xADF305F0MG6 158 4126 158 4126 158 752
44Mawaskes DemoULJS00105:JPN:3.512007.07.250xADF305F0MG6 167 1757 995 2526 167 520
45Yuusha 30 #1NPJH90024:JPN:5.022009.02.130xADF305F0MG6 175 0856 792 8766 175 424
46Hitman Reborn DemoNPJH90007:USA:4.052008.08.270xADF305F0MG6 254 01813 876 3046 254 368
47Kanji Trainer Portable DemoULJM05201:JPN:3.402007.05.290xADF305F0MG6 320 0646 320 0646 320 400
48Hitman Reborn TagNPJH90081:JPN:6.202010.01.250xADF305F0MG6 449 7359 045 5926 450 080
49Intelligent License 2 DemoULJS00087:JPN:3.402007.05.240xADF305F0MG6 524 3986 524 3986 524 736
50Warhammer 40k Squad Command DemoULUD90004:USA:3.712007.10.240xADF305F0MG6 537 95910 703 8966 538 304
51Warhammer 40k Squad Command DemoNPEH90001:EUR:3.522007.10.290xADF305F0MG6 537 95910 703 8966 538 304
52Metal Gear Solid: Portable Ops DemoULED90040:EUR:3.402007.05.120xADF305F0MG6 563 5246 563 5246 563 872
53Dokusho 2 DemoULJM05393:JPN:4.052008.10.080xADF305F0MG6 652 91113 723 3486 653 248
54Ridge Racer 2 DemoUCES00422:EUR:2.812006.10.200xADF305F0MG6 687 7486 687 7486 688 096
55Mercury Meltdown Demo #2ULED90018:EUR:2.802006.12.250xADF305F0MG6 767 1086 767 1086 767 456
56Medal of Honor: Heroes DemoULED90008:EUR:3.032007.02.020xADF305F0MG6 799 9366 799 9366 800 272
57Ape Escape: Saru Saru DemoUCJS10060:JPN:3.502007.06.290xADF305F0MG6 805 3366 805 3366 805 680
58Mercury Meltdown Demo #1UCJS10043:JPN:2.802006.07.280xADF305F0MG6 817 3486 817 3486 817 696
59Half-Minute Hero 2 Demo #1NPJH90170:JPN:6.312010.11.050xADF305F0MG6 908 8628 055 6926 909 200
60Yuusha 30 #4NPJH90027:JPN:5.032009.05.220xADF305F0MG6 936 9927 575 0526 937 328
61NBA 07 DemoUCUS98644:USA:3.032007.04.060xADF305F0MG7 127 8847 127 8847 128 224
62LocoRoco Demo #5UCJS10041:JPN:3.402007.04.270xADF305F0MG7 134 6787 134 6787 135 024
63Yuusha 30 #2NPJH90026:JPN:5.032009.03.260xADF305F0MG7 165 4467 709 7247 165 792
64R-Type Tactics 2: Operation Bitter Chocolate ver. BULJS00233:JPN:6.002009.10.080xADF305F0MG7 165 57610 410 5967 165 920
65Homestar Portable DemoULJM05184:JPN:3.402007.05.290xADF305F0MG7 299 9507 299 9507 300 288
66Syphon Filter: Dark Mirror DemoUCUS98641:USA:3.032007.02.160xADF305F0MG7 452 5607 452 5607 452 896
67Shichoka Crossword DemoULJM05168:JPN:3.402007.05.290xADF305F0MG7 536 4647 536 4647 536 800
68Lumines 2 DemoULJM05232:JPN:3.112007.04.270xADF305F0MG7 630 4367 630 4367 630 784
69Ape Academy 2 DemoUCES00302:EUR:2.812006.11.030xADF305F0MG7 657 8247 657 8247 658 160
70Full Auto 2 DemoNPUH90001:USA:3.402007.05.110xADF305F0MG7 799 6687 799 6687 800 016
71R-Type Tactics 2: Operation Bitter Chocolate ver. CULJS00233:JPN:6.102009.11.230xADF305F0MG7 877 64011 405 3967 877 984
72The Legend of Heroes: Trails in the SkyULJM05170:JPN:3.402007.05.240xADF305F0MG7 891 3767 891 3767 891 712
73DJ Max Portable 2 DemoULKS46116:KOR:3.112007.03.260xADF305F0MG7 922 0387 922 0387 922 384
74LocoRoco Demo #4UCKS45020:KOR:3.022006.12.110xADF305F0MG7 933 7427 933 7427 934 080
75LocoRoco Demo #1UCKS45020:KOR:2.712006.04.250x0C000000MG7 944 9267 944 9267 945 264
76LocoRoco Demo #4UCJS10041:JPN:3.022006.12.110xADF305F0MG7 950 5747 950 5747 950 912
77Hot Shots Golf 2 Demo #1UCJS10075:JPN:3.802008.02.010xADF305F0MG7 975 3579 791 9887 975 696
78LocoRoco Demo #1UCJS10041:JPN:2.712006.04.240x0C000000MG8 004 5748 004 5748 004 912
79Killzone: Liberation DemoUCES00279:EUR:3.022007.01.020xADF305F0MG8 008 5368 008 5368 008 880
80Killzone: Liberation DemoUCUS98646:USA:3.012007.01.020xADF305F0MG8 008 6168 008 6168 008 960
81LocoRoco Demo #4UCAS40063:HKG:3.022006.12.110xADF305F0MG8 050 8068 050 8068 051 152
82LocoRoco Demo #1UCAS40063:HKG:2.712006.04.250x0C000000MG8 084 5108 084 5108 084 848
83Bounty Hounds DemoULJS00021:JPN:2.802006.09.300xADF305F0MG8 085 3408 085 3408 085 680
84LocoRoco Demo #3UCKS45020:KOR:2.822006.10.300xADF305F0MG8 087 6228 087 6228 087 968
85Exit 2 DemoULJM05161:JPN:2.802006.10.290xADF305F0MG8 089 6408 089 6408 089 984
86LocoRoco Demo #4UCUS98662:USA:3.022006.12.110xADF305F0MG8 113 5428 113 5428 113 888
87LocoRoco Demo #4UCED90007:EUR:3.022006.12.110xADF305F0MG8 122 7188 122 7188 123 056
88Ape Escape Racing DemoUCJS10032:JPN:2.822006.09.250xADF305F0MG8 149 1108 149 1108 149 456
89LocoRoco Demo #1UCUS98662:USA:2.712006.04.250x0C000000MG8 183 8068 183 8068 184 144
90LocoRoco Demo #1UCES00304:EUR:2.712006.04.250x0C000000MG8 185 7508 185 7508 186 096
91Gurumin DemoULJM05123:JPN:3.402007.05.240xADF305F0MG8 223 4728 223 4728 223 808
92LocoRoco Demo #3UCAS40063:HKG:2.822006.10.290xADF305F0MG8 233 8068 233 8068 234 144
93Hot Pixel DemoULED90025:EUR:3.502007.06.290xADF305F0MG8 241 5928 241 5928 241 936
94Airport Hero NaHa DemoULJM05171:JPN:3.402007.05.300xADF305F0MG8 249 2848 249 2848 249 632
95Moto GP DemoUCES00373:EUR:2.802006.10.270xADF305F0MG8 271 5528 271 5528 271 888
96R-Type Tactics 2: Operation Bitter Chocolate ver. AULJS00233:JPN:5.512009.09.240xADF305F0MG8 272 69311 715 2048 273 040
97LocoRoco Demo #3UCUS98662:USA:2.822006.10.290xADF305F0MG8 289 2628 289 2628 289 600
98Xyanide: Resurrection DemoULED90043:EUR:3.502007.06.150xADF305F0MG8 296 2688 296 2688 296 608
99LocoRoco Demo #3UCES00304:EUR:2.802006.10.290xADF305F0MG8 316 5508 316 5508 316 896
100Hot Shots Golf 2 Demo #2UCJS10075:JPN:3.802008.02.010xADF305F0MG8 327 18110 187 0288 327 520
101LocoRoco Demo #2UCJS10041:JPN:2.802006.10.260xADF305F0MG8 347 5508 347 5508 347 888
102Airport Hero Narita DemoULJM05128:JPN:3.402007.05.290xADF305F0MG8 360 6018 360 6018 360 944
103Infinite Loop DemoNPJH90004:JPN:3.952008.07.180xADF305F0MG8 383 03712 548 1568 383 376


ErikPshat 27.04.2013 00:10

Вложений: 1
Ликбез №1. Вступление.
Вопрос к разработчикам ...

Тут в PrxDecrypter я заметил некорректно написанный код сжатия. Вернее он сжимает и всё подсчитывает корректно, но алгоритм сжатия у него работает не так, как надо.
В ообщем тут такое дело, что если декриптовать тот же Astinishia Story 2 и попытаться обратно зашифровать его же родным заголовком, то так не получится, потому что декриптованный ELF-файл уже не поместится по размеру в свой родной заголовок - будет ошибка: Elf is to big. И это при том, что якобы в алгоритме энкриптера используется сжатие :), причём после шифровки и последующей декриптовке явно отображается, что файл:
Код:

* DATA.PSP -> decrypted, decompressed (GZ), saved.
Аналогичная ситуация происходит со всеми файлами, например при попытке подписать файлы прошивки своими же заголовками.
Короче, я так понял, алгоритм шифрования происходит в следующем порядке:
  1. Сравнение по размеру ELF-файла с размером, записанном в шифрованном заголовке по адресу 0x2C минус 0x15С
    • Если ELF-файл больше, то выдаётся сообщение об ошибке: Elf is to big
  2. Затем, если файл меньше, то он в конце забивается нулями до размера, прописанного в шифрованном заголовке по адресу 0x28 (размер декриптованного ELF)
  3. После применяется сжатие GZIP
  4. Добивается архив в конце нулями до размера, указанного в шифрованном заголовке по адресу 0xB0 (размер архива)
  5. И наконец файл шифруется и добавляется заголовок.

Тут требуется только поправить порядок действий на такой:
  1. Если сжатый файл меньше, то он в конце забивается нулями до размера, прописанного в шифрованном заголовке по адресу 0x28
  2. Применить сжатие GZIP
  3. Добивается архив в конце нулями до размера, указанного в шифрованном заголовке по адресу 0xB0
  4. Сравнение по размеру сжатого ELF-файла с размером, записанном в шифрованном заголовке по адресу 0x2C
    • Если ELF-файл больше, то выдаётся сообщение об ошибке: Elf is to big
  5. И наконец файл шифруется и добавляется заголовок.

Это моё видение навскидку, но возможно там происходят более масштабные преобразования и придётся не просто поменять местами порядок выполнения функций, а ещё и переписывать код.
Хотя, сам код довольно короткий и простой, но я так и не понял, каким же образом происходит порядок сжатия.

Сам код:
Код:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include <zlib.h>

#include "types.h"
#include "endian.h"
#include "kirk_engine.h"
#include "psp_headers.h"

unsigned char pspHeader_name[336] = {data};
unsigned char kirkHeader_name[272] = {data};

typedef struct Header_List {
        unsigned char *pspHeader;
        unsigned char *kirkHeader;
} Header_List;

Header_List header_list[] = {
        { pspHeader_name, kirkHeader_name },
};

u8 in_buffer[1024*1024*12];
u8 out_buffer[1024*1024*12];

u8 kirk_raw[1024*1024*12];
u8 kirk_enc[1024*1024*12];
u8 elf[1024*1024*12];

typedef struct header_keys
{
    u8 AES[16];
    u8 CMAC[16];
}header_keys;

int load_elf(char *elff)
{
        FILE *fp = fopen(elff, "rb");

        if(fp == NULL) {
                return -1;
        }

        fseek(fp, 0, SEEK_END);
        int size = ftell(fp);
        fseek(fp, 0, SEEK_SET);
        fread(elf, 1, size, fp);
        fclose(fp);

        return size;
}

int dumpFile(char *name, void *in, int size)
{
        FILE *fp = fopen(name, "wb");

        if(fp == NULL) {
                return -1;
        }

        fwrite(in, 1, size, fp);
        fclose(fp);

        return 0;
}

int get_kirk_size(u8 *key_hdr)
{
        int krawSize = *(u32*)(key_hdr+0x70);

        if(krawSize % 0x10) {
                krawSize += 0x10 - (krawSize % 0x10); // 16 bytes aligned
        }

        krawSize += 0x110;

        return krawSize;
}

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;
}

int is_compressed(u8 *psp_header)
{
        if (*(u16*)(psp_header+6) == 1) {
                return 1;
        }

        return 0;
}

int get_elf_size(u8 *psp_header)
{
        return *(u32*)(psp_header+0x28);
}

int gzip_compress(u8 *dst, const u8 *src, int size)
{
        int ret;
        z_stream strm;
        u8 *elf_compress;
        const int compress_max_size = 12 * 1024 * 1024;

        strm.zalloc = Z_NULL;
        strm.zfree = Z_NULL;
        strm.opaque = Z_NULL;

        elf_compress = malloc(compress_max_size);

        if(elf_compress == NULL) {
                return -1;
        }

        ret = deflateInit2(&strm, 9, Z_DEFLATED, 15+16, 8, Z_DEFAULT_STRATEGY);

        if(ret != Z_OK) {
                printf("%s: compress error\n", __func__);
                free(elf_compress);
               
                return -2;
        }

        strm.avail_in = size;
        strm.next_in = (void*)src;
        strm.avail_out = compress_max_size;
        strm.next_out = elf_compress;

        ret = deflate(&strm, Z_FINISH);

        if(ret == Z_STREAM_ERROR) {
                deflateEnd(&strm);
                printf("%s: compress error\n", __func__);
                free(elf_compress);

                return -3;
        }

        memcpy(dst, elf_compress, strm.total_out);
        deflateEnd(&strm);
        free(elf_compress);

        return 0;
}

int main(int argc, char **argv)
{
        header_keys keys;
        u8 rawkheaderBk[0x90];

        if(argc < 2)
        {
                printf("USAGE: [exe] [prx]\n");
                return 0;
        }

        memset(in_buffer, 0, sizeof(in_buffer));
        memset(out_buffer, 0, sizeof(out_buffer));
        memset(kirk_raw, 0, sizeof(kirk_raw));
        memset(kirk_enc, 0, sizeof(kirk_enc));
        memset(elf, 0, sizeof(elf));

        kirk_init();

        int elfSize = load_elf(argv[1]);

        if(elfSize < 0) {
                printf("Cannot open %s\n", argv[1]);

                return 0;
        }

        Header_List *target_header = get_header_list( elfSize );

        if( target_header == NULL ) {
                printf("PRX SIGNER: Elf is to big\n");

                return 0;
        }

        u8 *kirkHeader        = target_header->kirkHeader;
        u8 *pspHeader        = target_header->pspHeader;
        int krawSize = get_kirk_size(kirkHeader);

        if (is_compressed(pspHeader)) {
                elfSize = get_elf_size(pspHeader);
                gzip_compress(elf, elf, elfSize);
        }

        memcpy(kirk_raw, kirkHeader, 0x110);
        memcpy(rawkheaderBk, kirk_raw, sizeof(rawkheaderBk));

        kirk_decrypt_keys((u8*)&keys, kirk_raw);
        memcpy(kirk_raw, &keys, sizeof(header_keys));
        memcpy(kirk_raw+0x110, elf, elfSize);

        if(kirk_CMD0(kirk_enc, kirk_raw, sizeof(kirk_enc), 0) != 0)
        {
                printf("PRX SIGNER: Could not encrypt elf\n");
                return 0;
        }

        memcpy(kirk_enc, rawkheaderBk, sizeof(rawkheaderBk));

        if(kirk_forge(kirk_enc, sizeof(kirk_enc)) != 0)
        {
                printf("PRX SIGNER: Could not forge cmac block\n");

                return 0;
        }

        memcpy(out_buffer, pspHeader, 0x150);
        memcpy(out_buffer+0x150, kirk_enc+0x110, krawSize-0x110);

        return dumpFile("./DATA.PSP", out_buffer, (krawSize-0x110)+0x150);
}


Ликбез №2
Я хотел сказать, что СЖАТИЕ здесь вообще не имеет никакого смысла и эффекта, хотя оно явно используется.
То есть, файл размером 1 Мб должен ужаться и подписаться маленьким заголовком, однако он всегда подписывается большим заголовком, чем сам файл.



Провёл такой эксперимент. За основу взял оригинал DATA.PSP - Astinishia Story 2.

Имеем такие данные:
  • 0x28 = 0x000EF008 = 978'952 byte - размер ELF декриптованного файла.
  • 0x2C = 0x00059FA0 = 368'544 byte - размер всего файла с заголовком.
  • 0xB0 = 0x00059E44 = 368'196 byte - размер архива.
Чтобы файл работал, все эти данные должны совпадать. Ну а мы пока работаем с оригинальным файлом, поэтому тут и так всё должно быть чётко.
Так как я знаю, что файл пожат в GZIP, то теперь я в PrxDecrypter отключаю декомпрессию (тупо в коде меняю сигнатуру 1F8B на любую другую, по которой программа определяет, что перед ней GZIP-архив). Это находится здесь:
Код:

                                // GZIP DECOMPRESSION
                                if (*(u16 *)&g_dataOut2[0] == 0x8B1F) {


Теперь программа будет только декриптовать шифрованный файл, но разархивировать не будет.
Декриптуем оригинальный DATA.PSP от Astinishia Story 2
В папке "enc" обнаруживаем декриптованный файл, но конечно там нет знакомой сигнатуры ELF, а видим знакомые цифры 1F8B - архив GZIP.
Смотрю его размер. Он в точности совпадает с указанным в заголовке:
  • 0xB0 = 0x00059E44 = 368'196 byte - размер архива.
Смотрю у архива последние 4 байта -> 0x000EF008.
Они по спецификации GZIP указывают на размер разархивированного файла, что в точности совпадает с указанным в заголовке:
  • 0x28 = 0x000EF008 = 978'952 byte - размер ELF декриптованного файла.
Для уверенности разархивирую с помощью 7-zip этот архив и получаю чистый ELF, как и положено ему быть.

Ликбез №3
Поехали дальше... Теперь проводим эксперимент с фейковой подписью.

Беру чистый декриптованный ELF от Astinishia Story 2 (978'952 byte - довольно большой :) )
Подписываю через PrxEncrypter.
Получаю на выходе подписанный файл размером 0x00164000 = 1'458'176 byte заголовком от Dynasty Warriors Strikeforce
Вот те ппц, приехали, наглядный пример сжатия PrxEncrypter :D
Ну это не удивительно, он всегда так подписывал, потому что сначала подбирает под декриптованный ELF подходящий заголовок, не меньше размером, забивает до нужного размера 0x28 нулями, а только потом сжимает, опять добивает уже архив всяким мусором до указанного в заголовке 0xB0 размера архива и затем шифрует.

Короче, подписанный фейковый файл опять декриптуем без декомпрессии.
  1. Получаем на выходе архив 1F8B размером 0х00163EAE = 1'457'838 byte - собственно, как и указано в заголовке 0xB0 Dynasty Warriors Strikeforce
  2. Сразу разархивирую его с помощью 7-Zip и получаю декриптованный ELF размером 0x00433DBC = 4'406'716 - как и указано в заголовке 0x28.
1. По первому пункту получаем такой прикол - ищу конец архива - последние 4 байта в архиве, по уже известному размеру разархивированного файла BC3D4300 - настоящий архив кончается в 1/3 от начала и составляет 0x0005DD59 = 384'345 byte. Остальная 2/3 части забито оставшейся частью декриптованного ELF-файла и далее нулями. То есть, берётся сам декриптованный файл, архивируется в GZIP и затем архив вставляется в этот же файл в начало, и есстественно конец декриптованного файла остаётся. Но это не беда, архив GZIP имеет потоковый формат и разархивируется потоково, пока не дойдёт до своего конца, а что там после конца - ему на это пофиг. Не зря GZIP не имеет меток размера и конца, но в конце обязательно имеет последние 4 байта метки разархивированного размера.
Да, настоящий архив, без нулей и мусора от ELF, немного не дотягивает до "Astonishia Story 2" (368'544), но зато свободно бы влез в заголовок от "Everybody's Sukkiri #1" (430'176 byte).

2. По второму пункту - разархивированный файл так же забит на 2/3 нулями, чтобы подогнать его под размер заголовка в 0x28



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

Yoti 27.04.2013 10:28

В ранних версиях энкриптера не было сжатия, как я помню. Потом его допилили.
В коде даже есть проверка на использование сжатия:
Код
Код:

int is_compressed(u8 *psp_header)
{
        if (*(u16*)(psp_header+6) == 1) {
                return 1; // 1 = да
        }

        return 0; // 0 = нет
}

Код:

typedef struct
{
    u32 signature;          //0
    u16 mod_attribute;      //4
    u16 comp_attribute;    //6 <-- флаг компрессии (сжатия)
    u8 module_ver_lo;      //8
    u8 module_ver_hi;      //9
    char modname[28];      //0xA
    u8 mod_version;        //0x26
    u8 nsegments;          //0x27
    u32 elf_size;          //0x28
    u32 psp_size;          //0x2C
    u32 boot_entry;        //0x30
    u32 modinfo_offset; //0x34
    int bss_size;          //0x38
    u32 seg_align[4];      //0x3C
    u32 seg_address[4];    //0x44
    int seg_size[4];        //0x54
    u32 reserved[5];        //0x64
    u32 devkit_version;    //0x78
    u8 decrypt_mode;        //0x7C
    u8 padding;                    //0x7D
    u8 overlap_size;        //0x7E
    u8 key_data[0x30];      //0x80
    u32 comp_size;          //0xB0
    int _80;                        //0xB4
    u32 unk_B8;                    //0xB8
    u32 unk_BC;                    //0xBC
    u8 key_data2[0x10];    //0xC0
    u32 tag;                        //0xD0
    u8 scheck[0x58];        //0xD4
    u8 sha1_hash[0x14];    //0x12C
    u8 key_data4[0x10]; //0x140
} PSP_Header2; //0x150


А что в итоге нужно я так и не понял. Проверку на размер по 0xB0 вместо 0x28?
Так там в "забег" по заголовкам отправляется размер файла на харде.
Код
Код:

int load_elf(char *elff)
{
        FILE *fp = fopen(elff, "rb");

        if(fp == NULL) {
                return -1;
        }

        fseek(fp, 0, SEEK_END);
        int size = ftell(fp); // получаем размер файла
        fseek(fp, 0, SEEK_SET);
        fread(elf, 1, size, fp);
        fclose(fp);

        return size; // возращаем значение
}

Код:

Header_List *target_header = get_header_list( elfSize ); // отправляем в "забег"
Код:

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; // подходящего заголовка нет
}


ErikPshat 27.04.2013 14:56

Цитата:

Сообщение от Yoti (Сообщение 1070569)
А что в итоге нужно я так и не понял. Проверку на размер по 0xB0 вместо 0x28?

Да нет, не совсем так. Выше 2 моих лигбеза специально сравнивают 2 механизма сжатия - оригинальное и фейковое.
  1. В оригинальном механизме файл почти в 1 Мб сжимается в 368 Кб и потом шифруется.
  2. В фейковом механизме файл почти в 1 Мб сначала подбирается под заголовок большего размера, потом ЗАЧЕМ-ТО сжимается и шифруется.
Вопрос в том - нафига тогда вообще используют сжатие, если всё получается так же, как без сжатия.
Должно быть не так. Файл сначала должен сжаться, а только потом подбираться заголовок под маленький сжатый файл, а потом всё остальное.

frostegater 28.04.2013 03:45

Цитата:

Сообщение от ErikPshat (Сообщение 1070469)
Для запуска приложений, использующих 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;
}


ErikPshat 28.04.2013 04:20

Цитата:

Сообщение от frostegater (Сообщение 1070629)
их нужно располагать в строгом порядке возрастания размера подписи

Они именно так расположены.
Сами хедеры идут сверху вниз по убыванию размера в заголовке, а листинг, список хедеров, идёт по возрастанию размеров.
Таблица в шапке уже составлена по возрастанию, а я располагал хедеры именно в том порядке, как было подготовлено в таблице.

Тут всё правильно, подпись берётся именно по возрастанию. Я проверял, если файл не умещается в заголовок, то берётся следующий.

А вот со сжатием в энкриптере совсем не правильно. Что оно есть, что его нет - один фиг.
Просто сжатие есть и сжимает, но потом подписывает заголовком большим, чем декриптованный файл.

Ну если бы ты повнимательнее почитал бы, что я написал и вник бы, то наверное бы всё понял.

frostegater 28.04.2013 06:36

ErikPshat, ну вот смотри, ты хочешь чтобы все было так:
  1. Считали некриптованый файл
  2. Зажали его
  3. Измерили размер
  4. Подобрали заголовок
  5. Загнали нулями пустое место
  6. Подписали
Я прав?

ErikPshat 28.04.2013 07:51

frostegater, да, именно так, но немного не так. Ещё нужно, чтобы математика была точной и опираться на указанные в заголовке размеры:
  • 0x28 - размер ELF декриптованного файла.
  • 0x2C - размер всего файла с заголовком.
  • 0xB0 - размер архива.
Только по твоей формуле как мы будем забивать декриптованный ELF нулями до размера 0x28, если он уже будет запакован :D
Тут нужно как-то изловчиться по другому...
  1. Считали некриптованый ELF файл
  2. Подобрали заголовок >= по позиции 0х28
  3. Забили ELF нулями до этого размера 0х28
  4. Зажали его
  5. Измерили размер архива
    • (размер разархивированного архива записан в последних 4-ёх байтах GZ-архива, должен равняться позиции 0x28 - это и есть конец архива)
  6. Забили конец архива нулями до размера в позиции 0xB0
  7. Подписали


Я не понимаю, как у них внутри архива оказывается конец на 1/3 архива, а остальное забито остатками декриптованного незаархивированного ELF. Они наверное архивируют не в чистое место памяти, а прямо туда же в начало, где находится ELF, потом отрезают по размеру 0xB0 и получается хвост не просто забитый нулями, а забитый остатками ELF :D

Причём зачем-то в последней строчке нулевого архива вставляют какой-то код. Оно ведь и так конец читать не будет и правильно разархивируется.

Yoti 28.04.2013 23:45

Цитата:

Сообщение от frostegater (Сообщение 1070629)
Ну во-первых rebootex не есть модуль. Чтобы досконально изучить это дело можешь посмотреть Davee's Downgrader. Схема работы такая.

Я ему в личку про это писал.

Цитата:

Сообщение от ErikPshat (Сообщение 1070630)
Ну если бы ты повнимательнее почитал бы, что я написал и вник бы, то наверное бы всё понял.

Что я, что Фрости могут сделать что нужно, но оба нифига не поняли. У тебя, как я и говорил у тебя в гостях, в тексте слишком много воды. Как всё работает я спокойно могу прочесть в исходниках. А вот что не так по твоему мнению приходится выискивать в дебрях букв. Единственное, что я нормально понял, так это то, что эльф своим же родным заголовком не подписывается - вот от этого утверждения ещё можно плясать.

ErikPshat 29.04.2013 00:39

Цитата:

Сообщение от Yoti (Сообщение 1070678)
эльф своим же родным заголовком не подписывается - вот от этого утверждения ещё можно плясать.

Ну да, я об этом постоянно твержу ))
Просто я более подробнее описываю суть проблемы и в каком месте, что программа работает не так, как должно быть.
И подробно описал принцип ихней упаковки на примере последующей распаковки.

Можешь сам проверить на оригинальных исходниках.
Удаляешь оттуда все лишние хедеры с кирками и оставляешь только 1 кирк с хедером от того же файла, который хочешь подписать.
Взять тот же Astonishia Story 2 или vshmain.prx, или любой другой.
Ессно файл не влезет обратно в свой родной заголовок и будет ошибка "ELF is to big"

P.S. Порядок упорядочивания кода я уже написал в предыдущем посту.

Yoti 29.04.2013 01:21

Цитата:

Сообщение от ErikPshat (Сообщение 1070684)
Порядок упорядочивания кода я уже написал в предыдущем посту.

Вот это немного сбивает с толку, на самом деле. Я тебе цитировал код вверху, там же не по пунктам разложено =)

ErikPshat 29.04.2013 03:09

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.

Yoti 29.04.2013 03:46

1) У меня нифига не компилится энкриптер, и разбираться чего не хватает поздновато уже.
2) Ну, можно попробовать так подсунуть:
Код:

        int elfSize = load_elf(argv[1]);

        if(elfSize < 0) {
                printf("Cannot open %s\n", argv[1]);

                return 0;
        }

        // пробуем подкинуть сжатие пораньше
        gzip_compress(argv[1], argv[1], elfSize)

        Header_List *target_header = get_header_list( elfSize );

3) Почему у тебя в итоге DATA.ENC выходит? Пришлось хексить, чтобы по ENCRYPT=1 работало.

ErikPshat 29.04.2013 04:11

Yoti
1) Я вроде ничего такого не ставил, но вроде Cygwin.exe всё решает.
2) Попробую...
3) А ты его в SDK положил )) Ну я так сделал, чтобы в папке не затирался декриптованный исходник DATA.PSP. Поначалу исходник сразу копировал в папку SOURCE, да потом что-то решил так сделать.

А кстати, всё-таки ведь файл подбирается не по порядку списка, а наверное выбирается наименьший подходящий размер.
Блин, сижу щас таблицу заполняю по размерам декриптованных ELF, чтобы понять почему так прыгает далеко. Просто у Astonishia Story размер декриптованный очень большой, поэтому наверное не может найти более подходящий хедер поменьше. Но полюбэ должен же подойти свой родной.

Кстати, размер архива берётся из kirk_header 0x70 - там дублируется тот же размер, что и в psp_header 0xB0. Ну ты и сам знаешь ))

ErikPshat 29.04.2013 04:58

1. А может список хедеров нужно было выстраивать по ELF размеру, а не по размеру всего файла? Или всё-таки он не находит подходящий из всего списка...
2. Может он тупо не может сжать файл до 0xB0? Потому что я смотрел сжатый файл Astonishia, так он больше получается, чем записано в 0xB0. Но в коде не заметил, чтобы он по этому параметру производил листинг.

Странно, через 7-Zip он у меня сжимается значительно сильнее в GZIP. Вот с такими параметрами:
  • 7z a -tgzip DATA.PSP DATA -mx=7 -mfb=64 -mpass=3
Спецификацию сжатия я тут изложил: https://www.pspx.ru/forum/showpost.ph...81&postcount=1
В коде я смотрю параметры такие стоят:
Код:

        ret = deflateInit2(&strm, 9, Z_DEFLATED, 15+16, 8, Z_DEFAULT_STRATEGY);

frostegater 30.04.2013 16:48

Дайте libz.a. Глупые люди думают, что его легче собрать чем скачать бинар.

ErikPshat 30.04.2013 18:09

Цитата:

Сообщение от Yoti (Сообщение 1070704)
2) Ну, можно попробовать так подсунуть:

Сжатие раньше - думаю не выход.
  • Там по-ходу от размера заголовка отнимается 0x150, а потом идёт сравнение. А нужно, чтобы соблюдалось условие >= без всяких вычитаний.
  • И может быть файл не может ужаться до размера 0xB0, поэтому ищется следующий подходящий заголовок.
Интересно, как можно добиться максимального уровня сжатия, как на компе:
  • 7z a -tgzip DATA.PSP DATA -mx=9 -mfb=128 -mpass=8

Библиотека в SDK вроде использует урезаный механизм:
  • ret = deflateInit2(&strm, 9, Z_DEFLATED, 15+16, 8, Z_DEFAULT_STRATEGY);
Уровень сжатия максимум = 9
Метод сжатия для GZ только = Z_DEFLATED
windowBits состоит из двух логарифмов и может быть в пределах 8-15. Если добавить +16, то не будет включаться название файла, подсчитываться CRC и прочие плюшки.
memLevel может быть в пределах 1-9, здесь стоит = 8

Интересный пример GZIP

frostegater 01.05.2013 01:45

ErikPshat, ты дал libz из pspsdk. А ты мне из цигвина дай.

ErikPshat 01.05.2013 06:03

Цитата:

Сообщение от frostegater (Сообщение 1070851)
А ты мне из цигвина дай.

Ну вот тогда, нашёлся здесь: C:\cygwin\usr\x86_64-w64-mingw32\sys-root\mingw\lib

Кстати, разработчики игры Astonishia ведь как-то ужали так сильно файл в GZ какой-то библиотекой, значит должно ужаться с совместимостью.



Короче, тут дело в сжатии. Он просто не может сжать файл до исходного размера, как он был сжат ранее, поэтому сжимает и потом ищет не среди psp_header по размеру файла 0x28, а по размеру архива из KIRK-заголовков, продублированного в 0x70 в кирке (0xB0 в psp_header):
Код:

int get_kirk_size(u8 *key_hdr)
{
        int krawSize = *(u32*)(key_hdr+0x70);

        if(krawSize % 0x10) {
                krawSize += 0x10 - (krawSize % 0x10); // 16 bytes aligned
        }

        krawSize += 0x110;

        return krawSize;
}

krawSize - это и есть размер архива, записанного в kirk_header по адресу 0x70.

Поэтому, даже если размер ELF >= размера в psp_header, то он берёт нужный хедер, но, если после сжатия размер архива не подходит к kirk_header, то он по списку ищет следующий подходящий по размеру среди kirk_header-ов.
Другой вопрос - действительно ли он ищет по порядку в списке или всё-таки из всего списка выбирает наиболее подходящий?

ErikPshat 01.05.2013 09:10

Вложений: 1
Насколько знаю, архиватор 7-Zip всегда сжимает в правильный GZIP с любыми настройками сжатия, поэтому провёл ещё эксперимент...
  1. Отключил в PrxEncrypter сжатие в GZIP /* закомментил */
  2. Подключил внешнее сжатие через 7-Zip по максимуму (-mx=9 -mfb=128 -mpass=10 - Ультра)
  3. Кидаем декриптованный ELF (DATA.PSP) в папку и запускаем SIGN.BAT - файл сжимается через 7-Zip и подписывается.
  4. Собственно ELF Astonishia подписалась своим собственным заголовком и прекрасно функционирует на оффпрошивке.
Причём энкриптер по прежнему автоматом сам добавляет нули к архиву до размера в кирке 0x70.

Но есть одно но, т.к. мы подсовываем Энкриптеру готовый архив, предварительно прогнанный через 7-Zip, то к ELF-файлу нули не добавляются до размера 0x28, потому что он заархивирован ))) У Astonishia ничего добавлять не нужно, т.к. ELF уже имеет нужный размер к своему же заголовку.

Поэтому, если мы берём декриптованный файл меньше указанного в заголовке, то сначала добиваем его нулями, а потом кидаем для сжатия и подписи.
Так же чётко подписался архив "Cube Sample", предварительно конечно добитый нулями до указанного в заголовке размера в 0x28.
Можете сами потестить, всё в архиве заготовлено.

Как можно подключить библиотеки 7-Zip к исходникам? И где их ваще взять?
Кстати, Zlib в SDK лежит версии 1.2.5, а на оффсайте уже zlib 1.2.8 (April 28, 2013)


Текущее время: 00:46. Часовой пояс GMT +3.

Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2024, vBulletin Solutions, Inc. Перевод: zCarot
PSPx Forum - Сообщество фанатов игровых консолей.