js 加密 为jsc

article/2025/10/3 14:38:35

从Cocos2D-X v2.1.4版本开始,增加了Cocos2D-console命令行工具,该工具的其中一个功能是:把.js文件转换为.jsc文件,该文件是字节码格式,可以提高代码的安全性。


使用这个工具的方式很简单。以引擎自带的TestJavaScript项目为例:

首先我们cd到Cocos2D-console的目录

1
goldliontekiMacBook-Pro:~ goldlion$  cd  /Users/goldlion/Documents/developer/cocos2d-x-3 .0beta /tools/cocos2d-console/console


然后可以看到里面有很多.py脚本

cocos2d_jscompile.py

cocos2d_version.py

cocos2d.py

cocos2d_new.py


其中cocos2d.py是我们要使用的主脚本文件。使用命令./cocos2d.py jscompile --help查看编译字节码的命令格式


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
goldliontekiMacBook-Pro:console goldlion$ . /cocos2d .py jscompile --help
Usage: cocos2d.py jscompile -s src_dir -d dst_dir [-c -o COMPRESSED_FILENAME -j COMPILER_CONFIG]
Options:
   -h, --help            show this help message and  exit
   -s SRC_DIR_ARR, --src=SRC_DIR_ARR
                         source  directory of js files needed to be compiled,
                         supports mutiple  source  directory
   -d DST_DIR, --dst=DST_DIR
                         destination directory of js bytecode files to be
                         stored
   -c, --use_closure_compiler
                         Whether to use closure compiler to compress all js
                         files into just a big  file
   -o COMPRESSED_FILENAME, --output_compressed_filename=COMPRESSED_FILENAME
                         Only available when  '-c'  option was True
   -j COMPILER_CONFIG, --compiler_config=COMPILER_CONFIG
                         The configuration  for  closure compiler by using JSON,
                         please refer to compiler_config_sample.json


参数非常简单,一个输入目录,一个输出目录,后面加一组可选参数。该工具在遍历.js文件时支持文件夹递归访问,在输出.jsc文件时支持按照源文件夹的结构全部新建文件夹。易用性还是不错的。


TestJavaScript其中一个文件夹ExtensionsTest使用Cocos2D-console工具进行加密来测试。输出路径设置为桌面

1
. /cocos2d .py jscompile -s  /Users/goldlion/Documents/developer/cocos2d-x-3 .0beta /samples/Javascript/Shared/tests/ExtensionsTest  -d  /Users/goldlion/Desktop/ExtensionsTest


打开输出的ExtensionsTest文件夹看到,所有.js都变成了.jsc,并且体积都大幅度减小。


下面说一下可选参数,可选参数的意思是使用closure compiler工具压缩代码为一个文件。

COMPRESSED_FILENAME是压缩后的文件名,最好使用xxx.js,因为工具会自动再后面加个c

COMPILER_CONFIG是压缩时调用的配置文件,需要根据项目需求自己填写,在bin目录下有一个做好的缺省例子可以使用,compiler_config_sample.json


我并不建议使用这种做法,因为:

1.如果将所有脚本都压缩为一个文件,那么每次更新都要重新下载这个文件,对于一些对省流量要求很高的公司不适合。

2.压缩的目的是隐藏文件目录结构,但是这个工具只压缩了脚本部分,对于图片,动画,数据,音频视频等等都是不考虑的。而一般开发的方式需要把所有资源都压缩成一个文件,然后在游戏在线更新时只下载更新档,通过程序将更新档中的文件打入到大文件中。注意这涉及到二进制级别的比较删除以及合并,需要做非常仔细的设计,





的cocos2d-X HTML5 / JavaScript的结合是一个非常受欢迎的引擎开发人员快速,方便开发游戏。

但公布的JavaScript游戏几乎是赤裸的每个人都可以看到它。好的方法是做混淆代码。

的Cocos2D-X引擎已经有了一些工具,使你的JavaScript代码的安全。所以今天让我告诉你如何转换
“JS”到“JSC”为代码的安全性。

首先,我们去看看一些文件为JSC安全的产品参数:
你总是可以找到最新的命令,用于将“JS”在文件“JSC”这个路径下的“/ Users/UserName/cocos2d-x-2.2.2Test/tools “。/ cocos2d-console/console/README.md 由于文件“README.md”说:

