일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- LLVM Obfuscator
- on stack replacement
- so inject
- Android
- custom packer
- tracerpid
- 안티디버깅
- 난독화
- linux debugging
- LLVM 난독화
- v8 tracing
- on-stack replacement
- apm
- pthread
- Injection
- thread local storage
- TLS
- Linux custom packer
- tracing
- anti debugging
- linux thread
- android inject
- Linux packer
- pinpoint
- initial-exec
- LLVM
- uftrace
- OSR
- v8 optimizing
- Obfuscator
- Today
- Total
목록전체 글 (142)
Why should I know this?
안드로이드 혹은 리눅스에서 디버깅을 탐지하는 방법 중에 TracerPid를 읽는 방법이 있는데, 이것은 커널 코드를 수정하여 우회할 수 있다.(참고 : https://die4taoam.tistory.com/15) 다른 방법으로 Shared Object를 injection하여 (참고 : https://die4taoam.tistory.com/11) API를 hooking하는 방법도 있다. Android에서 안티디버깅을 위한 쉬운 트릭으로 현재 프로세스에서 fork를 한 뒤에 프로세스의 상태 변화를 모니터링 하는 방법과 그것에 추가로 ptrace의 PTRACE_TRACEME 를 사용하여 디버거의 attach를 미연에 방지하는 방법이 있다. 이 두 방식 모두 굉장히 쉽게 우회가 가능하다. 방법은 간단한데, -...
TracerPid는 /proc를 통해 조회 가능한 정보로, gdb 등을 통해 해당 프로세스에 attach하고 있는 process의 pid를 기록하고 있다. kernel을 빌드할 때 아래처럼 일부 코드를 수정하면, tracerpid를 읽어 anti-debugging하려는 시도를 차단할 수 있다. ========================================출처 - https://gist.github.com/doughgle/e3a8c350dbf2370e69212f8b91fa4c88#file-gistfile1-txt-L17========================================commit acc0182c3d3869802bc20c8bf4e04c3464936bcc Author: Doug..
Linux Custom Packer 분석 libandroid.so 를 분석하기 위해 IDA에서 열려고 하면, out of memory를 에러 메시지 알림창을 띄우고 열지 못합니다. 이유는 libandroid.so의 ELF Header에 기록된 메모리 상의 크기보다 파일 크기가 작기 때문에, 부족한 부분을 찾지 못해 발생시키는 에러입니다. 마찬가지의 이유로 readelf와 objdump 모두 libandroid.so를 정상적으로 분석하지 못합니다. readelf 등의 도구를 통해 section 정보와 segment 정보를 확인하고, 실제 파일 사이즈를 확인해보면 크기 차이가 크다는 것을 알 수 있습니다. 이런 형식의 SO파일이 메모리에 로드되면 segment 정보에 따라 메모리는 할당되지만, 실제 파일에는..