本术语表按拼音首字母顺序对术语进行排序。
A
APK/AAB 包加固(Android)
对 APK/AAB 包,整体进行安全保护,提供 APK/AAB 包防反编译保护、DEX 文件整体加壳保护、DEX 文件防篡改保护、防白盒攻击、壳加密算法保护、防调试保护、防内存篡改保护、防 Hook 保护、防模拟器保护、APK/AAB 包防重打包保护、防内存 dump 保护。
B
表达式置换(H5)
对 JavaScript 中的二元表达式等转换成等价函数调用形式,指的是 a + b 这类简单表达式,替换成等价的复杂的表达式,比如 a + (-b),增大破解者分析难度。
C
常量加密(iOS)
常量加密功能支持对各种类型的数组型常量进行编译期加密。其目的在于隐藏显示字符串如 log 信息以降低信息泄漏风险,及隐藏静态常量数组内容如 AES-SBOX 以提高通用算法静态特征识别难度。
常量字符串加密(H5)
将字符串阵列化集中放置、并可进行加密存储,使代码中不出现明文字符串,避免被全局搜索字符串的方式定位到入口点。
D
代码压缩(H5)
去除 JavaScript 代码中不必要的空格、换行等内容,或把一些可能公用的代码进行处理实现共享,最后输出的结果都压缩为几行内容,降低代码可读性。
调用图混淆(iOS)
调用图指函数间的交叉调用关系,是重要的程序宏观结构描述指标。与过程内针对控制流图的混淆技术相比,调用图混淆模块是一种模块级的、函数间引用关系混淆技术。调用图转化模块通过对源程序所有调用指令的转化处理,可以从宏观层面破坏源程序结构,消除源程序的模块化设计特征。
对象键名(对象域名)替换(H5)
将对象的属性名进行转换,隐藏代码之间的调用关系。
F
反格式化(H5)
强制将代码以单行形式显示,如果对代码进行格式化或者重命名,该段代码将无法执行。
分支伪造(iOS)
分支伪造模块是安全编译器内建的一个基于不透明谓词的控制流混淆方法。结合控制流可达性分析结果及随机不透明谓词构造器,分支伪造模块能以较低的成本(性能影响小,文件膨胀少)达到控制流改造的目的。
符号信息加密(iOS)
符号信息即编译后二进制文件保留的函数名、全局变量名等。符号信息加密,即根据指定规则对指定的、符合特征的函数名、全局变量名等进行加密处理。
H
花指令及坏指令插入(iOS)
花指令指的是可执行但又能干扰分析的一些指令,坏指令指的是不可执行的非法指令。花指令及坏指令插入模块用于对抗 IDA 等反汇编器、反编译器的静态指令流分析能力。基于控制流可达性分析结果,此模块会在程序中随机插入用于干扰分析的花指令和用于阻止分析的坏指令。
函数变量名混淆(H5)
将带有含意的变量名、方法名、常量名随机转换为无意义的类乱码字符串,降低代码可读性。
J
禁止控制台输出(H5)
禁止通过 console 输出日志。
K
控制流平坦化(iOS)
控制流平坦化是一种过程内控制流处理技术,能够打乱原有代码执行流程及函数调用关系,使代码逻辑变得混乱无序。旨在消除语义块间的前驱后继关系,提高算法理解成本。
安全编译器内建多种平坦化实现,在处理目标程序时可自动选择;同时安全编译器改进了多处细节处理方法,对基于符号执行技术的控制流分析方法也具备较强的对抗能力。
控制流平坦化(H5)
打乱原有代码执行流程及函数调用关系,使代码逻辑变得混乱无序。
L
类安全加固(Android)
对 Java 代码进行混淆,隐藏真实运行流程,防止 jadx-gui、jeb 工具的反编译,使加固后的代码难以被人工直接阅读。
X
虚假控制流(H5)
随机在代码中插入无用的僵尸代码、僵尸函数,进一步使代码混乱。
虚拟化保护(VMP)(H5)
虚拟化保护(VMP)将源码转换为虚拟化指令,提供强劲的源码保护,提升对抗静态、动态分析的能力。
Z
指令替换(iOS)
指令替换模块用于等价替换或展开原始代码中的简易二元运算,如四则运算、布尔运算等。替换后的计算过程与代码原意相似度较低且十分繁琐,违背开发人员直觉,难以抽象化理解。指令替换模块内建了数十种替换规则,在混淆过程中随机选用,保证了后端生成的机器指令的随机性和多样性。
指针加密(iOS)
指针加密模块用于消除代码段与数据段间的显式引用关系。