Naruto World apk (renlong files)

Extraction and unpacking of game archives and compression, encryption, obfuscation, decoding of unknown files
guardianskt2
Posts: 3
Joined: Sat Jul 09, 2022 10:14 am

Naruto World apk (renlong files)

Post by guardianskt2 »

When opening the file "main.12.com.renlong.naruto.obb" inside an apk, I noticed the game had 2 types of encrypted file types:

.pvr.ccz
.ccbi

Some examples you can download here:

https://drive.google.com/file/d/162Uuj0 ... sp=sharing

You can download the game full apk (xapk) file here:

https://drive.google.com/file/d/133hmRF ... sp=sharing

I also encountered some infos about this file type encryption:

https://qiita.com/sdkfz181tiger/items/5 ... c2927aae0d
https://github.com/CRC32EX/DecryptCocos2dAsset
https://blog.csdn.net/ynnmnm/article/details/44921337
https://blog.csdn.net/mergerly/article/details/79175800
https://www.jianshu.com/p/9562bc1cab72


Any help to decrypt these files are appreciated, thanks!
guardianskt2
Posts: 3
Joined: Sat Jul 09, 2022 10:14 am

Re: Naruto World apk (renlong files)

Post by guardianskt2 »

up!
h3x3r
Posts: 165
Joined: Wed Jun 01, 2016 5:53 pm

Re: Naruto World apk (renlong files)

Post by h3x3r »

Here's the function from libgame.so

Code: Select all

