LLVM IR은 다음의 명령어로 각각 .ll(어셈 언어 형식), .bc(비트코드 형식)으로 저장 가능함
clang -S -emit-llvm test.c
clang -c -emit-llvm test.c
다음과 같이 .ll 파일과 .bc파일이 생성되는 것을 볼 수 있음
.ll 파일은 다음과 같은 구조
오늘부터 모각코 형식으로 시간을 정해서 팀원들과 같이 공부하기로 했다! 이번 주의 목표는… 패스 만드는 법 다시 요약정리 해 두기 ModulePass 다뤄보기, runModule함수로 뭔가 해보고 제대로 실행까지 원래 pass에서 module? 다루는 법을 주로 하려고 했는데 공부하는 김에 패스 만드는법도 같이 정리해두면 나중에 써먹기 ...
오늘의 목표 BasicBlock 관련해서 이름 출력해보기 ~(task list가 있다는걸 알고 사용해봤다ㅋㅋ)~ 1. Basicblock 관련 출력해보기 Basicblock의 단위나 나눠지는 구분? 같은 게 직접 출력해봐야 이해가 될 것 같아서 간단하게 이름이랑 몇 가지 출력할만한 것들을 출력해보기로 했다. 다음과 같이 test03...
이번 주의 목표 Control Flow 조작하여 난독화해보기 이번 주에는 LLVM을 이용한 난독화를 해 보기로! 그 중에서도 Obfuscator-LLVM의 BogusControlFlow와 같이 “코드의 control flow를 조작하는 난독화”를 시도해 보았다. 우선 난독화에 쓸 간단한 입력 controlTest.c를 만들었다 1 2...
7 - 프로그램의 난독화 옵션 정리
LLVM - LLVM Pass 만들기