看雪论坛
发新帖

[求助]某一手游luac的解密,还原opcode的问题。

qq枫三少 2017-9-7 16:55 573
现在很多手游在dump下来都是luac的文件。用luadec.exe都是直接报错的。
网上查了很多资料,说是编译的时候作者改过了opcode顺序,要跟踪还原回来opcode,然后重新编译luadec才能反编译出源码。
那么问题来了。
怎么还原回opcode呢。
查看了lua的源码,lua5.1一共有38条lua的虚拟机的指令。
用IDA怎么跟踪呢?
菜鸟我折腾了好几天,求大神们帮帮忙。
以下是我分析出来的东西。跟到了一个opcode影射表。可是看半天不知道这表有什么用呢



请问地址:76AF7346里面的数据是不是opmodes呢。刚好是38条。如果是的话,怎么还原opcode的顺序呢 先谢谢各位了

文件我放到附件里面,谢谢各位。



上传的附件:
本主题帖已收到 0 次赞赏,累计¥0.00
最新回复 (10)
gtict 2017-9-7 17:12
2
等大神指导方法,,现在我只是找个没有opcode乱序的游戏再对比乱序的找到对应的映射关系
qq枫三少 2017-9-7 17:15
3
gtict 等大神指导方法,,现在我只是找个没有opcode乱序的游戏再对比乱序的找到对应的映射关系
请问怎么找呢,能说一下思路吗
我有层壳 2017-9-7 17:18
4
http://bbs.pediy.com/thread-216969.htm
看下这个。
qq枫三少 2017-9-7 17:31
5
谢谢,看过了,还是不会呢
1
littleNA 2017-9-9 13:31
6
首先,你要明白原生lua中所有opcode是什么意思,代码是怎么实现的。当你了解了opcode的实现时,再看梦幻opcode的实现代码(ida反编译so,定位到opcode的代码),然后分析并推倒出原生lua对应的opcode。当然有一点点小技巧,就是如果opmode对应,那么opcode也对应,具体看我写的那篇文章。以上,希望能够帮到你。
3
malokch 2017-9-9 13:53
7
还原过某精灵的lua  opcode,扔ida里找最长的switch就可以了。入口的话,hook  memcpy找到加载的地方,然后一路撸。
qq枫三少 2017-9-9 17:07
8
littleNA 首先,你要明白原生lua中所有opcode是什么意思,代码是怎么实现的。当你了解了opcode的实现时,再看梦幻opcode的实现代码(ida反编译so,定位到opcode的代码),然后分析并推倒出原 ...
谢谢,感谢你的回复,我分析的这个so  按你精华贴的方法找到opmodes  的地方,对比了opmodes的数据,和没修改过的.so是一样的。所以很迷惘。可以帮我看一下吗?.so我上传到附件里面。
1
littleNA 2017-9-10 14:19
9
 我那个方法不一定具有普遍的通用性,每个游戏都可能有不同的修改方法,原方法只能作为参考和学习的意义。
 下面简单看了下你给的so文件,给你分析下最简单的 add、sub、mul、div等opcode。

下面是add和sub, 特征是add和sub两个函数

下面是mod,特征是div、floor、mul、sub等函数


 其他的opcode得你自己去看源码,找特征或者找结构。

 从上面的图片可以看出,该游戏很有可能是选择2个opcode对应1个原opcode。(修改lua反编译工具luadec时需要注意)

 以上,希望对你有帮助。
qq枫三少 2017-9-11 12:10
10
感谢,明白了。
1
koflfy 2天前
11
littleNA  我那个方法不一定具有普遍的通用性,每个游戏都可能有不同的修改方法,原方法只能作为参考和学习的意义。 下面简单看了下你给的so文件,给你分析下最简单的 add、su ...
他这个so我看了一下,有点奇怪,OpCode和luaP_opmodes都能找到,而且顺序正常的,没改过,但是在这个so的switch处理里却像是改动过,请问这是什么回事?
返回



©2000-2017 看雪学院 | Based on Xiuno BBS | 微信公众号:ikanxue
Time: 0.012, SQL: 10 / 京ICP备10040895号-17