Important Announcement
Forum has been made read-only. Please click here for more information or here to return to The Spriters Resource.

Ripping from Pokkén Tournament
#1
Hello. I want to rip from Pokkén Tournament, but I have no idea how to open containers from game data. Everythig is contained in .drp containers. If you have any idea on how to open these containers, please tell me. I'l include one of the containers in attachments.


Attached Files
.zip   p000_000_main.zip (Size: 135.16 KB / Downloads: 429)
Reply
#2
It's pretty much impossible to get at them, everything in the game has a second layer of encryption on it. Won't be possible until someone finds the correct AES key in the game's coding, which could take a long time. Sick

(EDIT: No longer the case, see later posts in this topic!)
Reply
#3
Yeah. But I know how to disasemble wii u binaries and I have a lot of free time, so I may try to find the decryption key. Wink Wink Wink
Reply
#4
Wink 
I've sucesefully dumped load_drp instruction from ferrum_app.rpx:
[SPOILER]
.text:02B83D30
.text:02B83D30
.text:02B83D30 # _Q2_5sysdr12ResourceData::load_drp__Q2_5sysdr36__N_20_dr_resource_list_cpp_8bdc2d44FQ2_5sysdr41SharedPtr__tm(void)
.text:02B83D30 load_drp__Q2_5sysdr36__N_20_dr_resource_list_cpp_8bdc2d44FQ2_5sysdr41SharedPtr__tm__24_Q2_5sysdr12ResourceData:
.text:02B83D30                                         # DATA XREF: sysdr::ResourceListManager::ResourceListManager((void))+4F0o
.text:02B83D30                                         # sysdr::ResourceListManager::ResourceListManager((void))+4FCo
.text:02B83D30
.text:02B83D30 .set var_10, -0x10
.text:02B83D30 .set var_C, -0xC
.text:02B83D30 .set var_8, -8
.text:02B83D30 .set var_4, -4
.text:02B83D30 .set arg_4,  4
.text:02B83D30
.text:02B83D30                 mflr      r0
.text:02B83D34                 stwu      r1, -0x18(r1)
.text:02B83D38                 stw       r30, 0x18+var_8(r1)
.text:02B83D3C                 stw       r29, 0x18+var_C(r1)
.text:02B83D40                 stw       r31, 0x18+var_4(r1)
.text:02B83D44                 stw       r0, 0x18+arg_4(r1)
.text:02B83D48                 mr        r29, r3
.text:02B83D4C                 li        r6, 0
.text:02B83D50                 lwz       r3, 0(r3)
.text:02B83D54                 mr        r4, r6
.text:02B83D58                 stw       r6, 0x18+var_10(r1)
.text:02B83D5C                 addi      r5, r1, 0x18+var_10
.text:02B83D60                 stw       r6, 0x470(r3)
.text:02B83D64                 bl        ReadFile__Q2_5sysdr12ResourceDataFiPPvb # sysdr::ResourceData::ReadFile((int,void **,bool))
.text:02B83D68                 mr.       r30, r3
.text:02B83D6C                 mr        r31, r4
.text:02B83D70                 bgt       loc_2B83DA0
.text:02B83D74                 blt       loc_2B83D80
.text:02B83D78                 cmplwi    r31, 0
.text:02B83D7C                 bgt       loc_2B83DA0
.text:02B83D80
.text:02B83D80 loc_2B83D80:                            # CODE XREF: _Q2_5sysdr12ResourceData::load_drp__Q2_5sysdr36__N_20_dr_resource_list_cpp_8bdc2d44FQ2_5sysdr41SharedPtr__tm(void)+44j
.text:02B83D80                 lwz       r29, 0x18+var_C(r1)
.text:02B83D84                 lwz       r0, 0x18+arg_4(r1)
.text:02B83D88                 lwz       r30, 0x18+var_8(r1)
.text:02B83D8C                 mtlr      r0
.text:02B83D90                 lwz       r31, 0x18+var_4(r1)
.text:02B83D94                 addi      r1, r1, 0x18
.text:02B83D98                 li        r3, 0
.text:02B83D9C                 blr
.text:02B83DA0 # ---------------------------------------------------------------------------
.text:02B83DA0
.text:02B83DA0 loc_2B83DA0:                            # CODE XREF: _Q2_5sysdr12ResourceData::load_drp__Q2_5sysdr36__N_20_dr_resource_list_cpp_8bdc2d44FQ2_5sysdr41SharedPtr__tm(void)+40j
.text:02B83DA0                                         # _Q2_5sysdr12ResourceData::load_drp__Q2_5sysdr36__N_20_dr_resource_list_cpp_8bdc2d44FQ2_5sysdr41SharedPtr__tm(void)+4Cj
.text:02B83DA0                 lwz       r3, 0x18+var_10(r1)
.text:02B83DA4                 mr        r4, r31
.text:02B83DA8                 bl        ResourcePackDecrypt__5sysdrFPvUi # sysdr::ResourcePackDecrypt((void *,uint))
.text:02B83DAC                 cmpwi     r3, 0
.text:02B83DB0                 bne       loc_2B83DDC
.text:02B83DB4                 lwz       r3, 0x18+var_10(r1)
.text:02B83DB8                 bl        SystemFree__5sysdrFPv # sysdr::SystemFree((void *))
.text:02B83DBC                 lwz       r29, 0x18+var_C(r1)
.text:02B83DC0                 lwz       r0, 0x18+arg_4(r1)
.text:02B83DC4                 lwz       r30, 0x18+var_8(r1)
.text:02B83DC8                 mtlr      r0
.text:02B83DCC                 lwz       r31, 0x18+var_4(r1)
.text:02B83DD0                 addi      r1, r1, 0x18
.text:02B83DD4                 li        r3, 0
.text:02B83DD8                 blr
.text:02B83DDC # ---------------------------------------------------------------------------
.text:02B83DDC
.text:02B83DDC loc_2B83DDC:                            # CODE XREF: _Q2_5sysdr12ResourceData::load_drp__Q2_5sysdr36__N_20_dr_resource_list_cpp_8bdc2d44FQ2_5sysdr41SharedPtr__tm(void)+80j
.text:02B83DDC                 lwz       r10, 0(r29)
.text:02B83DE0                 lwz       r0, 0x18+var_10(r1)
.text:02B83DE4                 stw       r31, 0x488(r10)
.text:02B83DE8                 li        r3, 1
.text:02B83DEC                 stw       r0, 0x480(r10)
.text:02B83DF0                 stw       r3, 0x470(r10)
.text:02B83DF4                 lwz       r29, 0x18+var_C(r1)
.text:02B83DF8                 lwz       r0, 0x18+arg_4(r1)
.text:02B83DFC                 lwz       r30, 0x18+var_8(r1)
.text:02B83E00                 mtlr      r0
.text:02B83E04                 lwz       r31, 0x18+var_4(r1)
.text:02B83E08                 addi      r1, r1, 0x18
.text:02B83E0C                 blr
.text:02B83E0C # End of function _Q2_5sysdr12ResourceData::load_drp__Q2_5sysdr36__N_20_dr_resource_list_cpp_8bdc2d44FQ2_5sysdr41SharedPtr__tm(void)
.text:02B83E0C
.text:02B83E10
[/SPOILER]
Reply
#5
.text:02B83DA8 bl ResourcePackDecrypt__5sysdrFPvUi # sysdr::ResourcePackDecrypt((void *,uint))

