cocos creator 下的jsc

cocos creator 编译之后的所生成的jsc文件,虽然后缀是jsc,但其实和js虚拟机所执行的字节码(jsc)是二个不同的东西,只是使用xxtea对js文件进行加密而已。xxtea是可逆的,所以cocos creator下的jsc是完全可逆的,因为本质上是一个加解密过程。
当然creator在构建之后形成的js文件本身已经有过一些混淆&压缩,所以jsc还原成js看到的也不是开发时候的源文件了。

一、如何解码文件

涉及到解码文件,我比较常用的方法分为静态分析、动态调试。

1.1、静态分析

静态分析就是利用一些工具(我一般用IDA、nodepad++、Hworks、ILspy),查看被编译之后的加密算法/解码算法。如果是一些三方的加密算法,网上应该能找到很多现成的逆向实现;如果是项目自有实现的加密,就得自己写一个逆向实现了。

1.2、动态调试

动态调试我一般用IDA(具体的动态调试过程以后再单独写一篇),直接在解码之后的位置输出明文即可。当然也先进行静态分析,查找到解码的位置。
动态调试的好处就是不需要关心算法。有些时候自有实现的算法代码量大或看不懂别人算法的时候,用动态调试就很省力。

二、准备工作

了解了cocos creator 的jsc的本质之后,逆向就变得很简单,就是xxtea的解码。那么xxtea如何解码呢,对xxtea算法有所了解的或使用xxtea算法加密过文件的(cocos2d的lua加密也是用的这算法)应该都知道,在加密时候会设置一个key值,解码就是利用这个key值去反着运行一次加密过程。所以逆向之前我们需要准备2样东西,一是加密时所设置的key值;二是xxtea算法的实现:

  1. 加密时所设置的key值;
  2. xxtea加密算法的逆向实现;

2.1、如何查询xxtea的key

基于前文1.1、1.2中提到2种分析方式都可以进行key的查找。
不过creator的jsc文件中的key我一般直接用HWorks直接打开查看。
利用HWorks打开libcocos2djs.so文件,查询jsb-adapter/jsb-builtin.js字符串即可,在jsb-adapter/jsb-builtin.js之前的16字节长度的字符串就是key了。

2.2、xxtea的解码实现

这一块网上已经各种语言版本的实现了,用的较多的应该是python版本的。不过我用的是c++,好处就是我是直接编译的引擎自带的xxtea文件,所以保证算法实现一定没问题,也省去了算法理解和编程过程。将引擎自带的xxtea编译成dll文件,可以给其他程序直接调用。
使用vstudio的,可以基于cocos工程直接去调用xxtea解码。不过现在cocos creator 用vscode的较多,所以这里在编译cpp文件的时候,会有一个vscode下配置cpp环境和编译成dll,这一点单独会在写一篇vscode下的c++开发环境配置&dll动态库生成。

最后

这里主要是分析一个crator的jsc文件的本质以及逆向的思路。具体的实现其实也不难,加上网上已经很多的现成案例,这里就不展开了(主要难得打字和组织语言)。有什么问题欢迎交流,整个逆向的工程,放在github上了,工程是基于c++的,运行源码的话需要编译环境,可查看另一篇关于vscode配置c++开发环境的笔记。

