Skip to content
CCint3 edited this page Aug 29, 2019 · 3 revisions

常见的OLLVM混淆推导

ADD

  1. (x ^ y) + 2 * (x & y) 可转化为 x + y

    • 推导1:设y != 0 且 x & y = y

      (x ^ y) 转化为 (x - y)

      2 * (x & y) 转化为 2y

      (x - y) + 2y 转化为 x + y

    • 推导2:设y = 0

      (x ^ y) 转化为 (x + y)

      2 * (x & y) 转化为 0

      (x + y) + 0 转化为 x + y

  2. 2 * (x | y) - (x ^ y) 可转化为 x + y

    • 推导1:设y = 1 且 x & y = 1,得2 * (x | 1) - (x ^ 1)

      表达式1:2 * (x | 1) 转化为 2x

      表达式2:(x ^ 1) 转化为 (x - 1)

      结果:2x - (x - 1) 转化为 2x - x + 1 转化为 x + 1

    • 推导2:设y = 0,得2 * (x | 0) - (x ^ 0)

      表达式1:2 * (x | y) 转化为 2x

      表达式2:(x ^ y) 转化为 x

      结果:2x - x 转化为 x

  3. (x | y) + ((x ^ ~y) & x) 可转化为 x + y

XOR

  1. ~x & y | x & ~y 可转化为 x ^ y

Focus Make Things

Clone this wiki locally