【原创】DOTA传奇中Lua防护部分破解

一直有人问这个,统一在这里发一下,原理很简单,详情看下文:

首先赞一下DOTA传奇的攻城尸,还是很有“气节”的,知道如何保护自己,不像有些,被拔了衣服就干。。。(哈哈,开个玩笑)

kanxue上有篇帖子讨论过*.abc文件的解密,这里不再赘述。
如果你只是想拿到lua源码,这里告诉你一个捷径:hook luaL_laodbuffer。

得到*.abc的原文后,其实是luac编译后的bin文件。
这个时候你用luadec神马的反编译是无法得到源代码的,其结果也是直接报错。

这就是DOTA传奇在Lua层做的保护。
破掉保护也比较容易,入手点就从luaL_loadbuffer开始,发现是bin文件就直接走undump,内部是LoadFunction等,Load期间对opcode进行解析。
DOTA传奇在opcode解析的时候做了一个映射,映射表如下:


所以推断在luac的时候,也有一份映射表。

拿着表重新编译一份luadec,就可以得到DOTA传奇LUA部分的完整源代码。

写到这应该非常清楚了,以上仅LZ个人观点,如有不对请大家斧正。


共享一下lua代码?

楼主厉害,赞一个。