一个开源的自动代码混淆插件

感谢支持哇 :smile_cat:

请问项目中是否有使用 this[‘字符串’] 的形式的调用呢,建议改成直接调用即可,不过编辑器可能会报错,不影响运行即可

混淆的不够强啊
可用信息还是挺多的
至少现在看到了类名,然后还有loadres之类的官方api
另外对象的属性名,方法名,和properties的属性名也没混
类名可以通过project.js最后的数组,获取所有类名,直接替换
官方的api,改成用.[string]来调用,然后string再加密
对象的属性名,这个需要开发者配合修改属性名来达到效果
混淆规则加上属性名正则混淆,比如.atk_m_会混淆.atk则不会
方法名其实也属于类的属性,可以通过正则混淆来实现
但由于编辑器有可能调用方法,比如button组件的clickEvent
所以放弃了正则混淆,改成获取脚本的方法名,然后再混淆,再同步修改json文件,以确保组件能正常调用脚本的方法
properties就和方法名差不多,获取所有在properties定义的属性,然后混淆,同步修改json文件
以上,除了对象的属性名需要开发者配合,其他的都可以无感混淆
我做原生,在底层把onLoad等方法都改了,脚本里一个有用的字符串都没
不过我代码写的丑,就不献丑了
楼主有空出个高级版吧

必须点赞.

如果用 this[xxx] 访问方式,xxx 是个变量,会影响吗?我这有段代码是这么写的。

这样应该没影响哈哈

下mark,用的到时候不着急

大佬的思路确实不错!!!

mark.

挺方便的,感谢

mark,有空再用。

mark。。。

高级混淆,已经驳回,楼主给个思路:joy:

请问下2.4.3发布微信小游戏时,混淆执行了 但构建完成后发现代码和之前一点变化都没有,编辑器也没报错

2.4.3版本用究极轻量混淆后,编译安卓工程运行后,就报这个错了,是什么情况啊

E/jswrapper: ScriptEngine::evalString script assets/main/index.5224b.jsc, failed!
[ERROR] Failed to invoke require, location: /Applications/CocosCreator/Creator/2.4.3/CocosCreator.app/Contents/Resources/cocos2d-x/cocos/scripting/js-bindings/manual/jsb_global.cpp:300
E/jswrapper: ERROR: Uncaught SyntaxError: Invalid or unexpected token, location: assets/main/index.5224b.jsc:0:0
STACK:
[0]anonymous@jsb-adapter/jsb-engine.js:3340
[1]download@jsb-adapter/jsb-engine.js:3351
[2]downloadScript@jsb-adapter/jsb-engine.js:3339
[3]anonymous@jsb-adapter/jsb-engine.js:3507
[4]anonymous@jsb-adapter/jsb-engine.js:3180

能否尝试下关闭【字符串聚合】选项?

嗯,那个我也试过了,还是一样的报错,奇怪


是引入的proto库导致的混淆失败,现在有没有可以直接过滤某个类不混淆的字段呀

大佬加下我微信详聊吧~
im_chenpipi

找到问题了,记录一下,是接入的protobuf库的问题导致,库里有个longbits.js文件,var zeroHash = LongBits.zeroHash = “/0/0/0/0/0/0/0/0”,我改成了var zeroHash = LongBits.zeroHash = “”,感觉是个判断为空的方法,先这样改了。 还有个地方就是用了 protobuf.Reader.create(data),也会导致混淆失败,直接把这个删了。

1赞