안드로이드 안티디버깅 기술과 우회 기법
Android/Tech
2019. 12. 8.
디버깅 안티디버깅 방법을 소개하기 전에 리눅스의 디버깅의 원리 부터 알고 넘어가도록 하자. 리눅스에서는 ptrace 라는 시스템 콜을 이용하여 어태치한 프로세스의 상태와 발생되는 시그널을 추적할 수 있으며 레지스터, 메모리를 읽거나 쓸 수 있다. 주로 개발자가 의도한 대로 정상적으로 작동하는지 흐름을 파악하거나 프로그램 내 버그를 찾는 용도등으로 사용된다. 리눅스 프로그래밍 시 자주 사용하던 디버깅 툴인 GDB 또한 ptrace 시스템 콜을 사용하여 개발되었다. 하지만 개발자만이 디버깅을 하는게 아닌 해커들 또한 악의적인 의도로 디버깅(일명 동적 분석)하는 경우도 존재 한다. 전체적인 동작 흐름을 분석하여 중요한 핵심 코드들을 찾고 발견한 코드들을 원래의 흐름과 다르게 동작하도록 변경하거나 데이터를 ..