안드로이드 패키지(APK) 파일에서 소스 코드와 다양한 리소스를 추출하는 행위를 리버스 엔지니어링의 대표적인 예라고 할 수 있습니다. Apktool, dex2jar, jd-gui 및 JAD와 같이 APK 파일을 디컴파일하는데 도움이 되는 다양한 도구가 있습니다. 이러한 도구들로 인해 안드로이드 모바일 애플리케이션을 해킹하기가 매우 쉬워졌습니다. 해커는 다양한 검증 프로세스를 우회하여 앱내 광고를 비활성화할 수 있습니다. 일부는 더 나은 앱을 만들거나 재생산하기 위해 애플리케이션의 작동 및 특수 기능을 찾기 위해 앱을 해킹하고자 할 수 있습니다. 따라서 모바일 앱이 리버스 엔지니어링되지 않도록 최고 수준의 보안을 유지하는 것이 중요합니다.
Objective-C나 Java와 같은 언어의 컴파일러는 클래스 인터페이스 정의와 바이너리내 클래스간의 상호 관계를 포함합니다. 이러한 정보는 공격자가 앱을 공격할 때 가장 먼저 찾는 것 중 하나입니다. Objective-C 런타임은 애플리케이션이 셀렉터에서 임플리멘테이션으로 매핑하도록 수정합니다. 공격자는 이러한 특성을 활용하여 시스템 라이브러리 인터페이스를 모니터링하고 복호화 함수에 대한 호출을 가로 챌 수 있습니다. 애플리케이션은 적절한 키를 이러한 함수의 매개 변수로 전달할 것이고, 공격자는 키를 성공적으로 탈취할 것입니다. 따라서 런타임시 앱 스스로 방어할 수 있도록 로직을 계층화하고 적절하게 구현해야 합니다. 이를 통해서 루팅되고나 탈옥된 모바일 디바이스에서의 공격도 탄력적으로 방어할 수 있습니다.