Skip to content

Commit

Permalink
Merge pull request OEDx#1 from wzpan/master
Browse files Browse the repository at this point in the history
修复英文注释语法错误;完善README
  • Loading branch information
QinGeneral authored Sep 11, 2018
2 parents 041c51c + 6bd17ac commit 58e6f0c
Show file tree
Hide file tree
Showing 2 changed files with 30 additions and 21 deletions.
45 changes: 27 additions & 18 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,43 +1,51 @@
### 简介
# cocos-jsc-endecryptor

此脚本用于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 @@ -46,7 +54,8 @@ CocosCreator构建时,是否勾选Zip压缩选项决定了使用脚本的参
| --nozip | -n || false |
| --path | -p || - |

### 参考文章
## 参考文章

- [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 58e6f0c

Please sign in to comment.