行业解决方案查看所有行业解决方案
IDA 用于解决软件行业的关键问题。
发布时间:2022-10-09 15: 37: 10
IDA在游戏逆向研究中的重要作用已经被论证过无数次了,游戏开发者必须对可能的逆向分析做好防御,不被破解的第一步就是研究黑客是如何破解你的游戏。
继续分享来自安全论坛的关于游戏破解实战案例,本次邮箱引擎是LibCoscos2dula.so:
先尝试直接拖入到IDA中进行分析,预料到同样会被加固,无法直接获得想要的代码:
常规操作是去内存中DUMP出来数据,这里DUMP脚本很多,就不展开。DUMP得到的内容进行修复,推荐修复工具【https://github.com/F8LEFT/SoFixer】。但是我们会发现文件头被魔改过,用来的SO文件头复制粘贴进行后,再修复完成了。
这里总结下,LUA的游戏基本都是通过luaLoadBuffer进行HOOKdump。接下来我们去查询这个字符,但没有收获:
遇见这种情况,只能从开源框架下手继续。首先看下它的版本:
可以看到标黄的部分是cocos2d-x-3.13.1,需要下载这个版本的源码,官方下载地址:https://github.com/cocos2d/cocos2d-x
下载好解压,可以尝试直接用notepad++的搜索功能,来方便快速的搜索luaLoadBuffer:
结果其实可以发现实际是包含luaLoadBuffer,但只是被他隐藏了。那我们该怎么定位到它呢?我们看到上面有个?.lua的字符串我们去IDA搜下看看:
可以看到也是有的,鼠标点击过去,选中alua_2按下键盘下的X快捷键:
点OK跳过去:
我们可以看到这里和刚才看的源码基本上是一样的,那么我们按F5看伪代码:
通过分析sub_18A080就是luaLoadBuffer,我们点进去看看:
伪代码太长了,不全部截图列出,通过HOOK打印sub_18A080(v41,a1,v42,v43,v71);
V42=内容V43=长度V71=文件名。随后进到sub_18A080内部发这个sub_4595C0正好对应luaLoadBuffer参数:
sub_4595C0(a2,v21,v64,a5);=luaLoadBuffer(l,(const char*)data.getBytes(),(int)data.getSize(),fullPathOfScript.c_str());
到这里就不需要多说什么了直接HOOKdump脚本。发现出来竟然是LUAq的代码:
直接用unluac反编译发现会报错,所以应该是修改了opcode。我们继续用IDA定位opcode,进行搜索字符串“'for'limit must be a number”:
和刚才一样点击过去按X键,点OK跳过去:
然后使用F5进行分析:
case就是opcode,把它拿出来修改下unluac就可以解密了。
本案例转自【看雪网论坛】,原作者【lihaiyanz】
展开阅读全文
︾
读者也喜欢这些内容:
IDA怎么修改字符串内容?IDA修改后怎么保存?
在软件开发和逆向工程领域,IDA Pro是一种极其强悍的工具,广泛用于程序剖析、调试和修改。它不仅支持多种处理器架构,还提供了大量的作用,以适应高档讲解的必须。本文将围绕ida怎么修改字符串内容,ida修改后怎么保存这一主题,详细描述怎样在IDA中更改字符串内容,及其修改后的存放方式。此外,我们还将探讨IDA转变的应用场景,帮助读者更深入地了解IDA的实际应用价值。...
阅读全文 >
unity逆向工程是什么?使用IDA进行unity逆向工程方法
游戏开发的魅力在于创造与探索,而Unity逆向工程为开发者提供了一扇全新的大门。它允许你深入分析和改进使用Unity引擎创建的游戏。本文将详细介绍unity逆向工程是什么?使用IDA进行unity逆向工程方法。...
阅读全文 >
反编译exe是什么意思IDA如何反编译exe文件
反编译(Decompilation)是一项复杂而有技术挑战的领域,它在软件开发和安全领域中具有重要意义。随着计算机技术的不断发展,软件逆向工程的需求也日益增长...
阅读全文 >
动态调试是什么意思 IDA怎么进行动态调试
在计算机编程和软件开发领域,动态调试是一项至关重要的技术。它允许开发人员深入分析程序的运行时行为,定位和解决问题,以确保软件的质量和稳定性。...
阅读全文 >