#将生成的字节码文件
$ cocos2d的jscompile-D OUTPUT_DIR-S cocos2dx_root/scripting/javascript/bindings/js-S cocos2dx_root/samples/Javascript/Shared/tests邻game.min.js-J compiler_config_sample.json-C


哇!它害怕。
不要担心!我顾不上告诉你发生了什么事在一步该命令的步骤。

h1.Step1:
我做了一个简单的JavaScript的“Hello World”游戏在2.2被称为“MyGame”* V。

如果你不知道如何创建一个游戏。请阅读教程“如何创建一个”Hello World“的C + +项目的cocos2d-x2.2.2或3.0”我http://www.cocos2d-x.org/forums/6/topics/43031 ,如果想创建一个2.2 * V的JavaScript游戏只是用

<PRE> 
蟒蛇create_project.py项目MyGame包com.MyCompany.AwesomeGame语言JavaScript的
</ PRE>

如果您正在使用。*稳定版3

<PRE> 
蟒蛇create_project.py-N GameName-K com.cocos2dx.gameName-L的javascript-P .. /。。/项目
的</ pre>

第二步:
我们可以在此路径下找到一个格式文件“JSON。”: 可以帮我们添加/跳过任何JavaScript的文件。在这种情况下,我们只需要修改这个文件,如: 它复制到这个路径:“/ Users/UserName/cocos2d-x-2.2.2/projects/MyGame/Resources” 第三步: 根据这个路径:





<PRE> 
CD / Users/UserName/cocos2d-x-2.2.2Test/tools/cocos2d-console/console 
的</ pre>

我们可以找到“cocos2d.py”脚本。下面是转换“JS”到“JSC”由Python代码安全性的工具。
所以,如果你已经准备运行的Python环境。你可以执行像这样:

<PRE> 
蟒蛇cocos2d.py funtionName argumentName1 ... 
</ pre>

现在,您可以执行此命令是这样的:
蟒蛇cocos2d.py jscompile D / Users/UserName/cocos2d-x-2.2.2/projects/MyGame/Resources /秒/ Users/UserName/cocos2d-x-2.2.2/projects / MyGame /资源/秒/ Users/UserName/cocos2d-x-2.2.2/projects/MyGame/Resources/srcØgame.cocos2d.js J / Users/UserName/cocos2d-x-2.2.2Test/projects/MyGame/Resources / compiler_config_sample.jsonÇ 
然后你可以删除所有文件的路径下:“/ Users/UserName/cocos2d-x-2.2.2/projects/MyGame/Resources/src”,并运行的“Hello world游戏”。如果它进行确定。祝贺!你为你的代码的安全性非常出色。
h1.Now,我们可以看到什么happan在下面的命令一步一步发生了什么。
在命令“\ $蟒蛇cocos2d.py jscompile。”我们有6个参数。
**(1 )“D OUTPUT_DIR”** 
在这个参数所需要的输出方向为转换后的文件。
即:

<PRE> 
D / Users/UserName/cocos2d-x-2.2.2/projects/MyGame/Resources / 
</ PRE>

“S cocos2dx_root/scripting/javascript/bindings/js”
在这个论点所需要的输出方向为转换后的文件。
即:

<PRE> 
S / Users/UserName/cocos2d-x-2.2.2/projects/MyGame/Resources / 
</预>

如果你的javascript下多个文件夹的代码。那么你可以这样声明的方式
,即:

<PRE> 
S / Users/UserName/cocos2d-x-2.2.2/projects/MyGame/Resources /〜〜S / Users/UserName/cocos2d-x-2.2.2/projects/MyGame/Resources/src 
的</ pre>

“〜〜Øgame.min.js” 
在这个参数需要转换的文件的名字“〜〜Ĵcompiler_config_sample.json” 在这种说法需要compiler_config_sample.json的方向。 即:


<PRE> 
J / Users/UserName/cocos2d-x-2.2.2Test/projects/MyGame/Resources/compiler_config_sample.json 
</ PRE>

(5)“C”\
在这个参数需要什么。
如果添加“C”是指压缩所有js文件逼到一个大文件
,即:

<PRE> 
J / Users/UserName/cocos2d-x-2.2.2Test/projects/MyGame/Resources/compiler_config_sample.json 
</ PRE>

如果你不不想压缩所有js文件逼到一个大文件。你可以输入命令像这样:

蟒蛇cocos2d.py jscompile-D / Users/UserName/cocos2d-x-2.2.2/projects/MyGame/Resources /-S / Users/UserName/cocos2d-x-2.2.2/projects/MyGame/Resources /-S / Users/UserName/cocos2d-x-2.2.2/projects/MyGame/Resources/src 

只是忽略第j XXX XXXØÇ

H1。中底:
您可以使用命令

<PRE> 
蟒蛇cocos2d.py jscompile -帮助
</ PRE>

用法:cocos2d.py jscompile〜〜HK SRC_DIR〜〜Ðdst_dir 
选项:
H, - help显示此帮助信息并退出
s SRC_DIR_ARR,-SRC = SRC_DIR_ARR 
所需要的编译js文件的源目录,
支持多发的源代码目录
ÐDST_DIR, -DST = DST_DIR 
的js的字节码文件的目标目录被
储存
C,-use_closure_compiler 
是否使用闭包的编译器来压缩所有的JS 
文件到只是一个大文件
ØCOMPRESSED_FILENAME,-output_compressed_filename = COMPRESSED_FILENAME 
仅当'C'选项为真
ĴCOMPILER_CONFIG ,-compiler_config = COMPILER_CONFIG 
使用JSON进行封闭编译器的配置,
请参阅compiler_config_sample.json



http://chatgpt.dhexx.cn/article/tOneEOcl.shtml

相关文章

android cocoscreator jsc js 间加解密(六)

前言 前面 学了 aandroid cocoscreator 热更新 超详细篇&#xff08;五&#xff09; 这章 主要学习 cocoscreator 构建后 jsc 与js 文件 之间相互转化&#xff08;加解密&#xff09;并实际测试. 可以配置cocoscreator热更新使用 1: 准备 win7 64位 cocoscreator2.0.10 &#…

jsc反编译以及二进制修改

参考&#xff1a;https://www.52pojie.cn/thread-814217-1-1.html 最近碰到jsc的游戏&#xff0c;游戏中有跳过功能但有限制&#xff0c;想着对游戏进行修改达到无条件跳过。 首先&#xff0c;反编译jsc文件&#xff0c;使用这个工具https://github.com/irelance/jsc-decompile…

jsc反编译工具编写探索之路

对于经常做游戏安全逆向的读者来说&#xff0c;可能会经常遇到Cocos2dx编写的游戏。这个国产开源的游戏开发引擎支持多种编程语言进行游戏开发&#xff1a;发括主流的C/C/JavaScript/Lua&#xff0c;之前&#xff0c;与大家讨论的Lua软件安全系列的文章&#xff0c;讨论的是采用…

vue.jsc初体验

Vue 1.安装脚手架 (1)npm install -g vue-cli (2)Vue -v //查看是否安装成功 (3)Vue init webpack name(名称) (4)Npm install (5) (6)Npm install (7)Npm run dev 2.用vue构建项目笔记3(引入jquery和bootstrap) 其实用了vue以后&#xff0c;并不建议再去用jquery. vue是视图…

jsc转js工具使用方法

近日难得手闲写了这个小工具&#xff0c;发上来让大家参考参考。之前没有写详细使用说明&#xff0c;这里补一下 进到工具的文件夹下&#xff0c;直接执行exe可以看到要什么参数 这个新弹出的窗口可以直接关闭&#xff0c;这个只是让你看它需要什么参数的 2.所以如果你要解密…

Day07Spark多语言开发

Spark多语言开发 学习目标 1.掌握使用Java语言开发Spark程序 2.了解线性回归算法案例 3.了解使用Python语言开发Spark程序 4.了解决策树分类算法案例 1. JavaSpark 1.1 编程语言说明 Spark 在诞生之初就提供了多种编程语言接口&#xff1a;Scala、Java、Python 和 SQL&#x…

cocos creator jsc 逆向解码为js

cocos creator 下的jsc cocos creator 编译之后的所生成的jsc文件&#xff0c;虽然后缀是jsc,但其实和js虚拟机所执行的字节码(jsc)是二个不同的东西&#xff0c;只是使用xxtea对js文件进行加密而已。xxtea是可逆的&#xff0c;所以cocos creator下的jsc是完全可逆的&#xff…

Cocos2dx-js 资源.jsc和.pkm反编译