Dump this function. If you're using IDA Pro you just have to go jump to the bl'd function name.
Reply
#6
Wink 
(04-11-2016, 07:19 AM)TGE Wrote: .text:02B83DA8                 bl        ResourcePackDecrypt__5sysdrFPvUi # sysdr::ResourcePackDecrypt((void *,uint))

Dump this function. If you're using IDA Pro you just have to go jump to the bl'd function name.

Here you go:
[SPOILER]
.text:02B8EF8C
.text:02B8EF8C
.text:02B8EF8C # sysdr::ResourcePackDecrypt((void *, unsigned int))
.text:02B8EF8C ResourcePackDecrypt__5sysdrFPvUi:       # CODE XREF: _Q2_5sysdr12ResourceData::load_drp__Q2_5sysdr36__N_20_dr_resource_list_cpp_8bdc2d44FQ2_5sysdr41SharedPtr__tm(void)+78p
.text:02B8EF8C
.text:02B8EF8C .set var_40, -0x40
.text:02B8EF8C .set var_2C, -0x2C
.text:02B8EF8C .set arg_4,  4
.text:02B8EF8C
.text:02B8EF8C                 stwu      r1, -0x48(r1)
.text:02B8EF90                 stmw      r21, 0x48+var_2C(r1)
.text:02B8EF94                 mflr      r0
.text:02B8EF98                 stw       r0, 0x48+arg_4(r1)
.text:02B8EF9C                 lwz       r5, 0x1C(r3)
.text:02B8EFA0                 mr        r30, r3
.text:02B8EFA4                 cmpwi     r5, 0
.text:02B8EFA8                 mr        r27, r4
.text:02B8EFAC                 beq       loc_2B8F2C0
.text:02B8EFB0                 lis       r4, 0x133 # 0x132B471
.text:02B8EFB4                 addi      r3, r1, 0x48+var_40
.text:02B8EFB8                 addi      r4, r4, -0x4B8F # 0x132B471
.text:02B8EFBC                 bl        Init__Q2_5sysdr8RandomXSFi # sysdr::RandomXS::Init((int))
.text:02B8EFC0                 lwz       r4, 0x1C(r30)
.text:02B8EFC4                 addi      r3, r1, 0x48+var_40
.text:02B8EFC8                 bl        Init__Q2_5sysdr8RandomXSFi # sysdr::RandomXS::Init((int))
.text:02B8EFCC                 clrlwi.   r7, r27, 30
.text:02B8EFD0                 li        r23, 0
.text:02B8EFD4                 beq       loc_2B8F17C
.text:02B8EFD8                 cmpwi     r27, 0
.text:02B8EFDC                 beq       loc_2B8F2C0
.text:02B8EFE0                 srwi.     r22, r27, 3
.text:02B8EFE4                 ble       loc_2B8F12C
.text:02B8EFE8                 addi      r24, r30, -8
.text:02B8EFEC                 li        r31, -0x18
.text:02B8EFF0                 li        r29, -0x19
.text:02B8EFF4                 li        r26, -0x1A
.text:02B8EFF8                 li        r25, -0x1B
.text:02B8EFFC
.text:02B8EFFC loc_2B8EFFC:                            # CODE XREF: sysdr::ResourcePackDecrypt((void *,uint))+19Cj
.text:02B8EFFC                 addi      r8, r31, -4
.text:02B8F000                 cmplwi    r8, 4
.text:02B8F004                 lbzx      r21, r30, r23
.text:02B8F008                 blt       loc_2B8F020
.text:02B8F00C                 addi      r3, r1, 0x48+var_40
.text:02B8F010                 bl        GetInt__Q2_5sysdr8RandomXSFv # sysdr::RandomXS::GetInt((void))
.text:02B8F014                 srawi     r9, r3, 3
.text:02B8F018                 xor       r10, r21, r9
.text:02B8F01C                 stbx      r10, r30, r23
.text:02B8F020
.text:02B8F020 loc_2B8F020:                            # CODE XREF: sysdr::ResourcePackDecrypt((void *,uint))+7Cj
.text:02B8F020                 lbz       r21, 9(r24)
.text:02B8F024                 cmplwi    r25, 4
.text:02B8F028                 addi      r24, r24, 8
.text:02B8F02C                 blt       loc_2B8F044
.text:02B8F030                 addi      r3, r1, 0x48+var_40
.text:02B8F034                 bl        GetInt__Q2_5sysdr8RandomXSFv # sysdr::RandomXS::GetInt((void))
.text:02B8F038                 srawi     r0, r3, 3
.text:02B8F03C                 xor       r0, r21, r0
.text:02B8F040                 stb       r0, 1(r24)
.text:02B8F044
.text:02B8F044 loc_2B8F044:                            # CODE XREF: sysdr::ResourcePackDecrypt((void *,uint))+A0j
.text:02B8F044                 cmplwi    r26, 4
.text:02B8F048                 lbz       r21, 2(r24)
.text:02B8F04C                 blt       loc_2B8F064
.text:02B8F050                 addi      r3, r1, 0x48+var_40
.text:02B8F054                 bl        GetInt__Q2_5sysdr8RandomXSFv # sysdr::RandomXS::GetInt((void))
.text:02B8F058                 srawi     r0, r3, 3
.text:02B8F05C                 xor       r0, r21, r0
.text:02B8F060                 stb       r0, 2(r24)
.text:02B8F064
.text:02B8F064 loc_2B8F064:                            # CODE XREF: sysdr::ResourcePackDecrypt((void *,uint))+C0j
.text:02B8F064                 cmplwi    r29, 4
.text:02B8F068                 lbz       r21, 3(r24)
.text:02B8F06C                 blt       loc_2B8F084
.text:02B8F070                 addi      r3, r1, 0x48+var_40
.text:02B8F074                 bl        GetInt__Q2_5sysdr8RandomXSFv # sysdr::RandomXS::GetInt((void))
.text:02B8F078                 srawi     r0, r3, 3
.text:02B8F07C                 xor       r0, r21, r0
.text:02B8F080                 stb       r0, 3(r24)
.text:02B8F084
.text:02B8F084 loc_2B8F084:                            # CODE XREF: sysdr::ResourcePackDecrypt((void *,uint))+E0j
.text:02B8F084                 cmplwi    r31, 4
.text:02B8F088                 lbz       r21, 4(r24)
.text:02B8F08C                 blt       loc_2B8F0A4
.text:02B8F090                 addi      r3, r1, 0x48+var_40
.text:02B8F094                 bl        GetInt__Q2_5sysdr8RandomXSFv # sysdr::RandomXS::GetInt((void))
.text:02B8F098                 srawi     r8, r3, 3
.text:02B8F09C                 xor       r0, r21, r8
.text:02B8F0A0                 stb       r0, 4(r24)
.text:02B8F0A4
.text:02B8F0A4 loc_2B8F0A4:                            # CODE XREF: sysdr::ResourcePackDecrypt((void *,uint))+100j
.text:02B8F0A4                 addi      r11, r25, 4
.text:02B8F0A8                 cmplwi    r11, 4
.text:02B8F0AC                 lbz       r21, 5(r24)
.text:02B8F0B0                 blt       loc_2B8F0C8
.text:02B8F0B4                 addi      r3, r1, 0x48+var_40
.text:02B8F0B8                 bl        GetInt__Q2_5sysdr8RandomXSFv # sysdr::RandomXS::GetInt((void))
.text:02B8F0BC                 srawi     r0, r3, 3
.text:02B8F0C0                 xor       r0, r21, r0
.text:02B8F0C4                 stb       r0, 5(r24)
.text:02B8F0C8
.text:02B8F0C8 loc_2B8F0C8:                            # CODE XREF: sysdr::ResourcePackDecrypt((void *,uint))+124j
.text:02B8F0C8                 addi      r0, r26, 4
.text:02B8F0CC                 cmplwi    r0, 4
.text:02B8F0D0                 lbz       r21, 6(r24)
.text:02B8F0D4                 blt       loc_2B8F0EC
.text:02B8F0D8                 addi      r3, r1, 0x48+var_40
.text:02B8F0DC                 bl        GetInt__Q2_5sysdr8RandomXSFv # sysdr::RandomXS::GetInt((void))
.text:02B8F0E0                 srawi     r5, r3, 3
.text:02B8F0E4                 xor       r0, r21, r5
.text:02B8F0E8                 stb       r0, 6(r24)
.text:02B8F0EC
.text:02B8F0EC loc_2B8F0EC:                            # CODE XREF: sysdr::ResourcePackDecrypt((void *,uint))+148j
.text:02B8F0EC                 addi      r0, r29, 4
.text:02B8F0F0                 cmplwi    r0, 4
.text:02B8F0F4                 lbz       r21, 7(r24)
.text:02B8F0F8                 blt       loc_2B8F110
.text:02B8F0FC                 addi      r3, r1, 0x48+var_40
.text:02B8F100                 bl        GetInt__Q2_5sysdr8RandomXSFv # sysdr::RandomXS::GetInt((void))
.text:02B8F104                 srawi     r0, r3, 3
.text:02B8F108                 xor       r0, r21, r0
.text:02B8F10C                 stb       r0, 7(r24)
.text:02B8F110
.text:02B8F110 loc_2B8F110:                            # CODE XREF: sysdr::ResourcePackDecrypt((void *,uint))+16Cj
.text:02B8F110                 addi      r25, r25, 8
.text:02B8F114                 addi      r26, r26, 8
.text:02B8F118                 addi      r29, r29, 8
.text:02B8F11C                 addic.    r22, r22, -1
.text:02B8F120                 addi      r23, r23, 8
.text:02B8F124                 addi      r31, r31, 8
.text:02B8F128                 bne       loc_2B8EFFC
.text:02B8F12C
.text:02B8F12C loc_2B8F12C:                            # CODE XREF: sysdr::ResourcePackDecrypt((void *,uint))+58j
.text:02B8F12C                 clrlwi.   r29, r27, 29
.text:02B8F130                 ble       loc_2B8F2C0
.text:02B8F134                 addi      r31, r23, -0x1C
.text:02B8F138
.text:02B8F138 loc_2B8F138:                            # CODE XREF: sysdr::ResourcePackDecrypt((void *,uint))+1D8j
.text:02B8F138                 cmplwi    r31, 4
.text:02B8F13C                 lbzx      r21, r30, r23
.text:02B8F140                 blt       loc_2B8F158
.text:02B8F144                 addi      r3, r1, 0x48+var_40
.text:02B8F148                 bl        GetInt__Q2_5sysdr8RandomXSFv # sysdr::RandomXS::GetInt((void))
.text:02B8F14C                 srawi     r0, r3, 3
.text:02B8F150                 xor       r0, r21, r0
.text:02B8F154                 stbx      r0, r30, r23
.text:02B8F158
.text:02B8F158 loc_2B8F158:                            # CODE XREF: sysdr::ResourcePackDecrypt((void *,uint))+1B4j
.text:02B8F158                 addic.    r29, r29, -1
.text:02B8F15C                 addi      r31, r31, 1
.text:02B8F160                 addi      r23, r23, 1
.text:02B8F164                 bne       loc_2B8F138
.text:02B8F168                 lha       r0, 0x14(r30)
.text:02B8F16C                 cmpwi     r0, 3
.text:02B8F170                 addi      r0, r30, 0x60
.text:02B8F174                 blt       loc_2B8F30C
.text:02B8F178                 b         loc_2B8F2D0
.text:02B8F17C # ---------------------------------------------------------------------------
.text:02B8F17C
.text:02B8F17C loc_2B8F17C:                            # CODE XREF: sysdr::ResourcePackDecrypt((void *,uint))+48j
.text:02B8F17C                 srwi.     r31, r27, 2
.text:02B8F180                 lwz       r26, 0x1C(r30)
.text:02B8F184                 li        r25, 0
.text:02B8F188                 beq       loc_2B8F2BC
.text:02B8F18C                 srwi.     r22, r31, 3
.text:02B8F190                 ble       loc_2B8F284
.text:02B8F194                 addi      r24, r30, -0x20
.text:02B8F198                 slwi      r23, r22, 3
.text:02B8F19C
.text:02B8F19C loc_2B8F19C:                            # CODE XREF: sysdr::ResourcePackDecrypt((void *,uint))+2F4j
.text:02B8F19C                 lwzu      r21, 0x20(r24)
.text:02B8F1A0                 addi      r3, r1, 0x48+var_40
.text:02B8F1A4                 bl        GetInt__Q2_5sysdr8RandomXSFv # sysdr::RandomXS::GetInt((void))
.text:02B8F1A8                 xor       r0, r21, r3
.text:02B8F1AC                 lwz       r21, 4(r24)
.text:02B8F1B0                 xor       r4, r0, r25
.text:02B8F1B4                 extlwi    r25, r3, 1,13
.text:02B8F1B8                 addi      r3, r1, 0x48+var_40
.text:02B8F1BC                 stw       r4, 0(r24)
.text:02B8F1C0                 bl        GetInt__Q2_5sysdr8RandomXSFv # sysdr::RandomXS::GetInt((void))
.text:02B8F1C4                 xor       r5, r21, r3
.text:02B8F1C8                 lwz       r21, 8(r24)
.text:02B8F1CC                 xor       r6, r5, r25
.text:02B8F1D0                 extlwi    r25, r3, 1,13
.text:02B8F1D4                 addi      r3, r1, 0x48+var_40
.text:02B8F1D8                 stw       r6, 4(r24)
.text:02B8F1DC                 bl        GetInt__Q2_5sysdr8RandomXSFv # sysdr::RandomXS::GetInt((void))
.text:02B8F1E0                 xor       r7, r21, r3
.text:02B8F1E4                 lwz       r21, 0xC(r24)
.text:02B8F1E8                 xor       r8, r7, r25
.text:02B8F1EC                 extlwi    r25, r3, 1,13
.text:02B8F1F0                 addi      r3, r1, 0x48+var_40
.text:02B8F1F4                 stw       r8, 8(r24)
.text:02B8F1F8                 bl        GetInt__Q2_5sysdr8RandomXSFv # sysdr::RandomXS::GetInt((void))
.text:02B8F1FC                 xor       r9, r21, r3
.text:02B8F200                 lwz       r21, 0x10(r24)
.text:02B8F204                 xor       r10, r9, r25
.text:02B8F208                 extlwi    r25, r3, 1,13
.text:02B8F20C                 addi      r3, r1, 0x48+var_40
.text:02B8F210                 stw       r10, 0xC(r24)
.text:02B8F214                 bl        GetInt__Q2_5sysdr8RandomXSFv # sysdr::RandomXS::GetInt((void))
.text:02B8F218                 xor       r0, r21, r3
.text:02B8F21C                 lwz       r21, 0x14(r24)
.text:02B8F220                 xor       r0, r0, r25
.text:02B8F224                 extlwi    r25, r3, 1,13
.text:02B8F228                 addi      r3, r1, 0x48+var_40
.text:02B8F22C                 stw       r0, 0x10(r24)
.text:02B8F230                 bl        GetInt__Q2_5sysdr8RandomXSFv # sysdr::RandomXS::GetInt((void))
.text:02B8F234                 xor       r0, r21, r3
.text:02B8F238                 lwz       r21, 0x18(r24)
.text:02B8F23C                 xor       r4, r0, r25
.text:02B8F240                 extlwi    r25, r3, 1,13
.text:02B8F244                 addi      r3, r1, 0x48+var_40
.text:02B8F248                 stw       r4, 0x14(r24)
.text:02B8F24C                 bl        GetInt__Q2_5sysdr8RandomXSFv # sysdr::RandomXS::GetInt((void))
.text:02B8F250                 xor       r6, r21, r3
.text:02B8F254                 lwz       r21, 0x1C(r24)
.text:02B8F258                 xor       r7, r6, r25
.text:02B8F25C                 extlwi    r25, r3, 1,13
.text:02B8F260                 addi      r3, r1, 0x48+var_40
.text:02B8F264                 stw       r7, 0x18(r24)
.text:02B8F268                 bl        GetInt__Q2_5sysdr8RandomXSFv # sysdr::RandomXS::GetInt((void))
.text:02B8F26C                 xor       r8, r21, r3
.text:02B8F270                 xor       r9, r8, r25
.text:02B8F274                 extlwi    r25, r3, 1,13
.text:02B8F278                 addic.    r22, r22, -1
.text:02B8F27C                 stw       r9, 0x1C(r24)
.text:02B8F280                 bne       loc_2B8F19C
.text:02B8F284
.text:02B8F284 loc_2B8F284:                            # CODE XREF: sysdr::ResourcePackDecrypt((void *,uint))+204j
.text:02B8F284                 clrlwi.   r24, r31, 29
.text:02B8F288                 ble       loc_2B8F2BC
.text:02B8F28C                 slwi      r10, r23, 2
.text:02B8F290                 add       r31, r30, r10
.text:02B8F294                 addi      r31, r31, -4
.text:02B8F298
.text:02B8F298 loc_2B8F298:                            # CODE XREF: sysdr::ResourcePackDecrypt((void *,uint))+32Cj
.text:02B8F298                 lwzu      r21, 4(r31)
.text:02B8F29C                 addi      r3, r1, 0x48+var_40
.text:02B8F2A0                 bl        GetInt__Q2_5sysdr8RandomXSFv # sysdr::RandomXS::GetInt((void))
.text:02B8F2A4                 xor       r11, r21, r3
.text:02B8F2A8                 addic.    r24, r24, -1
.text:02B8F2AC                 xor       r12, r11, r25
.text:02B8F2B0                 extlwi    r25, r3, 1,13
.text:02B8F2B4                 stw       r12, 0(r31)
.text:02B8F2B8                 bne       loc_2B8F298
.text:02B8F2BC
.text:02B8F2BC loc_2B8F2BC:                            # CODE XREF: sysdr::ResourcePackDecrypt((void *,uint))+1FCj
.text:02B8F2BC                                         # sysdr::ResourcePackDecrypt((void *,uint))+2FCj
.text:02B8F2BC                 stw       r26, 0x1C(r30)
.text:02B8F2C0
.text:02B8F2C0 loc_2B8F2C0:                            # CODE XREF: sysdr::ResourcePackDecrypt((void *,uint))+20j
.text:02B8F2C0                                         # sysdr::ResourcePackDecrypt((void *,uint))+50j ...
.text:02B8F2C0                 lha       r0, 0x14(r30)
.text:02B8F2C4                 cmpwi     r0, 3
.text:02B8F2C8                 addi      r0, r30, 0x60
.text:02B8F2CC                 blt       loc_2B8F30C
.text:02B8F2D0
.text:02B8F2D0 loc_2B8F2D0:                            # CODE XREF: sysdr::ResourcePackDecrypt((void *,uint))+1ECj
.text:02B8F2D0                 lbz       r4, 0xA9(r30)
.text:02B8F2D4                 cmpwi     r4, 0
.text:02B8F2D8                 bne       loc_2B8F30C
.text:02B8F2DC                 addi      r3, r30, 4
.text:02B8F2E0                 addi      r4, r27, -4
.text:02B8F2E4                 bl        crc32__Q2_5sysdr36__N_20_dr_resource_pack_cpp_483f2493FPCvUi
.text:02B8F2E8                 lwz       r5, 0(r30)
.text:02B8F2EC                 cmplw     r3, r5
.text:02B8F2F0                 beq       loc_2B8F30C
.text:02B8F2F4
.text:02B8F2F4 loc_2B8F2F4:                            # CODE XREF: sysdr::ResourcePackDecrypt((void *,uint))+3A4j
.text:02B8F2F4                                         # sysdr::ResourcePackDecrypt((void *,uint))+3B8j ...
.text:02B8F2F4                 lmw       r21, 0x48+var_2C(r1)
.text:02B8F2F8                 lwz       r0, 0x48+arg_4(r1)
.text:02B8F2FC                 mtlr      r0
.text:02B8F300                 addi      r1, r1, 0x48
.text:02B8F304                 li        r3, 0
.text:02B8F308                 blr
.text:02B8F30C # ---------------------------------------------------------------------------
.text:02B8F30C
.text:02B8F30C loc_2B8F30C:                            # CODE XREF: sysdr::ResourcePackDecrypt((void *,uint))+1E8j
.text:02B8F30C                                         # sysdr::ResourcePackDecrypt((void *,uint))+340j ...
.text:02B8F30C                 lha       r3, 0x16(r30)
.text:02B8F310                 cmpwi     r3, 0
.text:02B8F314                 mr        r31, r0
.text:02B8F318                 ble       loc_2B8F3F0
.text:02B8F31C                 srwi.     r9, r3, 3
.text:02B8F320                 ble       loc_2B8F3CC
.text:02B8F324                 mtctr     r9
.text:02B8F328
.text:02B8F328 loc_2B8F328:                            # CODE XREF: sysdr::ResourcePackDecrypt((void *,uint))+43Cj
.text:02B8F328                 subf      r6, r30, r31
.text:02B8F32C                 cmplw     r6, r27
.text:02B8F330                 bge       loc_2B8F2F4
.text:02B8F334                 lwz       r7, 0x44(r31)
.text:02B8F338                 add       r31, r31, r7
.text:02B8F33C                 subf      r8, r30, r31
.text:02B8F340                 cmplw     r8, r27
.text:02B8F344                 bge       loc_2B8F2F4
.text:02B8F348                 lwz       r9, 0x44(r31)
.text:02B8F34C                 add       r31, r31, r9
.text:02B8F350                 subf      r10, r30, r31
.text:02B8F354                 cmplw     r10, r27
.text:02B8F358                 bge       loc_2B8F2F4
.text:02B8F35C                 lwz       r11, 0x44(r31)
.text:02B8F360                 add       r31, r31, r11
.text:02B8F364                 subf      r12, r30, r31
.text:02B8F368                 cmplw     r12, r27
.text:02B8F36C                 bge       loc_2B8F2F4
.text:02B8F370                 lwz       r0, 0x44(r31)
.text:02B8F374                 add       r31, r31, r0
.text:02B8F378                 subf      r4, r30, r31
.text:02B8F37C                 cmplw     r4, r27
.text:02B8F380                 bge       loc_2B8F2F4
.text:02B8F384                 lwz       r5, 0x44(r31)
.text:02B8F388                 add       r31, r31, r5
.text:02B8F38C                 subf      r6, r30, r31
.text:02B8F390                 cmplw     r6, r27
.text:02B8F394                 bge       loc_2B8F2F4
.text:02B8F398                 lwz       r7, 0x44(r31)
.text:02B8F39C                 add       r31, r31, r7
.text:02B8F3A0                 subf      r8, r30, r31
.text:02B8F3A4                 cmplw     r8, r27
.text:02B8F3A8                 bge       loc_2B8F2F4
.text:02B8F3AC                 lwz       r9, 0x44(r31)
.text:02B8F3B0                 add       r31, r31, r9
.text:02B8F3B4                 subf      r10, r30, r31
.text:02B8F3B8                 cmplw     r10, r27
.text:02B8F3BC                 bge       loc_2B8F2F4
.text:02B8F3C0                 lwz       r11, 0x44(r31)
.text:02B8F3C4                 add       r31, r31, r11
.text:02B8F3C8                 bdnz      loc_2B8F328
.text:02B8F3CC
.text:02B8F3CC loc_2B8F3CC:                            # CODE XREF: sysdr::ResourcePackDecrypt((void *,uint))+394j
.text:02B8F3CC                 clrlwi.   r0, r3, 29
.text:02B8F3D0                 ble       loc_2B8F3F0
.text:02B8F3D4                 mtctr     r0
.text:02B8F3D8
.text:02B8F3D8 loc_2B8F3D8:                            # CODE XREF: sysdr::ResourcePackDecrypt((void *,uint))+460j
.text:02B8F3D8                 subf      r12, r30, r31
.text:02B8F3DC                 cmplw     r12, r27
.text:02B8F3E0                 bge       loc_2B8F2F4
.text:02B8F3E4                 lwz       r0, 0x44(r31)
.text:02B8F3E8                 add       r31, r31, r0
.text:02B8F3EC                 bdnz      loc_2B8F3D8
.text:02B8F3F0
.text:02B8F3F0 loc_2B8F3F0:                            # CODE XREF: sysdr::ResourcePackDecrypt((void *,uint))+38Cj
.text:02B8F3F0                                         # sysdr::ResourcePackDecrypt((void *,uint))+444j
.text:02B8F3F0                 lmw       r21, 0x48+var_2C(r1)
.text:02B8F3F4                 lwz       r0, 0x48+arg_4(r1)
.text:02B8F3F8                 mtlr      r0
.text:02B8F3FC                 addi      r1, r1, 0x48
.text:02B8F400                 li        r3, 1
.text:02B8F404                 blr
.text:02B8F404 # End of function sysdr::ResourcePackDecrypt((void *,uint))
.text:02B8F404
.text:02B8F408
[/SPOILER]
Reply
#7
Oh man... if you can get the key from that, you're a freakin' BOSS. I -really- like Bandai-Namco's more realistic take on some of the characters (Lucario's ears...), so being able to decrypt these files and get at the meshy goodness within is something I'd love to see. Plus, those alternate colors (so long as we can get rid of those stupid bands on the textures) would be pretty cool to have too.
Reply
#8
Sad 
(04-13-2016, 07:14 AM)Tiberious Wrote: Oh man... if you can get the key from that, you're a freakin' BOSS. I -really- like Bandai-Namco's more realistic take on some of the characters (Lucario's ears...), so being able to decrypt these files and get at the meshy goodness within is something I'd love to see. Plus, those alternate colors (so long as we can get rid of those stupid bands on the textures) would be pretty cool to have too.

