5.2 KiB
네이티브 라이브러리 역공학
htARTE (HackTricks AWS Red Team Expert)를 통해 AWS 해킹을 처음부터 전문가까지 배워보세요!
HackTricks를 지원하는 다른 방법:
- 회사를 HackTricks에서 광고하거나 HackTricks를 PDF로 다운로드하려면 SUBSCRIPTION PLANS를 확인하세요!
- 공식 PEASS & HackTricks 스웨그를 얻으세요.
- 독점적인 NFTs인 The PEASS Family를 발견하세요.
- 💬 Discord 그룹 또는 텔레그램 그룹에 참여하거나 Twitter 🐦 @carlospolopm을 팔로우하세요.
- HackTricks와 HackTricks Cloud github 저장소에 PR을 제출하여 해킹 트릭을 공유하세요.
자세한 내용은 여기를 참조하세요: https://maddiestone.github.io/AndroidAppRE/reversing_native_libs.html
안드로이드 앱은 성능에 중점을 둔 작업을 위해 일반적으로 C 또는 C++로 작성된 네이티브 라이브러리를 사용할 수 있습니다. 악성 소프트웨어 제작자들도 이러한 라이브러리를 사용하며, DEX 바이트 코드보다 역공학이 어렵기 때문입니다. 이 섹션은 어셈블리 언어를 가르치는 것보다 안드로이드에 특화된 역공학 기술에 중점을 둡니다. 호환성을 위해 ARM 및 x86 버전의 라이브러리가 제공됩니다.
주요 포인트:
-
안드로이드 앱의 네이티브 라이브러리:
-
성능 중심 작업에 사용됩니다.
-
C 또는 C++로 작성되어 역공학이 어렵습니다.
-
Linux 이진 파일과 유사한
.so
(공유 객체) 형식으로 제공됩니다. -
악성 소프트웨어 제작자들은 분석을 어렵게 하기 위해 네이티브 코드를 선호합니다.
-
Java Native Interface (JNI) 및 Android NDK:
-
JNI는 자바 메서드를 네이티브 코드로 구현할 수 있게 합니다.
-
NDK는 안드로이드에 특화된 네이티브 코드 작성을 위한 도구 세트입니다.
-
JNI 및 NDK는 자바 (또는 코틀린) 코드와 네이티브 라이브러리를 연결합니다.
-
라이브러리 로딩 및 실행:
-
System.loadLibrary
또는System.load
를 사용하여 라이브러리를 메모리에 로드합니다. -
라이브러리 로딩 시 JNI_OnLoad이 실행됩니다.
-
자바로 선언된 네이티브 메서드는 네이티브 함수에 링크되어 실행됩니다.
-
자바 메서드를 네이티브 함수에 연결:
-
동적 링킹: 네이티브 라이브러리의 함수 이름은 특정 패턴과 일치하여 자동 링킹이 가능합니다.
-
정적 링킹: 링킹을 위해
RegisterNatives
를 사용하며, 함수 이름과 구조에 유연성을 제공합니다. -
역공학 도구 및 기술:
-
Ghidra 및 IDA Pro와 같은 도구를 사용하여 네이티브 라이브러리를 분석하는 데 도움이 됩니다.
-
JNIEnv
은 JNI 함수와 상호작용을 이해하는 데 중요합니다. -
라이브러리 로딩, 메서드 링킹 및 네이티브 함수 식별을 연습할 수 있는 예제가 제공됩니다.
자료:
-
ARM 어셈블리 학습:
-
기본 아키텍처에 대한 깊은 이해를 위해 권장됩니다.
-
Azeria Labs의 ARM 어셈블리 기초를 추천합니다.
-
JNI 및 NDK 문서:
-
네이티브 라이브러리 디버깅:
htARTE (HackTricks AWS Red Team Expert)를 통해 AWS 해킹을 처음부터 전문가까지 배워보세요!
HackTricks를 지원하는 다른 방법:
- 회사를 HackTricks에서 광고하거나 HackTricks를 PDF로 다운로드하려면 SUBSCRIPTION PLANS를 확인하세요!
- 공식 PEASS & HackTricks 스웨그를 얻으세요.
- 독점적인 NFTs인 The PEASS Family를 발견하세요.
- 💬 Discord 그룹 또는 텔레그램 그룹에 참여하거나 Twitter 🐦 @carlospolopm을 팔로우하세요.
- HackTricks와 HackTricks Cloud github 저장소에 PR을 제출하여 해킹 트릭을 공유하세요.