[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 也是一种混淆

posted @   trykle  阅读(125)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示