Skip to content
KitploitKITPLOIT
도구블로그
Log in
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
NinjaDroid — 안드로이드 APK 패키지에 대한 닌자 리버스 엔지니어링 | Kitploit
도구/GitHubGitHub/rovellipaolo/ninjadroid
Android SecurityStatic AnalysisReverse EngineeringMobile SecurityBinary Analysis
GitHubrovellipaolo/ninjadroid

NinjaDroid

안드로이드 APK 패키지에 대한 닌자 리버스 엔지니어링

저장소 보기
28748234개월 전Kitploit 검토 완료

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

NinjaDroid

NinjaDroid는 Android APK 패키지를 리버스 엔지니어링하는 간단한 도구입니다.

게시 위치: https://snapcraft.io/ninjadroid```shell $ snap install ninjadroid --channel=beta

[![Build Status: GitHub Actions](https://github.com/rovellipaolo/NinjaDroid/actions/workflows/ci.yml/badge.svg)](https://github.com/rovellipaolo/NinjaDroid/actions)
[![Test Coverage: Coveralls](https://coveralls.io/repos/github/rovellipaolo/NinjaDroid/badge.svg)](https://coveralls.io/github/rovellipaolo/NinjaDroid)
[![License: GPL v3](https://img.shields.io/badge/License-GPLv3-blue.svg)](https://www.gnu.org/licenses/gpl-3.0)

[![Get it from the Snap Store](https://snapcraft.io/static/images/badges/en/snap-store-black.svg)](https://snapcraft.io/ninjadroid)

![NinjaDroid](https://assets.kitploit.com/production/public/readmes/4568/71f6e3768aa2e887064c58d1d0355577f24435dfe238892a763269d312e5057d.gif "NinjaDroid 화면 녹화")



## 개요

NinjaDroid는 [AXMLParser](https://github.com/appknox/pyaxmlparser)와 `aapt`, `keytool`, `string` 등을 기반으로 한 일련의 Python 스크립트를 함께 사용하여 주어진 APK 패키지에서 다양한 정보를 추출합니다. 예를 들면:

- APK 파일 목록: 파일 이름, 크기, MD5, SHA-1, SHA-256 및 SHA-512
- `AndroidManifest.xml` 정보: 앱 이름, 패키지 이름, 버전, SDK, 권한, 활동, 서비스, 브로드캐스트 리시버, ...
- `CERT.RSA/DSA` 디지털 인증서 정보: 일련번호, 유효 기간, 지문, 발급자 및 소유자
- `classes.dex` 파일에 하드코딩된 URL, 셸 명령 및 기타 일반 문자열 목록

또한 NinjaDroid는 [apktool](https://github.com/iBotPeaches/Apktool)과 [dex2jar](https://github.com/pxb1988/dex2jar)를 사용하여 다음을 추출하고 저장합니다:

- 추출된 모든 APK 정보가 포함된 JSON 보고서 파일
- `AndroidManifest.xml` 파일 (`apktool` 덕분에)
- `CERT.RSA/DSA` 디지털 인증서 파일
- `classes.dex` 파일
- 변환된 _.jar_ 파일 (`dex2jar` 덕분에)
- 디스어셈블된 smali 파일 (`apktool` 덕분에)
- `assets/` 및 `res/` 폴더와 그 내용 (`apktool` 덕분에)



## 빌드

첫 번째 단계는 NinjaDroid 저장소를 클론하거나 소스 코드를 다운로드하는 것입니다.```shell
$ git clone https://github.com/rovellipaolo/NinjaDroid
$ cd NinjaDroid

NinjaDroid는 여러 가지 방식으로 실행할 수 있습니다: 로컬 환경에서 네이티브로, Docker, Flatpak (실험적), Snap (실험적)을 통해서도 가능합니다.

네이티브

로컬 머신에서 NinjaDroid를 실행하려면 Python 3.5 이상, Java 8 이상, 그리고 binutils를 설치해야 합니다.

선택적으로, Android SDK가 로컬에 설치되어 있다면 포함된 aapt 대신 SDK 버전의 aapt를 사용할 수 있습니다. 이렇게 하려면 ninjadroid/aapt/Aapt.py에서 aapt 경로를 변경해야 합니다 (예: __AAPT_EXEC_PATH = "ninjadroid/aapt/aapt").

Linux

다음 명령어를 실행하면 모든 Python 종속성이 설치되고 (aapt, apktool, dex2jar에 실행 권한이 부여됨) ninjadroid 심볼릭 링크가 /usr/local/bin/에 추가됩니다.```shell $ make build-linux $ make install $ ninjadroid --help

#### MacOS
다음 명령어를 실행하기만 하면 필요한 모든 Python 종속성이 설치되고 ( `aapt`, `apktool`, `dex2jar` 에 실행 권한이 부여되었는지 확인) `/usr/local/bin/`에 `ninjadroid` 심볼릭 링크가 추가됩니다.```shell
$ make build-macos
$ make install
$ ninjadroid --help

Docker

NinjaDroid를 Docker에서 실행하려면 Docker가 설치되어 있어야 합니다. Docker 이미지를 빌드하려면 다음 명령어를 실행하세요:```shell $ make build-docker $ docker run --name ninjadroid ninjadroid:latest ninjadroid --help

대상 APK 패키지가 포함된 디렉토리를 Docker 이미지에 바인드해야 합니다:```shell
$ mkdir apks
$ cp /path/to/your/package.apk apks/package.apk
$ docker run --name ninjadroid -it --rm -v $(pwd)/apks:/apks ninjadroid:latest ninjadroid /apks/package.apk -aj

또한 -e/--extract 옵션을 사용할 때 출력 디렉터리에도 동일하게 적용되며, 해당 디렉터리에 대한 권한도 부여해야 합니다:```shell $ mkdir output $ chmod 777 $ docker run --name ninjadroid --rm -v $(pwd)/apks:/apks -v $(pwd)/output:/output ninjadroid:latest ninjadroid /apks/package.apk -ae /output

### Flatpak (실험적)
NinjaDroid를 Flatpak으로 실행하려면 `Flatpak`과 `flatpak-builder`가 설치되어 있어야 합니다.
다음 명령어를 실행하기만 하면 필요한 모든 Flatpak 종속성이 설치됩니다:```shell
$ make build-flatpak
$ flatpak-builder --run flatpak/build flatpak/com.github.rovellipaolo.NinjaDroid.yaml ninjadroid --help

참고: 현재 -e/--extract 옵션이 올바르게 작동하지 않습니다 (참조: https://github.com/rovellipaolo/NinjaDroid/issues/21).

Snap (실험적)

Snap으로 NinjaDroid를 실행하려면 Snap과 snapcraft가 설치되어 있어야 합니다. 다음 명령어를 실행하면 필요한 모든 Snap 종속성이 설치됩니다:```shell $ make build-snap $ make install-snap $ ninjadroid --help

**참고:** snap이 `--devmode` 옵션 없이 설치된 경우 `-e`/`--extract` 옵션이 제대로 작동하지 않습니다 (참조: https://github.com/rovellipaolo/NinjaDroid/issues/20).



## 테스트

구성한 후에는 ("_설치_" 섹션 참조), 다음과 같이 테스트와 checkstyle을 실행할 수도 있습니다.

### 네이티브
로컬 머신에서 실행하려면 다음 명령을 실행하세요:```shell
$ make test
$ make regression
$ make checkstyle

또한 다음 명령어를 실행하여 커버리지와 함께 테스트를 실행할 수 있습니다:```shell $ make test-coverage

그리고/또는 다음 명령어를 실행하여 모든 git 커밋 시 checkstyle이 자동으로 실행되도록 설정하십시오:```
$ make install-githooks

Docker

Docker에서 실행하려면 다음 명령을 실행하십시오:```shell $ make test-docker $ make regression-docker $ make checkstyle-docker

### Flatpak
Flatpak에서 회귀 테스트를 실행하려면 다음 명령을 실행하십시오:```shell
$ make regression-flatpak

Snap

Snap에서 회귀 테스트를 실행하려면 다음 명령을 실행하십시오:```shell $ make regression-snap

## 사용법

다음은 샘플 APK 패키지에 대해 NinjaDroid를 실행하는 예제입니다.
도구 다운로드