ZenHAX

Free Game Research Forum | Official QuickBMS support | twitter @zenhax
It is currently Fri Aug 12, 2022 9:48 pm

All times are UTC




Post new topic  Reply to topic  [ 5 posts ] 
Author Message
PostPosted: Sat Jul 09, 2022 10:25 am 

Joined: Sat Jul 09, 2022 10:14 am
Posts: 3
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!


Attachments:
File comment: Optional way of download
renlong.rar [179.2 KiB]
Downloaded 13 times
Top
   
PostPosted: Mon Jul 18, 2022 8:38 pm 

Joined: Sat Jul 09, 2022 10:14 am
Posts: 3
up!


Top
   
PostPosted: Tue Jul 19, 2022 1:52 pm 

Joined: Wed Jun 01, 2016 5:53 pm
Posts: 137
Here's the function from libgame.so
Code:
.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


Top
   
PostPosted: Fri Jul 22, 2022 10:24 pm 

Joined: Sat Jul 09, 2022 10:14 am
Posts: 3
h3x3r wrote:
Here's the function from libgame.so
Code:
.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!


Top
   
PostPosted: Fri Aug 05, 2022 2:17 pm 

Joined: Sun Aug 17, 2014 5:50 pm
Posts: 25
Attachment:
Naruto_world_ccz_decrypt.bms [1.94 KiB]
Downloaded 15 times


Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 5 posts ] 

All times are UTC


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Powered by phpBB® Forum Software © phpBB Limited