Skip to content

Commit

Permalink
fix typo and improve README
Browse files Browse the repository at this point in the history
  • Loading branch information
wzpan committed Sep 11, 2018
1 parent 041c51c commit 6dcfca5
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 17 deletions.
35 changes: 21 additions & 14 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,39 +1,45 @@
### 简介

此脚本用于CocosCreator加密编译后 jsc 文件解密为 js 文件和 js 文件加密为 jsc 文件
Cocos Creator 在构建的时候支持对脚本进行加密和压缩

CocosCreator构建时,是否勾选Zip压缩选项决定了使用脚本的参数不同。在CocosCreator的构建面板下图的位置中,查看加密密钥和是否开启Zip压缩。
![](https://ws3.sinaimg.cn/large/0069RVTdgy1fuzxib2j7gj30no04ojrl.jpg)

> 此脚本在 macOS High Sierra 10.13.6 系统,Python 2.7 下运行正常,其他环境未测试
然而,官方并没有提供一个解压和解密的工具。这给 jsc 的二次修改和重用带来了不便。

本工具弥补了这个不足:提供了与 Cocos Creator 相同的加密、解密、压缩、解压的方法。可以很方便地对构建得到的 jsc 进行解密、解压得到 js ,也可以将 js 压缩、加密回 jsc 。

### 使用说明

命令行使用:

1. 如果使用加密功能,第二个参数设置为 **encrypt**;如果使用解密功能,第二个参数设置为 **decrypt**。此参数为必选参数
1. 如果使用加密功能,第二个参数设置为 `encrypt`;如果使用解密功能,第二个参数设置为 `decrypt`。此参数为必选参数

2. 如需设置加密密钥,添加 --key 或 -k 参数,并跟上加密密钥字符串。如不设置,会在命令行中提示输入

3. 如需设置为非压缩方案,添加 --nozip 或 -n 参数,并设置为 true。如不设置,默认为压缩方案

> 非压缩方案是指Cocos编译时没有勾选“Zip 压缩”选项
4. 找到CocosCreator编译出来的 .jsc 文件,一般在工程目录下 **build/jsb-default/src** 文件夹下。你可以在脚本运行时,根据提示输入文件的路径来指定对应文件。也可以添加 --path 或 -p 参数,设置为文件路径。如不设置,会在命令行中提示输入
4. 找到 CocosCreator 编译出来的 .jsc 文件,一般在工程目录下 `build/jsb-default/src` 文件夹下。你可以在脚本运行时,根据提示输入文件的路径来指定对应文件。也可以添加 --path 或 -p 参数,设置为文件路径。如不设置,会在命令行中提示输入


5. 运行脚本即可
- encrypt:解密后文件路径为 **decryptOutput/decrypt.js**
- decrypt: 加密后文件路径为 **encryptOutput/projectChanged.jsc**
5. 运行脚本即可。

- encrypt:解密后文件路径为 `decryptOutput/decrypt.js`
- decrypt: 加密后文件路径为 `encryptOutput/projectChanged.jsc`

6. 举例:
- ./edc.py encrypt --key yourkey --nozip true
- ./edc.py decrypt --nozip true
- ./edc.py decrypt

其他Python脚本中引用:
``` sh
./edc.py encrypt --key yourkey --nozip true # 加密,不压缩
./edc.py decrypt --nozip true # 解密,不需要解压
./edc.py decrypt # 解密并解压
```

在其他 Python 脚本中引用:

1. 下载edc.py文件放到你的脚本目录下,通过 **import edc** 进行导入
2. 直接调用 edc.decrypt(is_zip, key, jsc_path) 或 edc.encrypt(is_zip, key, js_path) 即可,可参考 edcExample.py 文件
1. 下载edc.py文件放到你的脚本目录下,通过 `import edc` 进行导入
2. 直接调用 `edc.decrypt(is_zip, key, jsc_path)``edc.encrypt(is_zip, key, js_path)` 即可,可参考 edcExample.py 文件

> 如果是非交互式脚本,请务必在调用方法时传入有效的参数,并保证其正确性

Expand All @@ -48,5 +54,6 @@ CocosCreator构建时,是否勾选Zip压缩选项决定了使用脚本的参

### 参考文章

- [jsb_global.cpp](https://github.com/cocos-creator/cocos2d-x-lite/blob/develop/cocos/scripting/js-bindings/manual/jsb_global.cpp)
- [形同虚设的cocos默认加密](http://blog.shuax.com/archives/decryptcocos.html)
- [cocos2dx lua 反编译](https://bbs.pediy.com/thread-216800.htm)
6 changes: 3 additions & 3 deletions edcExample.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@
import os


# this is a efficient way to change the code,
# with no need for wait a long time to rebuild cocos
# this is an efficient way to change the code,
# with no need to wait for a long time to rebuild cocos

def edcExample(is_zip, key, jsc_path):

Expand All @@ -25,7 +25,7 @@ def edcExample(is_zip, key, jsc_path):
return

# change .js code
print 'begin change the code.'
print 'begin to change the code.'
project_file_name = 'decryptOutput/decrypt.js'
project_file = open(project_file_name)
changed_project_file = open(prefix + '/projectChanged.js', 'w')
Expand Down

0 comments on commit 6dcfca5

Please sign in to comment.