.text:0053B4D4 ; =============== S U B R O U T I N E =======================================
.text:0053B4D4
.text:0053B4D4
.text:0053B4D4 ; _DWORD __fastcall cocos2d::ZipUtils::ccSetPvrEncryptionKeyPart(cocos2d::ZipUtils *__hidden this, int, unsigned int)
.text:0053B4D4                 EXPORT _ZN7cocos2d8ZipUtils25ccSetPvrEncryptionKeyPartEij
.text:0053B4D4 _ZN7cocos2d8ZipUtils25ccSetPvrEncryptionKeyPartEij
.text:0053B4D4                                         ; CODE XREF: cocos2d::ZipUtils::ccSetPvrEncryptionKey(uint,uint,uint,uint)+Ep
.text:0053B4D4                                         ; cocos2d::ZipUtils::ccSetPvrEncryptionKey(uint,uint,uint,uint)+16p ...
.text:0053B4D4
.text:0053B4D4 var_18          = -0x18
.text:0053B4D4 var_14          = -0x14
.text:0053B4D4
.text:0053B4D4                 PUSH    {R0,R1,R4-R6,LR}
.text:0053B4D6                 MOVS    R5, R0
.text:0053B4D8                 MOVS    R6, R1
.text:0053B4DA                 CMP     R0, #0
.text:0053B4DC                 BGE     loc_53B50E
.text:0053B4DE                 LDR     R4, =(aCocos2dKeyPart - 0x53B4E4)
.text:0053B4E0                 ADD     R4, PC          ; "Cocos2d: key part index cannot be less "...
.text:0053B4E2                 MOVS    R0, R4          ; char *
.text:0053B4E4                 BL      _Z27cc_assert_script_compatiblePKc ; cc_assert_script_compatible(char const*)
.text:0053B4E8                 CMP     R0, #0
.text:0053B4EA                 BNE     loc_53B4F6
.text:0053B4EC                 LDR     R0, =(aAssertFailedS - 0x53B4F4)
.text:0053B4EE                 MOVS    R1, R4          ; char *
.text:0053B4F0                 ADD     R0, PC          ; "Assert failed: %s"
.text:0053B4F2                 BL      _ZN7cocos2d5CCLogEPKcz ; cocos2d::CCLog(char const*,...)
.text:0053B4F6
.text:0053B4F6 loc_53B4F6                              ; CODE XREF: cocos2d::ZipUtils::ccSetPvrEncryptionKeyPart(int,uint)+16j
.text:0053B4F6                 LDR     R0, =(aCcdecodeencode - 0x53B502)
.text:0053B4F8                 LDR     R1, =(aCocos2dXAssert - 0x53B508)
.text:0053B4FA                 LDR     R2, =(aSFunctionSLine - 0x53B50A)
.text:0053B4FC                 LDR     R3, =(aFEnglishRen_63 - 0x53B50C)
.text:0053B4FE                 ADD     R0, PC          ; "ccDecodeEncodedPvr"
.text:0053B500                 ADDS    R0, #0x39
.text:0053B502                 STR     R0, [SP,#0x18+var_18]
.text:0053B504                 ADD     R1, PC          ; "cocos2d-x assert"
.text:0053B506                 ADD     R2, PC          ; "%s function:%s line:%d"
.text:0053B508                 ADD     R3, PC          ; "F:/english/renlong/proj.android/../../c"...
.text:0053B50A                 LDR     R0, =0x1A3
.text:0053B50C                 B       loc_53B542
.text:0053B50E ; ---------------------------------------------------------------------------
.text:0053B50E
.text:0053B50E loc_53B50E                              ; CODE XREF: cocos2d::ZipUtils::ccSetPvrEncryptionKeyPart(int,uint)+8j
.text:0053B50E                 CMP     R0, #3
.text:0053B510                 BLE     loc_53B54A
.text:0053B512                 LDR     R4, =(aCocos2dKeyPa_0 - 0x53B518)
.text:0053B514                 ADD     R4, PC          ; "Cocos2d: key part index cannot be great"...
.text:0053B516                 MOVS    R0, R4          ; char *
.text:0053B518                 BL      _Z27cc_assert_script_compatiblePKc ; cc_assert_script_compatible(char const*)
.text:0053B51C                 CMP     R0, #0
.text:0053B51E                 BNE     loc_53B52A
.text:0053B520                 LDR     R0, =(aAssertFailedS - 0x53B528)
.text:0053B522                 MOVS    R1, R4          ; char *
.text:0053B524                 ADD     R0, PC          ; "Assert failed: %s"
.text:0053B526                 BL      _ZN7cocos2d5CCLogEPKcz ; cocos2d::CCLog(char const*,...)
.text:0053B52A
.text:0053B52A loc_53B52A                              ; CODE XREF: cocos2d::ZipUtils::ccSetPvrEncryptionKeyPart(int,uint)+4Aj
.text:0053B52A                 LDR     R0, =(aCcdecodeencode - 0x53B536)
.text:0053B52C                 LDR     R1, =(aCocos2dXAssert - 0x53B53E)
.text:0053B52E                 LDR     R2, =(aSFunctionSLine - 0x53B540)
.text:0053B530                 LDR     R3, =(aFEnglishRen_63 - 0x53B542)
.text:0053B532                 ADD     R0, PC          ; "ccDecodeEncodedPvr"
.text:0053B534                 ADDS    R0, #0x39
.text:0053B536                 STR     R0, [SP,#0x18+var_18]
.text:0053B538                 MOVS    R0, #0xD2
.text:0053B53A                 ADD     R1, PC          ; "cocos2d-x assert"
.text:0053B53C                 ADD     R2, PC          ; "%s function:%s line:%d"
.text:0053B53E                 ADD     R3, PC          ; "F:/english/renlong/proj.android/../../c"...
.text:0053B540                 LSLS    R0, R0, #1
.text:0053B542
.text:0053B542 loc_53B542                              ; CODE XREF: cocos2d::ZipUtils::ccSetPvrEncryptionKeyPart(int,uint)+38j
.text:0053B542                 STR     R0, [SP,#0x18+var_14]
.text:0053B544                 MOVS    R0, #6
.text:0053B546                 BLX     __android_log_print
.text:0053B54A
.text:0053B54A loc_53B54A                              ; CODE XREF: cocos2d::ZipUtils::ccSetPvrEncryptionKeyPart(int,uint)+3Cj
.text:0053B54A                 LDR     R3, =(_ZN7cocos2d8ZipUtils23s_uEncryptedPvrKeyPartsE_ptr - 0x53B552)
.text:0053B54C                 LSLS    R5, R5, #2
.text:0053B54E                 ADD     R3, PC ; _ZN7cocos2d8ZipUtils23s_uEncryptedPvrKeyPartsE_ptr
.text:0053B550                 LDR     R3, [R3]        ; cocos2d::ZipUtils::s_uEncryptedPvrKeyParts
.text:0053B552                 LDR     R2, [R5,R3]
.text:0053B554                 CMP     R2, R6
.text:0053B556                 BEQ     locret_53B564
.text:0053B558                 STR     R6, [R5,R3]
.text:0053B55A                 LDR     R3, =(_ZN7cocos2d8ZipUtils23s_bEncryptionKeyIsValidE_ptr - 0x53B562)
.text:0053B55C                 MOVS    R2, #0
.text:0053B55E                 ADD     R3, PC ; _ZN7cocos2d8ZipUtils23s_bEncryptionKeyIsValidE_ptr
.text:0053B560                 LDR     R3, [R3]        ; cocos2d::ZipUtils::s_bEncryptionKeyIsValid
.text:0053B562                 STRB    R2, [R3]
.text:0053B564
.text:0053B564 locret_53B564                           ; CODE XREF: cocos2d::ZipUtils::ccSetPvrEncryptionKeyPart(int,uint)+82j
.text:0053B564                 POP     {R0,R1,R4-R6,PC}
.text:0053B564 ; End of function cocos2d::ZipUtils::ccSetPvrEncryptionKeyPart(int,uint)
.text:0053B564
guardianskt2
Posts: 3
Joined: Sat Jul 09, 2022 10:14 am

Re: Naruto World apk (renlong files)

Post by guardianskt2 »

h3x3r wrote:Here's the function from libgame.so

Code: Select all

.text:0053B4D4 ; =============== S U B R O U T I N E =======================================
.text:0053B4D4
.text:0053B4D4
.text:0053B4D4 ; _DWORD __fastcall cocos2d::ZipUtils::ccSetPvrEncryptionKeyPart(cocos2d::ZipUtils *__hidden this, int, unsigned int)
.text:0053B4D4                 EXPORT _ZN7cocos2d8ZipUtils25ccSetPvrEncryptionKeyPartEij
.text:0053B4D4 _ZN7cocos2d8ZipUtils25ccSetPvrEncryptionKeyPartEij
.text:0053B4D4                                         ; CODE XREF: cocos2d::ZipUtils::ccSetPvrEncryptionKey(uint,uint,uint,uint)+Ep
.text:0053B4D4                                         ; cocos2d::ZipUtils::ccSetPvrEncryptionKey(uint,uint,uint,uint)+16p ...
.text:0053B4D4
.text:0053B4D4 var_18          = -0x18
.text:0053B4D4 var_14          = -0x14
.text:0053B4D4
.text:0053B4D4                 PUSH    {R0,R1,R4-R6,LR}
.text:0053B4D6                 MOVS    R5, R0
.text:0053B4D8                 MOVS    R6, R1
.text:0053B4DA                 CMP     R0, #0
.text:0053B4DC                 BGE     loc_53B50E
.text:0053B4DE                 LDR     R4, =(aCocos2dKeyPart - 0x53B4E4)
.text:0053B4E0                 ADD     R4, PC          ; "Cocos2d: key part index cannot be less "...
.text:0053B4E2                 MOVS    R0, R4          ; char *
.text:0053B4E4                 BL      _Z27cc_assert_script_compatiblePKc ; cc_assert_script_compatible(char const*)
.text:0053B4E8                 CMP     R0, #0
.text:0053B4EA                 BNE     loc_53B4F6
.text:0053B4EC                 LDR     R0, =(aAssertFailedS - 0x53B4F4)
.text:0053B4EE                 MOVS    R1, R4          ; char *
.text:0053B4F0                 ADD     R0, PC          ; "Assert failed: %s"
.text:0053B4F2                 BL      _ZN7cocos2d5CCLogEPKcz ; cocos2d::CCLog(char const*,...)
.text:0053B4F6
.text:0053B4F6 loc_53B4F6                              ; CODE XREF: cocos2d::ZipUtils::ccSetPvrEncryptionKeyPart(int,uint)+16j
.text:0053B4F6                 LDR     R0, =(aCcdecodeencode - 0x53B502)
.text:0053B4F8                 LDR     R1, =(aCocos2dXAssert - 0x53B508)
.text:0053B4FA                 LDR     R2, =(aSFunctionSLine - 0x53B50A)
.text:0053B4FC                 LDR     R3, =(aFEnglishRen_63 - 0x53B50C)
.text:0053B4FE                 ADD     R0, PC          ; "ccDecodeEncodedPvr"
.text:0053B500                 ADDS    R0, #0x39
.text:0053B502                 STR     R0, [SP,#0x18+var_18]
.text:0053B504                 ADD     R1, PC          ; "cocos2d-x assert"
.text:0053B506                 ADD     R2, PC          ; "%s function:%s line:%d"
.text:0053B508                 ADD     R3, PC          ; "F:/english/renlong/proj.android/../../c"...
.text:0053B50A                 LDR     R0, =0x1A3
.text:0053B50C                 B       loc_53B542
.text:0053B50E ; ---------------------------------------------------------------------------
.text:0053B50E
.text:0053B50E loc_53B50E                              ; CODE XREF: cocos2d::ZipUtils::ccSetPvrEncryptionKeyPart(int,uint)+8j
.text:0053B50E                 CMP     R0, #3
.text:0053B510                 BLE     loc_53B54A
.text:0053B512                 LDR     R4, =(aCocos2dKeyPa_0 - 0x53B518)
.text:0053B514                 ADD     R4, PC          ; "Cocos2d: key part index cannot be great"...
.text:0053B516                 MOVS    R0, R4          ; char *
.text:0053B518                 BL      _Z27cc_assert_script_compatiblePKc ; cc_assert_script_compatible(char const*)
.text:0053B51C                 CMP     R0, #0
.text:0053B51E                 BNE     loc_53B52A
.text:0053B520                 LDR     R0, =(aAssertFailedS - 0x53B528)
.text:0053B522                 MOVS    R1, R4          ; char *
.text:0053B524                 ADD     R0, PC          ; "Assert failed: %s"
.text:0053B526                 BL      _ZN7cocos2d5CCLogEPKcz ; cocos2d::CCLog(char const*,...)
.text:0053B52A
.text:0053B52A loc_53B52A                              ; CODE XREF: cocos2d::ZipUtils::ccSetPvrEncryptionKeyPart(int,uint)+4Aj
.text:0053B52A                 LDR     R0, =(aCcdecodeencode - 0x53B536)
.text:0053B52C                 LDR     R1, =(aCocos2dXAssert - 0x53B53E)
.text:0053B52E                 LDR     R2, =(aSFunctionSLine - 0x53B540)
.text:0053B530                 LDR     R3, =(aFEnglishRen_63 - 0x53B542)
.text:0053B532                 ADD     R0, PC          ; "ccDecodeEncodedPvr"
.text:0053B534                 ADDS    R0, #0x39
.text:0053B536                 STR     R0, [SP,#0x18+var_18]
.text:0053B538                 MOVS    R0, #0xD2
.text:0053B53A                 ADD     R1, PC          ; "cocos2d-x assert"
.text:0053B53C                 ADD     R2, PC          ; "%s function:%s line:%d"
.text:0053B53E                 ADD     R3, PC          ; "F:/english/renlong/proj.android/../../c"...
.text:0053B540                 LSLS    R0, R0, #1
.text:0053B542
.text:0053B542 loc_53B542                              ; CODE XREF: cocos2d::ZipUtils::ccSetPvrEncryptionKeyPart(int,uint)+38j
.text:0053B542                 STR     R0, [SP,#0x18+var_14]
.text:0053B544                 MOVS    R0, #6
.text:0053B546                 BLX     __android_log_print
.text:0053B54A
.text:0053B54A loc_53B54A                              ; CODE XREF: cocos2d::ZipUtils::ccSetPvrEncryptionKeyPart(int,uint)+3Cj
.text:0053B54A                 LDR     R3, =(_ZN7cocos2d8ZipUtils23s_uEncryptedPvrKeyPartsE_ptr - 0x53B552)
.text:0053B54C                 LSLS    R5, R5, #2
.text:0053B54E                 ADD     R3, PC ; _ZN7cocos2d8ZipUtils23s_uEncryptedPvrKeyPartsE_ptr
.text:0053B550                 LDR     R3, [R3]        ; cocos2d::ZipUtils::s_uEncryptedPvrKeyParts
.text:0053B552                 LDR     R2, [R5,R3]
.text:0053B554                 CMP     R2, R6
.text:0053B556                 BEQ     locret_53B564
.text:0053B558                 STR     R6, [R5,R3]
.text:0053B55A                 LDR     R3, =(_ZN7cocos2d8ZipUtils23s_bEncryptionKeyIsValidE_ptr - 0x53B562)
.text:0053B55C                 MOVS    R2, #0
.text:0053B55E                 ADD     R3, PC ; _ZN7cocos2d8ZipUtils23s_bEncryptionKeyIsValidE_ptr
.text:0053B560                 LDR     R3, [R3]        ; cocos2d::ZipUtils::s_bEncryptionKeyIsValid
.text:0053B562                 STRB    R2, [R3]
.text:0053B564
.text:0053B564 locret_53B564                           ; CODE XREF: cocos2d::ZipUtils::ccSetPvrEncryptionKeyPart(int,uint)+82j
.text:0053B564                 POP     {R0,R1,R4-R6,PC}
.text:0053B564 ; End of function cocos2d::ZipUtils::ccSetPvrEncryptionKeyPart(int,uint)
.text:0053B564


I had found other functions too, however, I can't debug the code in order to get the key because I don't know about assembly, so the only possibility for me is using a rooted cell phone, and I even tried that, but the old cell phone models I have here don't accept root, so if someone know a way to debug this function for me, it would be a hand in the wheel, we can also negotiate this service in bitcoins, thanks for the reply!
ssh
Posts: 33
Joined: Sun Aug 17, 2014 5:50 pm

Re: Naruto World apk (renlong files)

Post by ssh »

Naruto_world_ccz_decrypt.bms