*注意*:千万别反编译了做坏事,虽然EA很烦人,但是铁皮是在努力做出好游戏!
*注意*:千万别反编译了做坏事,虽然EA很烦人,但是铁皮是在努力做出好游戏!
*注意*:千万别反编译了做坏事,虽然EA很烦人,但是铁皮是在努力做出好游戏!
-
写在前面:
之前铁皮编年史里简单提到过,除了最初的Flash他们用AS3脚本,后面几代KR无论是
Objective-C+cocos2d还是C#+Unity,铁皮都用的Lua脚本语言
所以本方法适用于PC Steam端的KR1~KR5!!!
*注意*:游戏本地.exe所在路径中最大的那个.exe其实是可以用7z解压缩的
-
吧里很多小朋友羡慕大神们(如:书生、胖胖、雪花、freegyti、咋不上天)可以制作出
富有趣味、更加平衡、解放限制的KR改版,但是大神们也是人,无法雨露均沾照顾到
所有人的个性化修改需求。这时候大家都希望自己动手,但是苦于打开编辑器,看到的
只有一堆乱码...说到这,我要先道两个歉:
1. 以前总觉得连个RC4都没有,怎么能算加密呢!倒是忽视了对于萌新来说,混淆其实
相当于加密;
2. 回复吧友时,把铁皮的“Junkworld”塔防新IP名字写成“Junk World”,非常不严谨,在
此郑重勘误。
-
我们再说回乱码的问题,大家打开.lua的时候,可能会遇到以下情况:
-
-
-
乍一看,两者好像没啥关系,但是当大学计算机入门ASCII码表的记忆涌现,你看~
0x1b是不是和ASCII的ESC退出键对上了
01和00也对上了SOH(Start of Heading)和NUL(null char)
4c和4a对应L和J,这不就齐活儿了嘛!
-
这时候就需要一点联想和经验了,既然是Lua脚本,那肯定符合它的编码规范要求吧。
根据英文字母表顺序...O、P、Q、R、S、T...我们知道,
如果是LuaQ,那就是Lua 5.1;有LuaR,那就是Lua 5.2;看到LuaS,那就是Lua 5.3
可是ESC后面是LJ啊!那又是个什么玩意儿?聪明的你肯定猜到了L是Lua
这个J也就不卖关子了,是JIT(Just in Time)即时编译
豪马~铁皮果然是爱OC的,LuaJIT可不就是个C语言的即时编译器嘛~
到了这里,我们也别再查啥大端小端、FFI、bytecode的知识了,也不需要知道
STRIPPED没有被置位,文件会多出chunkname字段等,直接反编译走起!
-
下载网盘里LJD文件夹里的ljd.exe,直接命令行或者Powershell里敲击:
“ljd xxxxx.lua”(你要反编译的文件和ljd.exe放到同级目录下)
较新的操作系统可能就是“.\ljd.exe .\xxxxx.lua”
*小贴士*:敲命令时可以Tab自动补全,比如你在ljd.exe所在路径的空白处按住Shift,
然后鼠标右键,选“终端打开”或者“在此打开Powershell”(翻译得大差不差吧)
接着键入“lj”或者“ljd”或者更多正确的字符后,按下Tab键,就会被补全为“.\ljd.exe”
后面的.lua文件名自动补全方法同理
-
比如:.\ljd.exe .\tower_ray.lua
生成的反编译好的同名tower_ray.lua脚本就在ljd.exe同级的output文件夹中
-
大家可以先去核心的balance.lua和game_templates.lua里探险,注意修改前备份!!!
还有翻译喜爱的zh-Hans.lua和zh-Hant.lua(s和t,谁是简体谁是繁体不用我多说了吧)
-
*注意*:千万别反编译了做坏事,虽然EA很烦人,但是铁皮是在努力做出好游戏!
*注意*:千万别反编译了做坏事,虽然EA很烦人,但是铁皮是在努力做出好游戏!
*注意*:千万别反编译了做坏事,虽然EA很烦人,但是铁皮是在努力做出好游戏!
*注意*:千万别反编译了做坏事,虽然EA很烦人,但是铁皮是在努力做出好游戏!
*注意*:千万别反编译了做坏事,虽然EA很烦人,但是铁皮是在努力做出好游戏!
-
写在前面:
之前铁皮编年史里简单提到过,除了最初的Flash他们用AS3脚本,后面几代KR无论是
Objective-C+cocos2d还是C#+Unity,铁皮都用的Lua脚本语言
所以本方法适用于PC Steam端的KR1~KR5!!!
*注意*:游戏本地.exe所在路径中最大的那个.exe其实是可以用7z解压缩的
-
吧里很多小朋友羡慕大神们(如:书生、胖胖、雪花、freegyti、咋不上天)可以制作出
富有趣味、更加平衡、解放限制的KR改版,但是大神们也是人,无法雨露均沾照顾到
所有人的个性化修改需求。这时候大家都希望自己动手,但是苦于打开编辑器,看到的
只有一堆乱码...说到这,我要先道两个歉:
1. 以前总觉得连个RC4都没有,怎么能算加密呢!倒是忽视了对于萌新来说,混淆其实
相当于加密;
2. 回复吧友时,把铁皮的“Junkworld”塔防新IP名字写成“Junk World”,非常不严谨,在
此郑重勘误。
-
我们再说回乱码的问题,大家打开.lua的时候,可能会遇到以下情况:
-
-
-
乍一看,两者好像没啥关系,但是当大学计算机入门ASCII码表的记忆涌现,你看~
0x1b是不是和ASCII的ESC退出键对上了
01和00也对上了SOH(Start of Heading)和NUL(null char)
4c和4a对应L和J,这不就齐活儿了嘛!
-
这时候就需要一点联想和经验了,既然是Lua脚本,那肯定符合它的编码规范要求吧。
根据英文字母表顺序...O、P、Q、R、S、T...我们知道,
如果是LuaQ,那就是Lua 5.1;有LuaR,那就是Lua 5.2;看到LuaS,那就是Lua 5.3
可是ESC后面是LJ啊!那又是个什么玩意儿?聪明的你肯定猜到了L是Lua
这个J也就不卖关子了,是JIT(Just in Time)即时编译
豪马~铁皮果然是爱OC的,LuaJIT可不就是个C语言的即时编译器嘛~
到了这里,我们也别再查啥大端小端、FFI、bytecode的知识了,也不需要知道
STRIPPED没有被置位,文件会多出chunkname字段等,直接反编译走起!
-
下载网盘里LJD文件夹里的ljd.exe,直接命令行或者Powershell里敲击:
“ljd xxxxx.lua”(你要反编译的文件和ljd.exe放到同级目录下)
较新的操作系统可能就是“.\ljd.exe .\xxxxx.lua”
*小贴士*:敲命令时可以Tab自动补全,比如你在ljd.exe所在路径的空白处按住Shift,
然后鼠标右键,选“终端打开”或者“在此打开Powershell”(翻译得大差不差吧)
接着键入“lj”或者“ljd”或者更多正确的字符后,按下Tab键,就会被补全为“.\ljd.exe”
后面的.lua文件名自动补全方法同理
-
比如:.\ljd.exe .\tower_ray.lua
生成的反编译好的同名tower_ray.lua脚本就在ljd.exe同级的output文件夹中
-
大家可以先去核心的balance.lua和game_templates.lua里探险,注意修改前备份!!!
还有翻译喜爱的zh-Hans.lua和zh-Hant.lua(s和t,谁是简体谁是繁体不用我多说了吧)
-
*注意*:千万别反编译了做坏事,虽然EA很烦人,但是铁皮是在努力做出好游戏!
*注意*:千万别反编译了做坏事,虽然EA很烦人,但是铁皮是在努力做出好游戏!
*注意*:千万别反编译了做坏事,虽然EA很烦人,但是铁皮是在努力做出好游戏!