本文思路源自 渔滒 的某里AST反混淆代码,本人仅在此做个归纳总结,并感谢 渔滒 的思路。因法律风险,不提供源码,只有思路,所以请不要问我要源码。
最新版的某里已经到了140前缀(几个月前),并大量的充斥着三目表达式,逗号表达式,如果要还原,从代码难看程度就已经把人吓退了。
其实不然,仔细分析,稍微有点AST的基础,就能将三目表达式还原成 if 语句,if 语句特别的有规律,又可以还原成 switch 语句。由于过于简单,不是此文的重点,再此不表。
第一步:
三目表达式 => if 语句 => switch 语句
经过上面的还原后,会得到一个 三重的 switch 嵌套代码(如下图),特别的长,多达36000行,看起来还是很迷糊。那怎么搞?
我们要还原代码,如果能将三重的switch 变成一重的switch代码,那不就清晰多了?
是否可行呢?
答案是可行的,我们来看最后的那一重switch&