Today Mini Learned :

기록하는 습관 들이기

ACTIVITY/모각코 (2020 여름)

[모각코] 2회차 목표 및 기록 (200708)

얌챠 2020. 7. 8. 15:12
  • ollvm 설치 확인
  • ollvm을 통해 세 가지 옵션으로 난독화

 

  저번 시간에는 https://github.com/obfuscator-llvm/obfuscator에서 ollvm을 설치하는 작업으로 시간을 다 보냈다. 따라서 오늘은 ollvm을 통해 난독화 된 결과와 원본 코드를 비교해서 난독화가 되었음을 확인하며 제대로 설치가 되었는지 확인해 볼 것이다.

 

./clang -m64 ../cfiles/test01.c -o target.o (옵션)

상단의 명령어를 통해서 제공하는 여러 옵션을 테스트해보았다.

 

Control Flow Flattening (-mllvm -fla)

https://github.com/obfuscator-llvm/obfuscator/wiki/Control-Flow-Flattening

ollvm에서 제공하는 wiki를 참고해 보았는데 control flow를 가로로 복잡하게? 좀더 경우의 수를 늘리는 그런 난독화 방법인 것 같다. 실제로 원본 코드와 비교해 보았는데, jump문이 원래는 두개밖에 없었는데 완전 많아졌다..!!

기본적인 -fla옵션 외에도 split_num을 통해서 몇 번 난독화할 수 있는지도 설정해서 난독화할 수 있는 듯 하다

 

난독화하려는 원본 코드 test01.c
test01.c를 -o옵션으로 컴파일한 test01.o

 

-fla옵션을 통한 결과

 

Instructions Substitution (-mllvm -sub)

https://github.com/obfuscator-llvm/obfuscator/wiki/Instructions-Substitution

간단한 연산을 복잡하게 하는 옵션이다. 이 역시 sub_loop를 통해 여러 번 적용이 가능하다.

난독화하려는 원본 코드 test02.c
test02.c를 -o옵션으로 컴파일한 test02.o

 

-sub옵션을 통한 결과

그냥 a+b의 간단한 연산을 복잡하게 난독화하였다.

 

Bogus Control Flow (-mllvm -bcf)

https://github.com/obfuscator-llvm/obfuscator/wiki/Bogus-Control-Flow

이 역시 반복해서 적용하는 옵션을 제공하고 있다.

 

난독화하려는 원본 코드 test02.c
test02.c를 -o옵션으로 컴파일한 test02.o

 

-bcf옵션을 통한 결과