
안드로이드 APK 디난독화를 위한 퍼지 비교 도구로, 버전 간 이름이 변경된 함수를 식별하고 매핑 파일과 대화형 HTML 보고서를 생성하여 악성코드 및 취약점 분석에 활용합니다.
🤖 Obfu[DE]scate: 안드로이드 APK 디-난독화 및 비교 도구 📱
Obfu[DE]scate는 두 버전의 안드로이드 APK를 비교하고 디-난독화하는 과정을 단순화하도록 설계된 Python 도구입니다. 난독화의 일부로 함수 이름이 변경된 경우에도 마찬가지입니다. 퍼지 비교 로직을 통해 Obfu[DE]scate는 함수 간의 유사성을 식별하고 APK 버전 간의 변경 사항을 발견하는 데 도움을 줍니다.
Obfu[DE]scate를 시작하는 것은 쉽습니다! 다음 단계를 따르세요:
pip install -r REQUIREMENTS.txt
Obfu[DE]scate는 Windows 11에서 테스트되었지만, 다른 시스템에서도 작동할 것입니다.
Obfu[DE]scate는 동작을 사용자 정의할 수 있는 여러 명령줄 옵션을 제공합니다:
두 APK 파일을 비교하려면 다음 명령어로 Obfu[DE]scate를 실행하세요:
python ObfuDeScate.py -a1 "old_example.apk" -a2 "new_example.apk" -cp "com.example.path"
위 예제에서 Obfu[DE]scate는 old_example.apk APK 내 클래스 경로 com.example.path의 모든 함수를 검토하고, 이를 new_example.apk의 동일한 클래스 경로에서 발견된 모든 함수와 비교합니다.
Obfu[DE]scate는 두 개의 출력 파일을 생성합니다: 새 줄로 구분된 목록 형식의 매핑 파일과 대화형 HTML 파일입니다. 이 출력 파일에는 다음이 포함됩니다:
com.chess.play.ObserveGameHelperImpl.d -> com.chess.play.ObserveGameHelperImpl.a .
Obfu[DE]scate는 오픈소스 프로젝트이며 커뮤니티의 기여를 환영합니다. Obfu[DE]scate에 기여하고 싶으시면 다음 지침을 따라주세요:
Obfu[DE]scate는 Contributor Covenant 행동 강령을 따릅니다. Obfu[DE]scate에 기여할 때 이 행동 강령을 검토하고 준수해 주시기 바랍니다.
버그를 발견하거나 새로운 기능에 대한 제안이 있으시면 GitHub 저장소에 이슈를 열어 주세요. 문제 재현 단계나 제안된 기능에 대한 명확한 설명 등 가능한 한 자세한 정보를 제공해 주세요. 여러분의 피드백은 가치 있으며 Obfu[DE]scate를 모든 사람에게 더 좋게 만드는 데 도움이 됩니다.
이 도구는 APKTool 없이는 작동하지 않을 것입니다! 또한, 이 README의 많은 예제는 Chess.com 앱을 기반으로 사용합니다. 여기에서 확인해 보세요.
| Shorthand | Parameter | Description | Required |
|---|
| -a1 | apk_file_path_1 | 원본 APK의 경로입니다. 두 번째 APK가 비교될 APK입니다 (즉, 이전 버전의 APK). | True |
| -a2 | apk_file_path_2 | 새로운 APK의 경로입니다. 출력은 APK 1과 이 APK 간의 변경 사항을 보여줍니다. | True |
| -cp | class_path | 검토된 함수를 필터링하는 데 사용될 역방향 도메인 표기법 경로입니다 (예: com.example.class를 제공하여 이 경로의 함수만 비교). | False |
| -o | output_dir | 출력 매핑, html 및 디스어셈블된 APK를 저장할 디렉토리입니다. | False |
| -apktool | apk_tool_path | APKTool이 PATH에 없는 경우 이 매개변수를 사용하여 ObfuDeScate에 APKTool의 위치를 알려줍니다. | False |