1.å¦ä½åå°cocos2d-xç¼è¯åºçlibcocos2dlua.so ä½ç§¯
2.有人会用lua语言在cocos2d上编写一个简单的别踩白块游戏嘛?求源代码
3.逆向入门cocos2d游戏逆向分析
å¦ä½åå°cocos2d-xç¼è¯åºçlibcocos2dlua.so ä½ç§¯
å¦æä½ æ¯3.0çè¯ï¼ 2d\ccConfig.h ä¸å¯ä»¥è®¾ç½®å个å®å¼å ³ æ¯å¦ä¸è¦ç©çï¼
#ifndef CC_USE_PHYSICS
#define CC_USE_PHYSICS 0 //0æ¯ä¸è¦ 1æ¯éè¦
#endif
å¦ææ¨å¯¹æçåçæä¸æ»¡æçå°æ¹ï¼è¿è¯·æ¨ç»§ç»è¿½é®ï¼
çé¢ä¸æï¼äºç¸ç解ï¼äºç¸å¸®å©ï¼
有人会用lua语言在cocos2d上编写一个简单的别踩白块游戏嘛?求源代码
lua和python是最常见的两种游戏内使用的脚本语言,lua程序设计只会讲lua语言的一些内容,具体不会讲怎么使用在游戏里,或者跟其他语言怎么结合。 具体游戏中的例子可以查查lua在游戏内用法的一些例子,网上有很多的在线更新源码,或者你可以去某个游戏公司上...
逆向入门cocos2d游戏逆向分析
深入剖析cocos2d-x游戏逆向分析
cocos2d-x是一个开源的移动2D游戏框架,它底层支持各种平台,核心用c++封装了各种库,外部则提供了lua和c++接口。关键代码可能隐藏在lua脚本中,许多安卓游戏的逻辑也主要在lua脚本里运行。通过官网示意图了解从c++进入lua世界的路径。
探索cocos2d-x的lua虚拟机相关代码,包括CCLuaEngine.h和CCLuaStack.h。商业源码网 下载在应用结束加载中进入lua虚拟机,具体由applicationDidFinishLaunching函数调用engine->executeScriptFile("main.lua")实现。
在luaLoadBuffer函数中,使用xxtea_decrypt解密了lua脚本,并通过luaL_loadbuffer加载解密后的脚本内容。因此,通过hook这个函数,溯源码 替代 qs可以将(char*)content字符dump出来,获取解密后的lua脚本。
然而,luaL_loadbuffer的源码无法直接获取,它位于编译过的库cocos2d-x\external\lua\luajit\prebuilt\android\armeabi-v7a\libluajit.a中。要找到实现细节,需要下载luajit源代码进行深入分析。hadoop-1.2.1源码
总结关键点:
1. 从c++进入lua世界的调用逻辑。
2. 使用xxtea加密算法,sign和key为XXTEA和2dxlua。
3. 无论是否加密,都会调用luaL_loadbuffer函数,通过hook这个函数获取解密后的lua脚本,但需运行游戏一次。apache cxf 源码分析
4. cocos2d-x\external\xxtea\xxtea.cpp中有加密解密算法,逻辑清晰,可使用python脚本本地解密或hook获取key、sign或解密后脚本。
实战案例:
以某捕鱼游戏为例,下载apk后内部集成十余款小游戏。通过分析游戏源码,找到luac加密文件,解密key和sign。使用ida打开libqpry_lua.so,定位到AppDelegate::applicationDidFinishLaunching函数,找到加密调用。对比源码,解密后可直接运行游戏。
深入lua脚本分析,如子弹击中鱼的逻辑,直接查找src\views\layer\BulletLayer.luac文件。通过修改相关函数参数,实现特定功能。其他功能逻辑获取源码后易于理解,修改代码后重新加密,实现游戏破解。
思考如何实现cocos2d-x反逆向,从浅至深可采用以下方法:
1. 修改xxtea的key和sign,需分析so文件。
2. 直接修改xxtea算法,增加逆向难度。
3. 更改luajit源码,调整字节码指令顺序或数据读取顺序。
4. 将关键代码封装到其他cpp或so文件,增加解密步骤。
5. 使用ollvm混淆代码,需分析混淆或vm。