混淆技术研究-OLLVM混淆-指令替换(SUB)

简介

指令替换(Instruction Substitution)是一种代码混淆技术,用于将程序中的原始指令替换为等效但更难理解和还原的指令序列。通过指令替换,可以增加程序的复杂性和抵抗逆向工程的能力。
指令替换可以采用不同的方式进行,下面是一些常见的替换方式:

  1. 常量展开(Constant Unfold):将原始指令中的常量操作替换为等效的指令序列,增加了代码的复杂性和可读性。例如,将乘法操作替换为逐位移位和加法操作:

    • 原始指令:a = b * 5
    • 替换指令:a = (b << 2) + b
  2. 算术替换(Arithmetic Substitution):将原始指令中的算术操作替换为等效的其他算术操作,使得代码更难理解。例如,在加法和减法之间进行替换:

    • 原始指令:a = b + c
    • 替换指令:a = b - (-c)
  3. 逻辑替换(Logical Substitution):将原始指令中的逻辑操作替换为其他等效的逻辑操作,增加代码的混淆性。例如,将逻辑与替换为逻辑或:

    • 原始指令:if (a && b)
    • 替换指令:if (a || b)

原理

你可能感兴趣的:(混淆技术研究,ollvm反混淆,指令替换,Android逆向,反混淆)