安全客
上一篇讲解了如何加载一个Luac文件到IDA Pro当中,加载进入idb数据库的内容犹如切好洗净的食材,并不能粗暴的直接展示给用户,还需要IDA Pro中的处理器模块对内容进行下一步的反汇编渲染与指令功能注释。
距离上一次讲Lua程序逆向已经有一段时间了,这一次我们书接上回,继续开启Lua程序逆向系列之旅。
Luajit的字节码设计与指令的反汇编有很多值得学习的地方。Luajit使用了一种完全全新的方式来编译与执行Lua程序。经过处理后的Luajit程序,字节码的编码实现更加简单,执行效率也比原生Luac指令更加高效。
Luajit将原生Lua进行了扩展,使它支持JIT方式编译运行。Luajit在游戏软件中应用广泛,学习Lua程序逆向,就避免不了与Luajit打交道。下面,我们以最基本的Luajit文件格式开始,逐步深入的学习Lua程序的逆向基本知识。
在了解完了Luac字节码文件的整体结构后,让我们把目光聚焦,放到更具体的指令格式上。Luac字节码指令是整个Luac最精华、也是最具有学习意义的一部分,了解它的格式与OpCode相关的知识后,对于逆向分析Luac,会有事半功倍的效果,同时,也为自己开发一款虚拟机执行模板与引擎打下良好的理论基础。
探究Luac的内幕需要找到合适的资料与工具来辅助分析Luac文件。最好的资料莫过于Lua的源码,它包含了Lua的方方面面,但这里采取阅读第三方Lua反编译工具的代码。主要原因是:这类工具的代码往往更具有针对性,代码量也会少很多,分析与还原理解Luac字节码文件格式可以省掉不少的时间与精力。
长期从事Android SO动态库分析时,时常会做一些重复性较高的工作。IDA Pro载入SO,导入jni.h头文件,设置Java_com_xxx_yyy()类型方法前两个参数为JNIEnv* env与jobject thiz等等;将这些工作自动化,可以大大的提高逆向分析的工作效率。基于IDA Pro提供的脚本与插件系统,可以很方便的完成以上前3项工作。下面,我们一步步来打造一个SO自动化逆向分析的工具。
勋章成就
稿费总计 4700
发表文章 7
参与讨论 0
关注
0
粉丝
18