忙了两天,终于把Angry Birds Seasons的脚本解密弄好了。以下是个简短的总结:
其实脚本加密的方法很简单,就是编译过的lua,然后再用AES加密,key我已经给出来了。比较蛋疼的是这个lua的反编译。首先,怒鸟确实使用的是lua 5.1,如果你用luadec解密,提示什么bad header。但如果使用的是luadisasm,却可以反编译出对应的lua汇编代码。看过luadec 2.0 for lua 5.1的源码之后发现,那坑爹的作者使用了unicode,所以文件头的信息是unicode格式的,而luac默认就是ansi的。所以就bad header了。解决这个问题之后,再luadec一下,提示bad constants。对比看过之后,发现Rovio使用的lua编译器是修改过的。所以,需要把luac和luadec都修改一下,luadec就能反编译大部分的脚本了。当然,这个时候最蛋疼的问题出现了,luadec居然他妈崩溃了……反正我是累了,改天自己弄一个。
总之,lua还是挺有意思的。