周杰伦 10/19/2023, 10:00:13 PM
文章分类 软件逆向 阅读数 : 443 阅读时长 : 2分钟
【软件逆向- lua脚本还原】此文章归类为:软件逆向。
一、过程1、对象:客户端(未加壳)2、分析和还原:2.1、lua保存在exe中,通过断lua_load相关的函数,dump出来脚本。signature一眼就知道是lua二进制格式的替换"\1bLua",如下: 2.2 、修改文件头的signature后,使用lua的反编译工具反编译会出错,经过排错定位,发现是lua引擎的loadfunction函数被修改了。lua的二进制文件解析,是按照流的方式来的,从流中读取字节解析。正常的读取顺序是psource、linedefined、lastlinedefined、numparams、is_vararg、maxstacksize,而程序中的读取顺序是依次是psource、linedefined、numparams、lastlinedefined、maxstacksize、is_vararg。正常的顺序: 程序修改后的顺序: 所以,修改反编译引擎的loadfunction代码就能够正确解析。2.3 继续进行反编译尝试,还是报错。怀疑是lua的opcode定义顺序被修改(十年前的套路,懂得都懂)。人肉还原了字节码(熬夜的体力活)。lua5.4有83个opcode,定义如下: 人肉识别后的顺序: 识别字节码就是通过ida中交叉引用来实现。
更多【软件逆向- lua脚本还原】相关视频教程:www.yxfzedu.com