【软件逆向- lua脚本还原,靠它赚了一台nanopc-t6】此文章归类为:软件逆向。
一、背景
三年前,我通过论坛的一次lua还原悬赏赚了2000多块,然后陆续有坛友私信我。疫情后赋闲在家,前天一个坛友加我微信帮忙还原另外的脚本。我看看收紧的钱包,答应了。这次赚了1000块,用时一夜。赚到的钱下单了nanopc-t6。
二、过程
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中交叉引用来实现。
三、分享心得
搞了好些年的逆向了,ios、安卓和pc都搞的,一直默默无闻。早年没有多写文章、多做视频、多分享工具或者出书,来打造自己的行业影响力。现在,我还在靠技术吃饭。这样真的很累,碰到一个新朋友,就要靠出卖技术(体力)来证明自己一次。希望后来的朋友能够吸取教训。 给自己取个固定的id,那就是你游走在网络上名号,如果可以,经营自己,打响自己的名号。 你可以靠名号吃好多年,不需要一次次的证明你自己。
希望现在还来得及,还能结实更多的朋友。有靠谱项目的(踩缝纫机的坚决不碰),联系我吧,一起共赢。
更多【软件逆向- lua脚本还原,靠它赚了一台nanopc-t6】相关视频教程:www.yxfzedu.com