感谢支持哇
请问项目中是否有使用 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。。。
高级混淆,已经驳回,楼主给个思路
请问下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
能否尝试下关闭【字符串聚合】选项?
大佬加下我微信详聊吧~
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),也会导致混淆失败,直接把这个删了。