Java|JS加密技术:平展控制流

Java|JS加密技术:平展控制流

文章图片

Java|JS加密技术:平展控制流

JS代码混淆加密时 , 常用到“平展控制流” , 英文称为:control flow flattening , 即:控制流品平坦化 。
这倒底是什么呢?
概念式的介绍并不直观 , 本文通过示例 , 简单直白的说明倒底什么是“平展控制流” 。
这里使用JShaman轻量版加密平台进行演示 ,
为演示的直观 , 例程仅使用3行console语句:

配置中 , 只选中“平展控制流” , 其它选项全部取消 , 以便仅使此功能生效:

点击加密 , 即可生成经过“平展”的代码 , 如下:

结合原始代码对比可知 , “平展控制流”将函数中的3行console代码放入了switch的3个case分枝中进行执行 , 并进行了乱序 。
也就是将函数中的代码打乱顺序并放入case分枝 , 以此达到“排列整齐” , 但确“顺序混乱”的效果 , 以实现保护JS代码 , 使它人无法正常理解函数功能的目的 。
【Java|JS加密技术:平展控制流】这便是JS代码加密技术中的“平展控制流” 。