[Trykle MaxScript 混淆器设计] 抽离常量的注意事项
抽离常量是我给取的名字
实际的描述应该是:给内置的大部分函数起个别名
操作后长这样
showMsg = messagebox
showMsg "trykle"
或者
fe230e9 = "messagebox"
(execute fe230e9) "trykle"
或者在进行更绕一点的变形,不管绕多复杂,它们的强度都是1
在分析器中,只需要识别到messagebox
这个常量并将其抽取替换即可
想象很简单
但实际
目标代码可能带着那么一点点“歧义”
这里面的“常量”均不可替换
global messagebox, spline, trykleTestVar = 123
(
messagebox = 1
true = false
if true == false then
(
local print = #(1, 2, true)
for box in print do messagebox = box
)
)
如果直接按单词替换,第一句代码就会语法错误
global (execute showMsg) ...
那么需要识别,目标标识符在当前作用域是否被定义为变量,
如果是变量就不进行抽离
如果希望对bool值进行单独处理,也需要做相同的判断
如你所见,true = false
也是一种混淆