您的位置: 首页 > 新闻中心 > 公司新闻   ob平台
Lua游戏逆向及破解办法介绍
发表日期:2022-09-17 19:41:31 | 作者:ob体育登录  

  跟着手游的开展,越来越多的Cocos-lua端游开发者搬运到手游渠道。Lua脚本编写逻辑的手游也是越来越多,如梦境西游、刀塔传奇、高兴消消乐、游龙英豪、奇观暖暖、疾风猎人、万万没想到等手游。跟着Lua手游的添加,其安全性更值得重视,在此概括一些常用的剖析办法,一起介绍一些辅佐东西。

  Android渠道的apk包能够直接解压,找到./lib目录下的so逻辑模块,一个个剖析其so,寻觅是否内嵌lua引擎(一般情况下,最大的so最有或许内嵌lua引擎)。如果有libcocos2dlua、libhellolua字样,其内嵌lua引擎的或许性极大。

  将可疑so拖入IDA,检查lua引擎字符串,找到如图1所示的lua引擎内字符串,那该手游根本就能够确定是内嵌了一个lua引擎,有极大或许是用lua编写游戏逻辑。

  也能够合作留意下解压出来的assets目录下,是否包括脚本信息。这类信息一般是加密的(也有许多安全意识单薄的是直接lua脚本明文寄存的),但有个显着特征是:有多个文件寄存。如图2和图3所示,分别是两款十分炽热的Lua手游的assets目录下的lua脚本信息。其间D手游仅是对luac进行加密,而M手游则是连姓名也弄个哈希加密。

  Lua手游的破解首要分红两步,一步是能获取游戏lua脚本;第二步是替换lua脚本。中心是找到lua脚本,然后修正收效。不同安全级别的手游,相应的lua脚本获取机遇点会有所不同。(实质是沿着Lua引擎加载lua脚本的整条加载链,如图4所示,去不断剖析找到适宜机遇点dump和替换。)

  另一类思路,是辅佐东西常用的办法,比方叉叉的lua手游辅佐。只需求获取游戏lua脚本信息,然后无需替换,而是直接加载本身的一个lua脚本(该脚本和游戏脚本在同一个命名空间,可直接修正游戏脚本数据,调用函数)。

  针对luac源码类型(luac是lua编译的lua字节码文件,包括lua脚本一切信息,详细可查找lua字节码文件结构),能够运用unluac等开源项目/东西反编译回lua源码。然后修正直接替换回修正后的lua源码文件即可(lua引擎加载脚本的时分,会辨认luac magic number判别是lua源码仍是luac,直接替换源码下去是不会影响脚本加载履行的)。

  luaL_loadbuffer是一个走得比较频频的加载点。Cocos引擎的lua加载器为cocos2dx_lua_loader,如图4所示,终究都是调用luaL_loadbuffer函数来加载。一般厂商会在这层上面临lua脚本进行解密,既是在luaL_loadbuffer函数获取buff参数可得到解密后的lua脚本。修正逻辑后能够直接在这个点替换回去。

  lua引擎加载lua脚本最底层是到lua_reader函数。该函数担任最底层的脚本buff遍历,因此在此处dump出来的lua脚本是最纯粹的lua脚本,一切加密都现已被去除(修正lua opcode或许引擎逻辑在外)。

  不过这个点的获取不到满足的文件信息(文件名、buff index等),需求合作上层函数凑集lua脚本。

  能够进行动态调试和静态剖析的东西,能在适宜的方位下断点,修正指定寄存器和编写IDC脚本合作剖析(这儿可用来dump luac文件),不多介绍。

  Unluac是一个lua反编译器开源项目,可将luac文件反编译为lua代码。针对梦境西游、刀塔传奇等修正了lua opcode的手游,在静态剖析承认复原opcode后,可修正这个项目打包出个对应版别的反编译东西(直接修正OpcodeMap.java里的map,改成对应游戏修正后的Opcode即可)。

  (1)修正大局变量(大局装备之类的)(2)update函数的调用逻辑修正(不update或许update屡次)(3)敌人类、主角类、兵器类、技术的初始化进程,特点修正(4)一些进程处理函数的逻辑修正(如损伤核算、射中部位断定等)

  在lua_reader函数可直接dump出游戏lua源码,在其/zoo/gamePlay/GamePlayConfig.lua文件中装备了游戏分数奖赏等特点,修正如图5 所示为几个特效额定得分即可轻松暴分。

  这儿给出叉叉的一个比如。叉叉针对刀塔传奇有相应的辅佐,其间快速战役完成如图6 所示:是经过HOOK了update函数(lua中函数名是指针,备份原先函数指针,直接重写即可完成HOOK),在update函数尾调用10次tick完成。

  在lua_reader函数可直接dump出游戏lua源码,如图7 所示:MoveMode::useMove函数担任处理步数扣除,直接修正为添加10步即可完成步数添加功用。

  Lua手游相对来说,仍是不行安全的。由于lua引擎不仅是开源的,并且相对python等脚本引擎更简略。外挂作者在lua引擎底层如虎添翼。上面介绍的剖析破解思路,便是沿着lua引擎加载脚本的函数链进行剖析,找到一个解密后的点dump出脚本,针对脚本进行详细剖析,测验结构攻击点破解版游戏完成外挂功用。