I'd like to, but theres one problem...I suck at programming and I don't know where to find the actual key. I'l ask on GbaTemp because here are many people who know how can help me with that. But if I'l find somethig I'l post it in this thread.
Reply
#9
anything new yet for this game?
Reply
#10
(04-07-2016, 11:14 AM)Random Talking Bush Wrote: It's pretty much impossible to get at them, everything in the game has a second layer of encryption on it. Won't be possible until someone finds the correct AES key in the game's coding, which could take a long time. Sick

Me and Dantarion were able to Reverse engineer this encryption algorithm. I'll put up a decrypter and possibly an extractor in a few days, if dant doesnt beat me to it Tongue Source code included of course.
Reply
#11
(05-09-2016, 01:44 AM)sammi-husky@live.com Wrote:
(04-07-2016, 11:14 AM)Random Talking Bush Wrote: It's pretty much impossible to get at them, everything in the game has a second layer of encryption on it. Won't be possible until someone finds the correct AES key in the game's coding, which could take a long time. Sick

Me and Dantarion were able to Reverse engineer this encryption algorithm. I'll put up a decrypter and possibly an extractor in a few days, if dant doesnt beat me to it Tongue Source code included of course.

So... um... How do we know you're not lying? I mean, you've only been on the forums since yesterday.
Reply
#12
(05-09-2016, 09:26 PM)nobody231 Wrote:
(05-09-2016, 01:44 AM)sammi-husky@live.com Wrote:
(04-07-2016, 11:14 AM)Random Talking Bush Wrote: It's pretty much impossible to get at them, everything in the game has a second layer of encryption on it. Won't be possible until someone finds the correct AES key in the game's coding, which could take a long time. Sick

