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!
Naruto World apk (renlong files)
-
- Posts: 3
- Joined: Sat Jul 09, 2022 10:14 am
-
- Posts: 165
- Joined: Wed Jun 01, 2016 5:53 pm
Re: Naruto World apk (renlong files)
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
-
- Posts: 3
- Joined: Sat Jul 09, 2022 10:14 am
Re: Naruto World apk (renlong files)
h3x3r wrote:Here's the function from libgame.soCode: 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!