
APK, DEX, ODEX, OAT, JAR, AAR, CLASS 파일을 위한 가장 빠르고 강력한 안드로이드 디컴파일러(Java VM 없이 작동하는 네이티브 도구)입니다. 악성 행위 탐지, 개인정보 유출 탐지, 취약점 탐지, 경로 해결, 패커 식별, 변수 추적, 난독 해제, python&java 스크립트, 장치 메모리 추출, 데이터 복호화 및 암호화 등을 지원합니다.

GDA는 C++로 구현된 강력한 Dalvik 바이트코드 디컴파일러로, 빠른 분석 속도와 낮은 메모리 및 디스크 소비, 그리고 apk, dex, odex, oat, jar, class, aar 파일에 대한 강력한 디컴파일 능력을 제공합니다.
GDA는 완전한 네이티브 소프트웨어이며 별도의 설치나 Java VM이 필요 없습니다. 추가 구성 없이 모든 최신 Windows 시스템 및 가상 머신 시스템에서 잘 동작합니다. GDA 디컴파일러 프로젝트는 2013년에 시작되었으며, 첫 번째 버전 1.0은 2015년에 **GDA 웹사이트**에서 공개되었습니다.
GDA는 또한 강력하고 빠른 리버스 분석 플랫폼입니다. 기본적인 디컴파일 작업뿐만 아니라 악성 행위 탐지, 개인정보 유출 탐지, 취약점 탐지, 경로 해결, 패커 식별, 변수 추적 분석, 난독화 해제, Python 및 Java 스크립트, 기기 메모리 추출, 데이터 복호화 및 암호화 등 많은 뛰어난 기능을 지원합니다.
주요 기능은 다음과 같습니다:
𝕬 대화형 작업:
1. 문자열, 클래스, 메서드, 필드에 대한 크로스 레퍼런스;
2. 문자열, 클래스, 메서드, 필드 검색;
3. 자바 코드에 주석 달기;
4. 메서드, 필드, 클래스 이름 변경;
5. 분석 결과를 gda db 파일에 저장.
...
𝕭 보조 분석 도구:
1. ODEX에서 DEX 추출;
2. OAT에서 DEX 추출;
3. XML 디코더 (컴포넌트 필터);
4. 알고리즘 도구 (롤링 암호화 및 거의 모든 주요 암호화 알고리즘 지원);
5. 기기 메모리 덤프 (so, odex, dex, oat 파일 덤프);
6. 경로 해결;
7. 정적 취약점 스캐너;
...
𝕮 주요 기능:
1. 친숙한 GUI를 갖춘 C++로 제작된 새로운 Dalvik 디컴파일러.
2. 패커 인식.
3. 멀티 DEX 지원.
4. 난독화 해제.
5. API 체인을 통한 악성 행위 스캐닝.
6. 스택 상태 머신 및 동적 규칙 해석기 기반 정적 취약점 스캐너.
7. 변수 동작 미리보기를 위한 오염 분석.
8. 변수 출처 분석을 위한 오염 분석.
9. 크로스 레퍼런스가 포함된 API 뷰.
10. 깊은 URL 추출.
11. 권한과 모듈의 연관성.
12. APK 포렌식 분석.
13. 이중 디컴파일러 모드.
14. 스마트 이름 변경.
15. 기기 메모리 데이터 덤프, 메모리 검색을 통한 DEX 파일 덤프.
16. Frida를 사용하여 선택한 메서드 또는 클래스에 후킹 및 호출 지원.
17. 개인정보 유출 스캐닝.
18. 민감 정보 추출.
19. 멀티 DEX 병합.
20. 저수준 중간 표현(LIR) 기반 경로 해결.
21. 정크 명령어 제거.
22. 호출 그래프 뷰 지원.
23. Smali 명령어 패치, apk 리패키징 및 설치.
24. 하위 클래스 및 상위 클래스 뷰 지원.
25. 문자열 번역 지원.
...
𝕲𝕯𝕬 단축키
설치가 필요 없습니다. bin 파일을 더블클릭하면 바로 사용할 수 있습니다. 참고: 이 프로젝트는 오픈소스가 아닙니다. 적어도 단기적으로는 그렇습니다. 여기에 게시된 무료 도구와 일부 오픈소스 스크립트는 사용할 수 있습니다.
저작권 보호를 위해 GDA는 인증된 VMP로 보호되고 있어 일부 안티바이러스 소프트웨어에서 오탐지가 발생할 수 있습니다. 무시하거나 GDA를 화이트리스트에 추가해 주세요. GDA에는 악성 행위가 없습니다.
GDA에는 ADB와 gdump(기기 메모리 데이터 덤프용)가 내장되어 있으며, 취약점 규칙, 소스-오염 규칙, API 지문 등도 포함되어 있습니다. 따라서 %APPDATA%/GDA 디렉터리에 일부 파일이 생성됩니다. 다른 실행 파일을 릴리스하는 이 동작은 일부 AV에서 바이러스로 식별될 수 있습니다.
Windows 전용
파일을 GDA로 끌어다 놓기만 하면 됩니다.
.jar/.class/.aar 파일의 경우, dx 도구를 지원하는 Java가 필요합니다. Java가 정상적으로 작동하는지 확인하십시오.
분석할 jar 파일 크기가 너무 크면 분석에 시간이 오래 걸릴 수 있으니 인내심을 가지고 기다려 주십시오.
>gda.exe
-sh src_file --> Shell 시작
-sv src_file port --> 서버 시작
-h --> 도움말
------------------------------------------------------------
>gda.exe -h
Usage:gda.exe [option] [apk_file] [-o output_file]
option:
-h 도움말
-x AndroidManifest.xml 표시
-p 앱 패키지 이름
-P 권한
-i apk 기본 정보
-a 공격 표면
-k 패커
-s 모든 문자열
-S 참조된 문자열
-c 인증서 정보
-d 모든 코드 디컴파일
------------------------------------------------------------
>gda.exe -sv text.apk 12345
File Loading...
GDA Server listening on port 12345...
>client_gda.py help
------------------------------------------------------------
>gda -sh test.apk
>
>
GDA Shell >help
subcmd [-args]... [-t filter_string]
help --> 셸 명령어 도움말
set -o file--> 출력 파일 설정
exit/q --> 종료
axml --> androidmainfest.xml 내용
binfo --> apk 기본 정보
pname --> apk 패키지 이름
permission --> 앱 권한
header n --> n번째 dex 파일의 헤더
attsf --> 공격 표면
packer --> 패커
cert --> 인증서
appstr --> 메서드에서 참조하는 문자열
malscan --> 악성 행위
sensinf --> 민감 정보
interface --> 인터페이스 클래스 목록
uri --> URL, 경로 등
native --> 네이티브 메서드 목록
api --> API 메서드 목록
listm cname--> 클래스 메서드 목록(점 표기법)
sclass cidx--> 클래스 인덱스(16진수)로 하위 클래스 목록
pclass cidx--> 클래스 인덱스(16진수)로 상위 클래스 목록
dasm option--> 메서드 디스어셈블리
option: @type(예: dasm method@0045F0)
-n name(시그니처 이름, 예: "Lcom/base/Binary;->add(Lcom/base/Binary;)V")
dec option--> 메서드 또는 클래스 디컴파일,
option: @type (클래스/메서드 유형), 예: dec method@21f
-c[-m] name(클래스/메서드 시그니처 이름, 예: "Lcom/base/Binary;")
-a filepath(모든 클래스 디컴파일)
find option--> 이름으로 객체 검색(부분 일치/정규식)
option: -c[-m][-M][-d][-s][-i][-a] name, 예: find -C Frame (정규식:~"Frame.*")
|-c(클래스 이름 일치) |-C(패키지를 포함한 클래스 이름 일치)
|-m(메서드 이름 일치) |-M(패키지를 포함한 메서드 이름 일치)
|-d(필드 이름 일치) |-i(API 메서드 이름 일치)
|-s(문자열 일치) |-a(모든 항목[클래스, 메서드, 필드 및 문자열] 일치)
xref option --> 객체의 크로스 레퍼런스 검색
option(1): @type (메서드/클래스/필드/문자열 유형), 예: xref string@22e
option(2): -c[-m][-M][-d][-s][-i][-a] name(부분 일치), 예: xref -m send
|-c(클래스 이름의 크로스 레퍼런스) |-s(문자열의 크로스 레퍼런스)
|-m(메서드 이름의 크로스 레퍼런스) |-r(리소스 이름의 크로스 레퍼런스)
|-f(필드 이름의 크로스 레퍼런스) |-a(모든 항목[클래스, 메서드, 필드 및 문자열]의 크로스 레퍼런스)
스킬 예제:
악성코드 분석 예제:
GDA: Smali JIT 컴파일 기반 DEX 정적 패치 기술
GDA 3.75+만 지원합니다. 다른 버전에서는 이 테마 파일을 사용하지 마십시오. 사용법: 메뉴 File -> Import Color Config를 클릭하고 테마 파일을 선택한 후 GDA를 재시작하십시오.

