饥荒-LUA脚本混淆整理
本帖最后由 lostmilkyway 于 2021-8-16 00:26 编辑所谓“混淆”,就是为了提高代码的阅读门槛,区别于平常为了共享开源而将代码写的“十分规矩”,这里反而要将代码写的能多难看就多难看,可读性极差,从而起到将代码“加密”的效果。
这里拿“饥荒”的MOD开发举例,因为它并不依赖于作者自己写的加密解密函数来混淆,而纯粹靠的是计算机底层编译,例如文字对我们人类来说是“可理解的”,我们能读懂它的含义,但是面对一串“十六进制”数字,我们往往摸不着头脑,但是对于计算机来说,一串字符和一串十六进制数字,最终都会被解释器解释为相同的01字串,所以我们就可以用人类难以理解而不影响计算机理解的十六进制数字来代替掉原码从而实现混淆。
此外,对于变量的命名,这仅仅只是针对于人类而言的,对于计算机来说将一个人物的血量定义为health或者定义为X0_AC1DA,二者是没有任何区别的。那么X2_FASSX1Z.X0_AC1DA相对于player.health来说,显然更能起到混淆作用。
接下来将“反混淆”一个示例来详细说明,首先使用正则表达式将代码进行格式化。
这里是格式化后的代码,里面未被混淆的变量名称全为预留关键字。将里面所有的十六进制数值转换成十进制,为了方便处理,用正则表达式将文本的斜杠去掉并加上换行符,然后用excel将十进制数字转换为十六进制。
最后将十六进制字串转换为字符串,然后将变量名简化即可。
这是反混淆的最终结果。
牛蛙牛蛙,进来学习学习
学习一下 感谢分享 额,我没怎么看懂 xuanmo 发表于 2021-8-15 22:30
额,我没怎么看懂
一个小把戏,其实意义不大 来学习学习,很有用 进来学一下 额,我没怎么看懂 稍微看懂了一点点,感谢分享 现在的东西越来越奇怪了