개요보안이 잘 된 안드로이드 앱은 Java 코드뿐만 아니라 C/C++ 언어로 작성된 네이티브 코드를 활용하여 루팅, 무결성, 디버깅과 같은 보안 위협을 탐지한다. 이러한 네이티브 코드로 작성된 파일은 라이브러리(.so) 형태로 제공되며 또한, ollvm이나 링킹과 같은 라이브러리 보호 매커니즘이 적용된 경우 분석이 어려워진다. 그 일례로 ollvm이 적용된 라이브러리는 코드 내에 존재하는 문자열이 모두 암호화되어 있어 평문 값이 노출되지 않는다. 따라서, 이는 분석 시 검사에 사용되는 문자열을 검색하는 방식으로 탐지 로직을 찾는게 어렵다는 뜻이다. 하지만, 이때 Frida 백트레이스를 활용한다면 어렵지 않게 보안 탐지 로직을 찾을 수 있다. 이번 포스팅에서는 Frida 백트레이스 사용 방법을 기술하고자 ..
개요 안드로이드에서 C/C++ 언어로 작성된 코드를 네이티브(Native) 코드라고 하며, 이러한 네이티브 코드는 ".so" 파일로 컴파일되어 라이브러리 형태로 제공된다. 특히나, 보안이 잘 된 안드로이드 앱을 진단하다 보면 Java 코드를 분석하는 상황보다 네이티브 코드로 작성된 라이브러리 파일을 분석하는 일이 더욱 빈번하다. 이번 포스팅에서는 네이티브 코드로 작성된 라이브러리(.so) 파일 분석 시 알아야 할 기초 지식에 관하여 기술하고자 한다. 라이브러리 로드 프로세스 [그림 1]의 도식도는 안드로이드 앱에서 라이브러리가 호출되어 로드되는 과정을 표현한 것으로 해당 프로세스를 통해 앱이 어떠한 함수를 사용하여 라이브러리를 불러와 Java로 작성된 코드와 C/C++ 로 작성된 네이티브 코드를 연결하여..