0基础学习ollvm反混淆之-0x03-虚假控制流(BCF)

学习使用ida 去除不透明谓词

  • test.c
#include <stdio.h>
int main() {
  char input[100];
  scanf("%s", input);
  if (!strcmp(input, "1")) {
    printf("This is '1' branch");
  } else if (!strcmp(input, "2")) {
    printf("This is '2' branch");
  } else {
    printf("This is 'else' branch");
  }
  return 0;
}

编译


~/yourpath/myninjabuild/bin/clang-15 test.c -mllvm -enable-bcfobf -o ./bogus_CFG -isysroot `xcrun --show-sdk-path` -target arm64-apple-darwin -arch arm64

ida 伪代码

先 将全局变量赋值并将 segment 设为只读去除不透明谓词

去除不透明谓词后重新f5

参考链接

1 个赞