1.关于Cocos2dx-js游戏的游r游jsc文件解密
2.cocoscreatoråthreejsåºå«
3.Cocos2d-xãQuick-Cocos2d-xãCocos StudioãCocos2d-jsãCocos Code IDEçåºå«
4.Cocos Creator 怎么用js代码实现微信授权登陆
5.cocos creator使用protobuf详细方案
关于Cocos2dx-js游戏的jsc文件解密
上一期关于Cocos2dx-js游戏的jsc文件解密教程后,收到不少同学反馈,戏源戏源提出了相关问题。码c码本文将对这些问题进行初步分析,游r游并提供一些解答。戏源戏源
首先,码c码httpservlet的源码通过官网下载CocosCreator开发工具并构建编译,游r游发现有脚本加密选项。戏源戏源构建后的码c码样本APK中,通过Jadx-gui进行java层源码分析,游r游了解到assets目录下二进制源代码的戏源戏源加载情况。在入口Cocos2dxActivity处,码c码话费平台源码有一个onLoadNativeLibraries函数加载libcocos2djs.so文件。游r游在AndroidManifest.xml中找到其定义为cocos2djs。戏源戏源
初步分析显示,码c码脚本加密操作可能发生在非java层,因此将研究对象转移至libcocos2djs.so文件。通过阅读Cocos2dx源码,发现其使用xxtea加密和解密。CocosCreator构建项目过程则相反,运行时进行解密操作。
为了获取Key值,我们以两个游戏案例进行分析。无后插件源码游戏A中,将libcocos2djs.so文件拖入十六进制编辑器搜索ASCII字符串"Cocos Game",未找到相关信息。使用IDA分析libcocos2djs.so文件,发现函数名简洁,未进行安全处理。搜索xxtea / key函数,找到相关函数。尝试直接在so层获取Key值,发现jsb_set_xxtea_key函数可能设置Key。通过回溯,源码网投稿找到了游戏A中的Key值(v),使用该值成功解密jsc文件。
游戏B的分析类似,同样在jsb_set_xxtea_key函数中找到Key值(v),并通过附近的字符串找到可疑的Key值和Cocos Game。尝试使用此Key值解密,同样获得成功。对比游戏A中的密匙,发现都位于applicationDidFinishLaunching函数内,可能为新的找Key值的关键。
通过阅读相关源码,战神线源码了解Cocos2d-x应用入口中加载完成时回调的方法。结合CocosCreator构建项目过程,理解游戏应用环境加载完毕后,Key值传入解密函数中,解密文件化为js文件,并在内存中拷贝,游戏调用js文件进入游戏界面。
在其他关键函数分析中,可以进一步探索解密过程。例如,在xxtea_decrypt函数中观察memcpy和memset操作,以及do_xxtea_decrypt函数的大量计算。结合CocosCreator源代码,可以确定传入参数中的Key值。使用Frida框架在游戏运行时Hook xxtea_decrypt函数,通过简单的js脚本直接获取Key值,操作相对简单。
关于解密工具,获取Key值后,直接参照CocosCreator源代码实现解密逻辑即可。此外,网上也存在一些封装好的加解密程序,如jsc解密v1.,可满足当前Cocos2dx版本的文件加解密需求,操作较为简单。
总结,通过初步分析和实例探索,已经提供了一些解密Cocos2dx-js游戏jsc文件的关键步骤和方法。欢迎交流和分享更多见解。
cocoscreatoråthreejsåºå«
cocoscreatoræ´éåç¨æ¥å2Då¨ç»ææãthree.jsæ´éåç¨æ¥å3D模åææã
three.jsæ´éåç¨æ¥å3D模åææãå¦ï¼è·³ä¸è·³å°±æ¯three.jså¶ä½çãcocoscreatoræ´éåç¨æ¥å2Då¨ç»ææãå¦ï¼æå°ä¸»ï¼å¡ç游æä¸è¬å°±æ¯cocoscreatorå¶ä½çã
CocosCreatoræ¯ä¸æ¬¾ä¼ç§çå¼æºç§»å¨æ¸¸æå¼æï¼å¨å ¨çèå´å æ¥ææ°éåºå¤§çç¨æ·ã
Cocos2d-xãQuick-Cocos2d-xãCocos StudioãCocos2d-jsãCocos Code IDEçåºå«
Cocos2d-xæ¯è·¨å¹³å°çæ¡æ¶ï¼ç¨C++ï¼å æ¬windowsãiosãandroidãlinuxçé½å¯ä»¥ç§»æ¤ã
Quick-Cocos2d-xæ¯å¨Cocos2d-xä¸å äºä¸äºåè½ï¼å ·ä½æä¹æ²¡ç¨è¿ï¼æåªç¨è¿Cocos2d-xã
èCocos2d-jsæ¯ç¨JSè¯è¨ï¼ä¸»è¦æ¯ç¨äºç½é¡µç«¯æ¸¸æçå¼åã
Cocos Studio主è¦æ¯æ¸¸æçé¢åå¨ç»ç设计ã
Cocos Code IDEæ¯cocoså®æ¹åå¸çç¼ç¨å¼åç¯å¢ãå¦æä¸ç¨å®æ¹çï¼æ们å¯ä»¥ç¨eclipseåvsçå ¶ä»IDEï¼é 置好ä¹åè¿è¡å¼åã
Cocos2d-xç2.Xçæ¬å3.Xå·®å«è¿æºå¤§çï¼ä¸¤è¾¹ç代ç ä¸å¤ªè½å ¼å®¹ï¼éè¦ä¸äºå°ä¿®æ¹æè½è¿è¡ã
纯ææããã
Cocos Creator 怎么用js代码实现微信授权登陆
btnsetBright(false)先给btn设置禁用状态的,然后选中这个btn时,该btn调用上面的方法并设置成false。如果取消的话可设置成true。Cocos Creator 怎么用js代码实现微信授权登陆
cocos creator使用protobuf详细方案
protobufjs:6.x.x、7.x.x版本皆可
cocos creator:需使用“导入映射”,建议v3.3及以上版本
node参考版本:v..0
npm参考版本:8.5.5,安装protobufjs或执行脚本时报错,升级至指定及以上版本再试
三、安装protobufjs
package.json中dependencies有指定版本则直接使用npm install,否则使用npm install --save protobufjs
需要注意的是protobufjs7需要单独安装protobufcli(npm install --save protobufjs-cli),protobufjs6则在安装protobufjs时默认集成。
四、构建pb流程
1、提供构建protobuf协议指令
package.json
2、缩减生成单文件大小
--no-verify --no-convert --no-delimited --no-beautify --no-service
移除不需要的内容,需要通过生成带注释的js文件来生成ts,后可再生成一份不带注释的js文件替换
3、修正模块
解决es6规范default无定义的问题;微信小游戏平台生成代码被混淆后可以根据pb对象获得pb名;位数据支持
4、输出生成pb文件的package.json
五、导入映射
添加文件import-map.json
tsconfig.json修改为
如果遇到找不到模块 "pb"报错:一般为配置未能刷新,重启cocos creator即可
六、使用
安装依赖:npm install
构建协议:npm run buildproto
使用示例(无需主动import,代码提示自动导入即可,对应pb对象也有代码提示):
七、pb工具函数
encode
decode
克隆pb(类似其他语言的CopyFrom)
根据pb对象获得pb名
根据pb名获得pb类型
八、示例工程
CocosCreatorProtobuf