llvm obfuscator관련하여 보아야 할것같은데요..
관련 소스를 : https://github.com/obfuscator-llvm/obfuscator/tree/llvm-3.6.1 에서 받았는데요.
어디서부터 봐야할지 감이 잡히지 않네요 ㅎㅎ
저희 컴파일러 스터디중에서 먼저보신 선배님들 조언좀 부탁드립니다..
==========================================================
llvm에서 obfuscator관련 부분은 찾았습니다...ㅎ
옛날 버전을 확인하면 되더라고요..
llvm에서 lib/Transforms 에서 동작하는 거였습니다.
이 단계가 정확히 컴파일에서 어느단계인가요?
Bogus Control flow만들기 연산 바꾸기 등등이 존재합니다.
/lib/Transforms/IPO/PassManagerBuilder.cpp 에서 호출하여 줍니다.
인터넷좀 찾아보니 PassManagerBuilder.cpp에서 llvm관련 모듈만들어서 너어준다고도 되어있는데...
아 그리고 최종적으로 궁금한 사항이 있는데요..ㅎㅎ
llvm 을 이용한 난독화는 compile time에 basic block단위로 수행을 하더라고요.
그런데 shared library(elf format, so file)에서 basic block을 뽑아내서 난독화를 수행한후 elf format으로 다시 만들어 주는게
가능할까요?
아니면 이미 생성된 binary에 대한 난독화는 어떻게 할까요?
댓글 4
.
일단 저 github에서 보는건 아마도 llvm 공식 사이트에서 받을 수 있는 소스와 동일 하거나 더 옛날 버전인 것 같습니다.
차라리 llvm 공식 사이트에서 제공하는 최신버전을 사용하는게 좋을 것 같습니다.
일단 정확히 llvm의 어떤 부분을 보신다는건지 이해가 가질 않네요.