| 단축키 | 설명 |
|---|
| F5 | Java에서 Smali로 전환, 다시 누르면 Java로 돌아감 |
| F | 데이터 흐름 분석을 통해 인자와 반환값 추적 |
| X | 크로스 레퍼런싱, 호출자(문자열, 클래스, 메서드, 필드) 찾기 |
| Esc/◄/Backspace | 이전 방문으로 돌아가기 |
| ► | 다음 방문으로 이동 |
| G | 입력한 오프셋으로 이동 |
| N | 변수/메서드/클래스 이름 변경 |
| S | 주어진 문자열로 모든 요소 검색 |
| C | 주석 달기. Java 코드만 지원 |
| DoubleClick | 커서가 메서드/문자열/필드/클래스에 위치한 상태에서 더블클릭하여 객체 접근 |
| M | 커서가 Smali 줄에 위치한 상태에서 'M' 키를 누르면 명령어 편집 가능 |
| ▲ UP | '위' 키를 눌러 트리 컨트롤에서 이전 메서드로 이동 |
| ▼ Down | '아래' 키를 눌러 트리 컨트롤에서 다음 메서드로 이동 |
| D | 메서드의 바이너리 데이터 덤프, Smali 창에서만 지원 |
| Enter | 편집 상자의 수정 사항 적용 |
| H | 16진수로 데이터 표시 |
| Ctr+H | 검색 기록 창 표시 |
| Ctr+A | 전체 선택 |
| Ctr+C | 복사 |
| Ctr+V | 붙여넣기, 편집 가능한 상자에만 해당 |
| Ctr+X | 잘라내기 |
| Ctr+F | 코드 영역에서 문자열 검색 |
| Ctr+S | 수정 사항을 GDA 데이터베이스 파일에 저장 |