仅提供实现思路, 毕竟这个网上资料也较少,思路值千金。
主流
目前手游逆向分为下面这几类
- 图色 (类似按键精灵)
- 封包 (通常用于模拟器x64)
- 内存 (通常用于真机)分为 Android 和 IOS 两大阵营
- 脱机 (脱离客户端纯代码与服务器交互)难度较大
易语言的使用优先级都是最高的,易语言写中控台效率相对是最高的。
现在主流的游戏引擎分为
- cocos
- unity3d 主流(分为 2cpp 和 mono 又可以 2lua)
- ue4
想学习 Unity 开发的话可以去找博主师傅 猴哥 联系博主可以课程打折
Lua
现在用到 lua 的游戏还是挺多的,无论是 cocos 还是 u3d
当然我们可以通过修改后重新打包的方式来处理, 但我这里说到的是另外一种方式! 毕竟方法不嫌多。
我们在解析普通 lua 非 luajit 的时候,有两种方法解密
- 在 so 中定位 luaL_loadbufferx 这个点来 hook 可以拿到解密后的明文 Lua 文件 (当然是在未混淆的情况下)
- 静态分析解密 Lua
那么我们拿到 Lua 文件后,想要插桩分析的话, 可以考虑使用 hook 替换的方法, 实现步骤如下:
- 现在 lua 可疑点中加入
debug.traceback()
获取堆栈 - 写一个保存输出函数,讲调试信息输出到本地 log 日志
- 修改后的 lua push 到手机中。
- hook so 中的
luaL_loadbufferx
替换原本的 lua 为我们插桩后的 lua 文件
这样一来执行的 lua 就会动态的被替换为我们修改后的 lua 文件
前提
- 需要熟悉 Lua 语言,否则这个流程都写不出来
- C# 也是需要会的
- java 、 C++ 这些也是必不可少的
- 汇编(根据不同平台)
- hook 调试
- 编码、封包、组包、解包这些都要熟悉才行
- 最后就易语言
当然如果你只是写图色脚本的话, 可以无视上面的前提直接怼就是完事了
One comment
楼主你说的替换原本的 lua,这个这么操作