Reversing Native Libraries
Last updated
Last updated
AWS 해킹 배우기 및 연습하기:HackTricks Training AWS Red Team Expert (ARTE) GCP 해킹 배우기 및 연습하기: HackTricks Training GCP Red Team Expert (GRTE)
모바일 보안에 대한 전문성을 심화하세요. 8kSec 아카데미를 통해 iOS 및 Android 보안을 마스터하고 인증을 받으세요:
자세한 정보는 다음을 확인하세요: https://maddiestone.github.io/AndroidAppRE/reversing_native_libs.html
Android 앱은 성능이 중요한 작업을 위해 일반적으로 C 또는 C++로 작성된 네이티브 라이브러리를 사용할 수 있습니다. 악성코드 제작자도 이러한 라이브러리를 사용하며, DEX 바이트코드보다 리버스 엔지니어링이 더 어렵습니다. 이 섹션은 어셈블리 언어를 가르치는 대신 Android에 맞춘 리버스 엔지니어링 기술을 강조합니다. 호환성을 위해 ARM 및 x86 버전의 라이브러리가 제공됩니다.
Android 앱의 네이티브 라이브러리:
성능 집약적인 작업에 사용됩니다.
C 또는 C++로 작성되어 리버스 엔지니어링이 어렵습니다.
Linux 바이너리와 유사한 .so
(공유 객체) 형식으로 발견됩니다.
악성코드 제작자는 분석을 어렵게 만들기 위해 네이티브 코드를 선호합니다.
Java 네이티브 인터페이스 (JNI) 및 Android NDK:
JNI는 Java 메서드를 네이티브 코드로 구현할 수 있게 합니다.
NDK는 네이티브 코드를 작성하기 위한 Android 전용 도구 세트입니다.
JNI와 NDK는 Java (또는 Kotlin) 코드를 네이티브 라이브러리와 연결합니다.
라이브러리 로딩 및 실행:
라이브러리는 System.loadLibrary
또는 System.load
를 사용하여 메모리에 로드됩니다.
라이브러리 로딩 시 JNI_OnLoad가 실행됩니다.
Java에서 선언된 네이티브 메서드는 네이티브 함수에 연결되어 실행을 가능하게 합니다.
Java 메서드를 네이티브 함수에 연결하기:
동적 링크: 네이티브 라이브러리의 함수 이름이 특정 패턴과 일치하여 자동 링크가 가능합니다.
정적 링크: RegisterNatives
를 사용하여 링크하며, 함수 이름 및 구조에 유연성을 제공합니다.
리버스 엔지니어링 도구 및 기술:
Ghidra 및 IDA Pro와 같은 도구가 네이티브 라이브러리 분석에 도움을 줍니다.
JNIEnv
는 JNI 함수 및 상호작용을 이해하는 데 중요합니다.
라이브러리 로딩, 메서드 링크 및 네이티브 함수 식별을 연습할 수 있는 연습문제가 제공됩니다.
ARM 어셈블리 배우기:
기본 아키텍처에 대한 깊은 이해를 위해 권장됩니다.
Azeria Labs의 ARM Assembly Basics를 추천합니다.
JNI 및 NDK 문서:
네이티브 라이브러리 디버깅:
모바일 보안에 대한 전문성을 심화하세요. 8kSec 아카데미를 통해 iOS 및 Android 보안을 마스터하고 인증을 받으세요:
AWS 해킹 배우기 및 연습하기:HackTricks Training AWS Red Team Expert (ARTE) GCP 해킹 배우기 및 연습하기: HackTricks Training GCP Red Team Expert (GRTE)