Me and Dantarion were able to Reverse engineer this encryption algorithm. I'll put up a decrypter and possibly an extractor in a few days, if dant doesnt beat me to it Tongue Source code included of course.

So... um... How do we know you're not lying? I mean, you've only been on the forums since yesterday.
He and Dantarion are well-known in the Smash hacking community. Tongue
Reply
#13
(05-09-2016, 10:04 PM)Random Talking Bush Wrote:
(05-09-2016, 09:26 PM)nobody231 Wrote:
(05-09-2016, 01:44 AM)sammi-husky@live.com Wrote: Me and Dantarion were able to Reverse engineer this encryption algorithm. I'll put up a decrypter and possibly an extractor in a few days, if dant doesnt beat me to it Tongue Source code included of course.

So... um... How do we know you're not lying? I mean, you've only been on the forums since yesterday.
He and Dantarion are well-known in the Smash hacking community. Tongue

oh
errors have been made
Thanks for correcting me! I kinda know almost nothing about the Smash hacking community.
Reply
#14
https://github.com/Sammi-Husky/Pokken-Tools/releases

There we go. It's not 100% tested yet, so if any files don't decrypt properly let me know. I'll be adding future features like decrypting all files in a directory or something later. Also remember this is a decrypter not an extractor! that may or may not come later
Reply
#15
Looks like it's working fine now! I'll letcha know if I find anything that doesn't unpack correctly, after I've written a QuickBMS script to decompress/unpack the decrypted files. Tongue

(EDIT: Here's the script! I was able to unpack the contents of every single file with this, so I'd say the decryption program works perfectly!)
(EDIT 2: And here's a work-in-progress texture-conversion script, which'll convert the images directly to DDS -- there's no GTX formatting in this game! Currently works with DXT1 and DXT5 images only.)
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)