cocos creator jsc 逆向解码为js相关推荐

  1. cocos creator开发微信小游戏(五)贪吃蛇大作战

    目录 小游戏介绍 小游戏cocos creator场景图 小游戏部分JS代码 开发中碰到的问题 工程及说明 小游戏介绍 贪吃蛇小游戏:贪吃蛇试玩(首次加载比较慢),类似贪吃蛇大作战的小游戏.当玩家的蛇 ...

  2. cocos creator学习(七)音乐

    目录 背景音乐 使用AudioSource组件 ①添加组件 ②脚本控制 直接脚本控制 ①声明 ②播放背景音乐(playMusic) 音效 直接脚本控制 ①声明 ②播放 ③停止 注意 背景音乐 使用Au ...

  3. 如何反编译 cocos creator 生成 的jsc文件/反编译jsc文件(一)

    jsc文件 是 Mozilla 将 javascript/js 文件编译成的一种二进制格式 cocos creator 目前最大的优势就是可以使用 javascript/js 语言, 调试可以使用成熟 ...

  4. 如何反编译 cocos creator 生成 的jsc文件/反编译jsc文件(三) , 还原cocos creator 工程

    在实际运用中, 发现只是简单的将jsc反编译为js代码后, 并不能好好的进行二次开发, 最好能反编译成工程项目, 可以直接用IDE编译, 目前市面上使用最多的开发框架是cocos creator 和白 ...

  5. asp.net js函数弹出登录窗口_JS基础 | Cocos Creator 开发环境搭建

    编程并不只是简单地写代码,而是要将编写的代码运行在指定平台环境上,在此之前我们还需要搭建生产代码的环境. 一. 软件准备 Chrome:浏览器,用于预览.调试我们的游戏 VSCode:代码编辑器,用于 ...

  6. 【vscode】调试cocos creator (Js 无法命中断点问题解决)

    先看看 官方教程–使用 VS Code 调试网页版游戏 一.安装插件 Debugger for Chrome已弃用 安装 JavaScript Debugger (Nightly) 插件替代,其他步骤 ...

  7. Cocos Creator TypeScript 中使用ProtoBuf(利用工具把proto文件生成对应的js文件以及ts文件)

    我是一枚刚入坑cocos的小白o(╯□╰)o 开发环境:Cocos Creator 1.9   (需要安装Node.js,使用npm命令) 在网上找了很久都是讲的protobuf.js的用法,但是没有 ...

  8. vscode函数跳转插件_人生苦短,我们为 Cocos Creator 开发的插件和工具

    在使用 Cocos Creator 开发项目的过程中,为了提高开发效率我们开发了很多扩展插件,本文介绍常用的几款,抛砖引玉,希望给大家带来帮助. 腾讯开心鼠英语 网页扩展:运行时查看场景节点树 Coc ...

  9. 精品教程|Cocos Creator如何集成 AnySDK?

    今天由技术大牛Eddy为大家介绍怎么在 Cocos Creator 项目中集成 AnySDK . 开发环境 CocosCreator 1.1.1, AnySDK 2.1.2, AnySDK_Frame ...

最新文章

  1. boost::hana::none_of用法的测试程序
  2. 【Linux系统编程】特殊进程之孤儿进程
  3. 序列变换(Lis变形)
  4. 最高调恋爱方式,简直“公开处刑”......
  5. 放弃Venn-Upset-花瓣图,在线拥抱二分网络
  6. Memcached内存管理机制浅析
  7. Lubuntu 18.10仍有可能支持32位PC
  8. 130242014051 《商品详情模块》需求分析与设计实验课小结
  9. View Controller Programming Guide for iOS---(三)---Using View Controllers in Your App
  10. Python 算法交易实验30 退而结网7-交易策略思考
  11. 常用的特征选择算法介绍
  12. java 阴阳历,Java基础-有意思的阴阳历互换的算法
  13. PTA:特立独行的幸福
  14. 智牛股_第6章_Mybatis Generator代码生成器
  15. “沉迷单车的追风少年”的2021年年末总结
  16. python列表输出学生姓名学号链表_c语言!!!程序设计:建立一个学生信息链表,包括学号,姓名,成绩.(实现添加,删除,查询,排序,平均)...
  17. uniapp调用地图并导航
  18. 时间轮盘app(抖音数字时钟罗盘)v1.4 安卓版
  19. 第九天 (集合 ArrayList)
  20. 5.2 网络数据Excel存储

热门文章

  1. Vue li始终前面有黑点
  2. 大众点评景点美食楼盘点评(Android,AndroidStudio,IDEA,SpringBoot,Mysql)
  3. 切比雪夫不等式例题讲解_排序不等式,切比雪夫不等式及伯努利不等式
  4. 快速应用计算机制作pop,9计算机练习题
  5. 100以内的三连加减法JAVA_100以内加减法三连算练习题.doc
  6. 龙珠激斗获取服务器信息中,龙珠激斗战力220000贝吉塔快速获得途径攻略汇总详解...
  7. twitter账号被冻结如何申诉,已成功解冻(我是第一次被冻结,听闻二次冻结会永久冻结)
  8. Django连接Mysql报错:ModuleNotFoundError: No module named 'MySQLdb'
  9. 世界上第一台计算机采用哪位科学家,计算机基础知识试题及答案解析
  10. 当上CEO,迎娶白富美,走向人生巅峰,只有这背水一战!