
Android 애플리케이션 식별 도구 - 패커, 보호기, 난독화 도구 및 특이점 - Android용 PEiD
APKiD는 APK가 어떻게 만들어졌는지에 대한 정보를 제공합니다. 다양한 컴파일러, 패커, 난독화 도구 및 기타 특이한 요소들을 식별합니다. 안드로이드를 위한 PEiD입니다.

이 도구가 어떤 용도로 사용될 수 있는지에 대한 자세한 내용은 다음을 참고하세요:
pip install apkid
Docker를 사용하여 APKiD를 실행할 수도 있습니다! 물론 이를 위해서는 git과 Docker가 설치되어 있어야 합니다.
Docker 사용 방법은 다음과 같습니다:
git clone https://github.com/rednaga/APKiD
cd APKiD/
docker build . -t rednaga:apkid
docker/apkid.sh ~/reverse/targets/android/example/example.apk
[+] APKiD 2.1.0 :: from RedNaga :: rednaga.io
[*] example.apk!classes.dex
|-> compiler : dx
usage: apkid [-h] [-v] [-t TIMEOUT] [-r] [--scan-depth SCAN_DEPTH]
[--entry-max-scan-size ENTRY_MAX_SCAN_SIZE] [--typing {magic,filename,none}] [-j]
[-o DIR]
[FILE [FILE ...]]
APKiD - Android Application Identifier v2.1.2
positional arguments:
FILE apk, dex, or directory
optional arguments:
-h, --help show this help message and exit
-v, --verbose log debug messages
scanning:
-t TIMEOUT, --timeout TIMEOUT Yara scan timeout (in seconds)
-r, --recursive recurse into subdirectories
--scan-depth SCAN_DEPTH how deep to go when scanning nested zips
--entry-max-scan-size ENTRY_MAX_SCAN_SIZE max zip entry size to scan in bytes, 0 = no limit
--typing {magic,filename,none} method to decide which files to scan
output:
-j, --json output scan results in JSON format
-o DIR, --output-dir DIR write individual results here (implies --json)
APKiD가 인식하지 못하는 APK 또는 DEX를 발견하셨다면, GitHub 이슈를 열어 다음 내용을 알려주세요:
"흥미로운 무언가"를 탐지하기 위한 어떤 종류의 아이디어든 환영하므로, 패커, 컴파일러 또는 난독화 도구에만 국한하지 마세요. 흥미로운 안티 디스어셈블러, 안티 VM, 안티-* 트릭이 있다면 이슈를 만들어 주세요.
풀 리퀘스트를 환영합니다. 새로운 규칙을 제출하는 경우, 규칙을 확인할 수 있도록 APK / DEX의 파일 해시를 반드시 포함해 주세요.
이 도구는 이중 라이선스로 제공됩니다: 클로즈드 소스 프로젝트에 적합한 상용 라이선스와 오픈 소스 소프트웨어에 사용할 수 있는 GPL 라이선스입니다.
필요에 따라 둘 중 하나를 선택하고 해당 정책을 따라야 합니다. 각 라이선스 유형에 대한 정책 및 계약의 세부 사항은 LICENSE.COMMERCIAL 및 LICENSE.GPL 파일에서 확인할 수 있습니다.
변경 사항을 적용하거나 자체 규칙을 개발하는 등의 목적으로 최신 버전을 설치하려면, 이 저장소를 복제하고 규칙을 컴파일한 후 패키지를 편집 가능 모드로 설치하면 됩니다:
git clone https://github.com/rednaga/APKiD
cd APKiD
python prep-release.py
pip install -e .[dev,test]
위의 python prep-release.py 명령은 yara-python 및 yara-python-dex 패키지가 이미 설치되어 있어야 합니다.
로컬 머신과 Python이 설치된 위치에 따라 권한 오류로 인해 위의 방법이 작동하지 않는 경우, --user 플래그를 지정해 보세요. 가상 환경을 사용하지 않는 경우 이 플래그가 필요할 수 있습니다:
pip install -e .[dev,test] --user
규칙을 업데이트한 경우, 반드시 prep-release.py를 실행하여 다시 컴파일하세요.
Windows를 사용하는 경우, 컴파일하기 전에 이전 버전의 Yara를 제거하고 Yara 3.11.0 및 yara-python-dex를 설치하세요
pip uninstall -y yara-python yara-python-dex
pip install yara-python==3.11.0 wheel
pip wheel --wheel-dir=yara-python-dex git+https://github.com/MobSF/yara-python-dex.git
pip install --no-index --find-links=yara-python-dex yara-python-dex
새 버전을 릴리스할 때는 apkid/init.py에서 버전이 업데이트되었는지 확인하세요.
테스트 실행에 관해서는 .travis.yml을 확인하여 개발 및 테스트 환경이 어떻게 설정되고 테스트가 실행되는지 확인하세요.
컴파일된 규칙과 readme를 업데이트하고, 패키지를 빌드한 후 PyPI에 업로드하세요:
./prep-release.py readme
rm -f dist/*
python setup.py sdist bdist_wheel
twine upload --repository-url https://upload.pypi.org/legacy/ dist/*
자세한 내용은 Packaging Projects를 참고하세요.