首页 > 其他分享 >Cocos Creator 2.X(Cocos2d-js)游戏资源目录分析&逆向还原

Cocos Creator 2.X(Cocos2d-js)游戏资源目录分析&逆向还原

时间:2024-02-14 18:22:46浏览次数:98  
标签:Cocos uuid 22 Creator js decode json 64 还原

拿到了某变态服游戏,打开lib看到了libcocos2djs.so,判断版本为2.4。游戏把资源文件下载到了/data下,因此需要root。目录结构如下:

g4-start/
├── config.json
├── import
│   ├── 1e
│   │   └── 1ea6e4bcd.json
│   └── e7
│       └── e76cb2d2-fa48-4916-8c8c-d7f64ee0c948.json
└── native
    └── 1e
        └── 1ea6e4bcd.png

可以看到,文件名全部被改为了UUID,不利于处理。打开config.json,uuid项里竟然是Base64(但不是)!在cocos2d/core/utils/decode-uuid看到了对应的源码,成功还原uuid,再通过paths项还原目录结构。

贴一下还原uuid的python代码

#!/usr/bin/python3
import sys

# static sheets
i = [64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,62,64,64,64,63,52,53,54,55,56,57,58,59,60,61,64,64,64,64,64,64,64,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,64,64,64,64,64,64,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51]
a = ["", "", "", "", "", "", "", "", "-", "", "", "", "", "-", "", "", "", "", "-", "", "", "", "", "-", "", "", "", "", "", "", "", "", "", "", "", ""]
n = '0123456789abcdef'
s = [0, 1, 2, 3, 4, 5, 6, 7, 9, 10, 11, 12, 14, 15, 16, 17, 19, 20, 21, 22, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35]

def decode_uuid(t):
    if len(t) != 22:
        return t #处理没有用uuid的情况

    a[0] = t[0]
    a[1] = t[1]
    r = 2
    for e in range(2, 22, 2):
        o = i[ord(t[e])]
        l = i[ord(t[e + 1])]
        a[s[r]] = n[o >> 2]
        a[s[r + 1]] = n[(3 & o) << 2 | l >> 4]
        a[s[r + 2]] = n[15 & l]
        r += 3
        
    return ''.join(a)

print(decode_uuid(sys.argv[1]))

完整代码整理中...

标签:Cocos,uuid,22,Creator,js,decode,json,64,还原
From: https://www.cnblogs.com/tianpanyu/p/18015389

相关文章

  • Chrome修改Js以及保存资源
    Chrome有pdb下载,但是需要梯子,没法下载只能分析dll程序有源码可以辅助github可以下载,速度慢可以从镜像下载521github.comJs的修改尝试在ScriptCompiler::Compile修改,ClassicScript_RunScriptAndReturnValue,这些都有缺陷:修改的js在源码中看不到ScriptResour......
  • Debug: tf-distribute-strategy-worker: json.decoder.JSONDecodeError: Expecting pr
    [ERROR:json.decoder.JSONDecodeError:Expectingpropertynameenclosedindoublequotes:line1column182]#infilepipeline.yaml-name:TF_CONFIGvalue:"{\"cluster\":{\"worker\":[\"dist-s......
  • Jsoup的快速使用--简单实用
    Jsoup的使用通常分为四步:1.导入jar包2.加载XML文档进内存,获取DOM树对象Document2.1获取类加载器ClassLoaderclassLoader=Demo1.class.getClassLoader();2.2使用类加载器找到XML文档的路径Stringpath=classLoader.getResourc......
  • SharePoint Online 使用pnp.js获取超过5000条项目的列表数据
    前言我们在使用SharePointOnlineFramework解决方案的时候,经常会碰到获取列表数据,然后数据总量超过5000的情况。这种情况,我们就需要用分页的方式多次获取数据了,我们今天简单介绍下。正文1.废话少说,直接上代码(老版本的pnpjs可能没有这个方法,如果没有的话......
  • p5js: JavaScript 创意绘画
    p5js是一个免费开源的Javascript创意绘画工具,通过p5js可以实现代码绘画01鼠标变色鼠标触发绘画区域,即马上变色,松开恢复functionsetup(){createCanvas(400,400);//设置画布大小}functiondraw(){if(mouseIsPressed)//被鼠标触发{background(255,51,......
  • P4559 [JSOI2018] 列队 题解
    题目链接:列队半年前mark的题,结果现在一下子就会做了。顺便写写我的手玩过程和复杂度说明。考虑比较特殊的情况:比较特殊的,发现从黑色到红色区间我们无论咋选择,由于\(\left|a_{right}-a_{left}\right|\),这玩意如果\(right\)表示红色的一边,那么这个绝对值可以直接拆掉,那么......
  • nodejs如何更新(4种方法)
    node.js是一个开放源代码的跨平台javascript运行环境,它在不同的平台上都得到了广泛使用和支持。强大的生态系统、持续的更新和不断改进的性能使得node.js非常受欢迎。然而,更新node.js仍然是一个必要的过程,因为它可以保证应用程序的安全性和稳定性,同时也可以让你获得新的功能和性能......
  • 三十一、JS第三方插件
    kindediter#textarea,用于富文本输入<textareaid="editor_id"name="content"style="width:700px;height:300px;"></textarea>{%csrf_token%}#加入csrf_token,提交时,手动拿到token去提交<buttononclick="submit();">回复<......
  • 二十一、JS笔记
    JSONimportjson#对象转字符串str=json.dumps(dict,ensure_ascii=False)#ensure_ascii=True或不设置str=json.dumps(dict)#这时前端拿到的是未解码的数据:{"key1":"\u7528\u6237\u8f93...",...}obj=json.loads(str)#字符串转对象jsJSON.parse(str)#字符......
  • [RxJS] firstValueFrom/lastValueFrom (convert observable to promise)
    Convertsanobservabletoapromisebysubscribingtotheobservable,andreturningapromisethatwillresolveassoonasthefirstvaluearrivesfromtheobservable.Thesubscriptionwillthenbeclosed.WARNING:Onlyusethiswithobservablesyou know ......