.jsc 解密 1. 找到apk里面的libcocos2djs.so. 用编辑器utf-b模式打开 2. 搜索Cocos Game 紧接着的 220404db-d3df-4b 就是密码 3. 使用工具decrypt.exe 即可解密 下载地址:https://download.csdn.net/download/liutietuo/86511410 cocos creator script decrypt version 1.0…

jsc 解码窥探

先使用 JS_DecodeScript反编译jsc 得到AST树 AST树词法解析 http://esprima.org/ AST还原成源码&#xff1a; npm install escodegen AST树遍历&#xff1a;npm install estraverse https://developer.mozilla.org/en-US/docs/Mozilla/Projects/SpiderMonkey/Internals/Byte…

cocos2d-js中jsc逆向为js

1.mac系统 2.安装php7以上的版本 ubuntu $ sudo apt install php7.0 mac $ brew install php7.0 windows just google an binary one 查看php安装的版本这里mac电脑为例子: 输入:php -v 只要7以上的版本即可 3.cd到自己的项目位置 cd path/to/project 安装composer,…

如何设置input默认值

之前聊过input最大字数限制&#xff0c;今天看下如何设置输入框默认值 placeholder属性 如下&#xff1a; <input type"text" maxlength"11" placeholder"名字"/> 输入框展示效果如下&#xff1a;

input标签点击移除默认值

使用onfocus事件检查当前输入框内的值,如果是默认得值,就将value属性置空. <input type"text" value"请输入内容" onfocus"javascript:if(this.value请输入内容)this.value;"> 操作之前: 操作之后:

Python input输入超时选择默认值自动跳过

Python input输入超时选择默认值自动跳过 Python input 等待键盘输入&#xff0c;超时选择默认值&#xff0c;释放input&#xff0c;之后重新进入等待键盘输入状态&#xff0c;直到用户输入可用数据。 一、调用 func_timeout 模块实现超时控制 1、安装 func_timeout 库 pip…

html文本框设置默认值,HTML input文本框设置和移除默认值

这里想实现的效果是&#xff1a;设置和移除文本框默认值&#xff0c;如下图鼠标放到文本框中的时候&#xff0c;灰字消失。 1.可以用简单的方式&#xff0c;就是给input文本框加上onfocus属性&#xff0c;如下代码&#xff1a; οnfοcusif(this.value"请输入关键字进行搜…

使用js代码修改input的默认值

内容&#xff1a;使用js代码来对input设置的默认值进行修改&#xff0c;点击按钮修改input的默认值 代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title><scrip…

html设置input默认值,使用jQuery给input标签设置默认值

由于项目需求&#xff0c;简单地写了一个input默认值设置&#xff0c;实现给.form中所有的input设置默认值的方法。input默认值设置 $(function() { //集体调用 $(".form input").each(function(){ $(this).setDefauleValue(); }); //单个调用 $("#key").s…

antd 给input设置值_Antd 中 Input 组件默认值的显示

1、input标签中有placeholder可以显示默认值 但是有少量样式的问题(字体颜色会淡一点) placeholder属性 2、用Input组件中的defaultValue属性 defaultValue属性 3、form表单组件中的initialValue参数 注意&#xff1a;当Form组件和Input组件一起用时&#xff0c;defaultValue在…

Ant Design React中 Form.Item 中设置Select,Input.TextArea,Input默认值

<Formref{this.formRef}name"dynamic_rule"initialValues{{ one: 0, two: 0, three: "0", desc:"尝试一下" }}></Form>在Form 使用initialValues{{ name:"value" }}>

踩坑 antd Form表单获取input默认值失败,Form表单校验input 必填 默认值为undefined

问题描述&#xff1a;1&#xff0c;跳转页面后&#xff0c;通过url传参&#xff0c;将参数自动回填到下一个页面的input输入框里&#xff0c;打开页面后&#xff0c;input成功显示回写内容。2&#xff0c;为FormItem添加必填校验required:true。3&#xff0c;提交表单&#xff…

js压缩混淆加密工具,解密工具

js压缩混淆加密有什么不同 压缩 compress&#xff1a; 去掉空格&#xff0c;换行&#xff0c;注释等&#xff0c;格式紧凑&#xff0c;节约存储空间。 混淆 obfuscate/garble&#xff1a;替换变量名或方法名&#xff0c;让js不容易看懂。也做到了压缩的效果。 加密 encrypt&…