일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- uftrace
- OSR
- Android
- initial-exec
- so inject
- TLS
- pinpoint
- apm
- Injection
- 안티디버깅
- on stack replacement
- linux thread
- v8 tracing
- Obfuscator
- Linux custom packer
- anti debugging
- pthread
- thread local storage
- Linux packer
- LLVM 난독화
- android inject
- custom packer
- tracerpid
- 난독화
- linux debugging
- v8 optimizing
- LLVM Obfuscator
- LLVM
- tracing
- on-stack replacement
- Today
- Total
목록LLVM Obfuscator (2)
Why should I know this?
본문 작성에 앞서 해당 난독화 기법의 모티브를 소개합니다. engineering.linecorp.com/ko/blog/code-obfuscation-compiler-tool-ork-2/ 오크(ORK) – 난독화 컴파일러 도구 2편 - LINE ENGINEERING 안녕하세요. LINE에서 클라이언트 보호 솔루션인 AIR ARMOR 개발을 담당하고 있는 정상민입니다. 지난 1편에선 예제 소스 코드의 컴파일 과정을 살펴보며 난독화가 실행되는 단계를 확인했습니다. engineering.linecorp.com Line에서 자체 개발 중인 난독화 기법 중에 Control Flow Graph Flattening 이라고 소개된 기법이 있습니다. 말하자면, 뭐 이것은 Line에서도 쓰는 기법이다! 라고 호가호위 해보려..
난독화 기법을 조금이라도 더 쉽게 개발하는 방법은 다음과 같다. - C로 짠 로직을 통해 IR을 뽑아내기 - IR을 기반으로 LLVM OPT 패스 만들기 먼저 순수 C로 예제코드를 만들고, C에서 목적한 난독화 기법을 구현해본다. 이번에 구현하고자 하는 난독화는 CALL 을 난독화 하는 것이며, C 로 구현된 코드는 아래와 같다. #include void foo(); void (*t)() = foo; void (*tt)() = (void (*)())((long)&foo + 1); long test = ((long)&foo) + 65536; long test2 = (long)&foo + 1; void foo() { puts("TEST\n"); } int main() { ((int (*)()) (test -..