GDA-android-reversing-Tool is a free, open source threat detection & response project written in Python and released under Apache-2.0. It has 4,833 GitHub stars, 573 forks and 62 open issues, and was last pushed 5 months ago. On this registry it ranks #8 of 12 tracked projects in Threat Detection & Response, with 5 head-to-head comparisons available.

What is GDA-android-reversing-Tool?

GDA (GJoy Dex Analyzer) is a native C++ Dalvik bytecode decompiler and reverse analysis platform for Android and Java artifacts — APK, DEX, ODEX, OAT, JAR, AAR and CLASS files — built for malware analysts, mobile security auditors and reverse engineers who work without a Java VM.

What it is

GDA, short for GJoy Dex Analyzer, is a decompiler and reverse analysis platform implemented in C++ and distributed as native software that works without any setup and without a Java VM. Development started in 2013, and version 1.0 was released in 2015 through the GDA website. It decompiles APK, DEX, ODEX, OAT, JAR, CLASS and AAR files, and it also performs malicious behavior detection, privacy leaking detection, vulnerability detection, path solving, packer identification, variable tracking analysis, deobfuscation, Python and Java scripts, device memory extraction, and data decryption and encryption.

The concrete problem it solves is the weight of conventional Android decompilers, which depend on a Java VM and consume more memory and disk. GDA advertises fast analysis and low memory and disk consumption, and it works well on new Windows systems and virtual machine systems without additional configuration. It also wraps decompiled output in interactive operations: cross-references for strings, classes, methods and fields, searching, comments on Java code, renaming of methods, fields and classes, and saving analysis results into a gda db file. Utilities that extract DEX from ODEX and from OAT bring older Android artifacts into the same workflow.

Key capabilities

  • Decompiles APK, DEX, ODEX, OAT, JAR, CLASS and AAR files, with multi-DEX support, Multi-DEX Merge, dual decompiler mode and a call-graph view.
  • Static vulnerability scanner built on a stack state machine and a dynamic rule interpreter, documented in the GDA-Vulnerability-Scanner wiki guide.
  • Taint analysis in both directions: previewing the behavior of variables and sourcing the variables, with its own wiki guide.
  • Malicious behavior scanning by API chains, together with privacy leaking scanning and sensitive information extraction.
  • Packer recognition, deobfuscation, junk instruction clearing and smart rename.
  • Extraction and forensics utilities: extract DEX from ODEX and from OAT, XML decoder with component filter, algorithm tool covering rolling encryption and popular encryption algorithms, device memory dump of so, odex, dex and oat, and DEX file dump by memory searching.
  • Path solving based on low-level intermediate representation (LIR), Frida support for hooking and calling a selected method or class, smali instruction patch with apk repack and install, and Python and Java scripting.

Who uses it and how

  • Malware analysts triaging suspicious APK files: packer recognition, malicious behavior scanning by API chains, deep URL extraction, and association of permissions with modules.
  • Mobile security auditors reviewing builds: static vulnerability scanner, taint analysis, subclass and parent class view, and API view with x-reference.
  • Privacy and compliance reviewers: privacy leaking scanning and sensitive information extraction.
  • Forensics and incident response: APK forensics analysis, device memory dump of so, odex, dex and oat files, and DEX dump by memory searching.
  • Reverse engineers facing packed or legacy targets: extract DEX from ODEX and OAT, Multi-DEX Merge, deobfuscation, and smali instruction patch with repack and install.

Getting started

GDA is distributed as native software from the GDA website (http://www.gda.wiki:9090/index.php?language=en) and requires no setup, no installer and no Java VM. The GitHub wiki carries the brief guide plus dedicated guides for Path Solver, Vulnerability Scanner, Python scripts and Static Taint analysis.

How it compares

The facts provided name no paid products that GDA replaces and no comparable tools, so GDA stands alone in this registry entry. Its recorded position is a native, Apache-2.0 licensed decompiler filed under Security & Privacy / Threat Detection & Response.

When to use it — and when not to

Choose GDA when analysis happens on a Windows workstation or a virtual machine and the work is interactive decompilation with vulnerability, taint and privacy scanning; there is no database, storage back end or SMTP service to operate. Analysts who need a headless Linux or macOS pipeline should look elsewhere, because the README only claims GDA works well on new Windows systems and virtual machine systems. Two caveats: the registry lists the language as Python while the README describes the decompiler as implemented in C++, and no package manager, Docker image or compose file is documented, so distribution runs through the GDA website.

project readme (upstream, from github) — read inline

image image image image image image image image image

ˇ GDA(GJoy Dex Analyzer)

GDA, an powerful Dalvik bytecode decompiler implemented in C++, which has the advantages of fast analysis and low memory&disk consumption and an stronger ability to decompiling the apk, dex, odex, oat, jar, class, aar files.

GDA is completely native software and works without any Setup and Java VM, it works well in any new windows system and virtual machine system without additional configuration. GDA Decompiler project started in 2013 and its first version 1.0 released in 2015 at GDA website.

GDA is also a powerful and fast reverse analysis platform. Which does not only supports the basic decompiling operation, but also many excellent features like Malicious behavior detection, Privacy leaking detection, Vulnerability detection, Path solving, Packer identification, Variable tracking analysis, Deobfuscation, Python& Java scripts, Device memory extraction, Data decryption and encryption etc.

All the features as follows:

𝕬 Interactive Operation:
    1. Cross-references for strings, classes, methods and fields;
    2. Searching for strings, classes methods and fields;
    3. Comments for java code;
    4. Rename methods,fields and classes;
    5. Save the analysis results in gda db file.
    ...
  
𝕭 Utilities for Assisted Analysis:
    1. Extracting DEX from ODEX;
    2. Extracting DEX from OAT;
    3. XML Decoder (Component filter);
    4. Algorithm tool(Support rolling encryption and almost all popular encryption algorithms);
    5. Device memory dump(Dump so, odex, dex, oat file);
    6. Path solving;
    7. Static vulnerability scanner;
    ...
    
𝕮 Good Features:
    1. Brand new dalvik decompiler in c++ with friendly GUI.
    2. Packers Recognition.
    3. Multi-DEX supporting.
    4. De-obfuscate.
    5. Malicious Behavior Scanning by API chains.
    6. Static vulnerability scanner based on stack state machine and dynamic rule interpreter.
    7. Taint analysis to preview the behavior of variables.
    8. Taint analysis to source the variables.
    9. APIs view with x-reference
    10. Deep URL extraction.
    11. Association of permissions with modules.
    12. Apk Forensics Analysis.
    13. Dual decompiler mode.
    14. Smart Rename.
    15. Device memory data dump, DEX file dump by memory searching.
    16. Support Frida to hook and call the selected method or class.
    17. Privacy leaking scanning.
    18. Sensitive Infomation extraction.
    19. Multi-DEX Merge.
    20. Path solving based on low-level intermediate representation(LIR).
    21. Junk instruction clearing.
    22. Support call-graph view.
    23. Smali instruction patch, apk repack and install.
    24. Support subclass and parentclass view.
    25. Support translation of the strings.
    ...

𝕲𝕯𝕬 shortcut key

shortcut description
F5 Switch java to smali, pressing it again for back to java
F Trace the args and return-value by dataflow analysis
X Cross-referencing, locating callers (of strings, classes, methods, field)
Esc/◄/Backspace Back to the last visit
Forward to the next visit
G Jump to somewhere by you inputting offset
N Rename the variable/method/class name
S Search for all the elements by the given string
C Comments. Only supports the Java code
DoubleClick The cursor's placed at the method/str/field/class, and double-click to access objects
M The cursor's placed at the Smali line and pressing the key 'M' to edit the instruction
▲ UP Press 'up' key to access the up-method in the tree control
▼ Down Press 'down' key to access the down-method in the tree control
D Dump the binary data of methods, only supports the Smali window
Enter The modification of edit boxes take effect
H Show data in Hex
Ctr+H Pop searching history window
Ctr+A Select all
Ctr+C Copy
Ctr+V Paste, only for editable boxes
Ctr+X Cut
Ctr+F Find out the string of the code area
Ctr+S Save the modifications into the GDA database file

ˇ Installing

No installation required, just double-click the bin and you can enjoy it. NOTE: This is not an open source project,at least,in the short term. You can use the free tools and some open source scripts published here.

ˇ False positive report

For copyright protection, GDA is protected by an authorized VMP, which may lead to false positives of some anti-virus software. Please ignore or add GDA to the white list. GDA does not have any malicious behavior.

GDA is embedded with ADB and gdump (used to dump device memory data), as well as vul rules, source-taint rules, api fingerprint etc. so, you will see some file in directory %APPDATA%/GDA. this behavior releasing the other executable files also be identified as a virus by some AVs.

ˇ Supported platforms

Only for windows

ˇ Usage:

1.GUI mode

Just drag a file into GDA, that's done.

If your files are .jar/.class/.aar files, you need the java support the dx tool. Please make sure that the java works properly.

When the analyzed jar file size is too big, it maybe takes a long time to analysize, please be patient.

2.CLI mode

>gda.exe
  -sh src_file      --> start a Shell
  -sv src_file port --> start a Server
  -h                --> help
------------------------------------------------------------
>gda.exe -h
   Usage:gda.exe [option] [apk_file] [-o output_file]
      option:
      -h help
      -x show AndroidManifest.xml
      -p app package name
      -P permission
      -i apk base info
      -a attack surface
      -k packer
      -s all the strings
      -S referenced strings
      -c cert information
      -d decompile all code
------------------------------------------------------------

>gda.exe -sv text.apk 12345
  File Loading...
  GDA Server listening on port 12345...

>client_gda.py help

client_gda.py


------------------------------------------------------------

>gda -sh test.apk
  >
  >
  GDA Shell >help
        subcmd [-args]... [-t filter_string]
        help       --> shell command help
        set -o file--> set output file
        exit/q     --> to exit
        axml       --> content of androidmainfest.xml
        binfo      --> apk base info
        pname      --> apk package name
        permission --> permissions of APP
        header n   --> header of the n-st dex file
        attsf      --> attacksurface
        packer     --> packer
        cert       --> certifacate
        appstr     --> strings referenced by methods
        malscan    --> malcious behavior
        sensinf    --> sensitive infos
        interface  --> list interface classes
        uri        --> url,path etc.
        native     --> list native methods
        api        --> list api methods
        listm cname--> list the methods of class(dot)
        sclass cidx--> list subclasses by class index(hex)
        pclass cidx--> list parent class by class index(hex)
        dasm option--> disasembly a method
            option:  @type(e.g., dasm method@0045F0)
                    -n name(signature name,e.g.,"Lcom/base/Binary;->add(Lcom/base/Binary;)V")
        dec option--> decompile a method or class,
            option:  @type (class/method typ

readme truncated — read the full docs on github

Frequently asked questions

Is GDA-android-reversing-Tool free to use?

GDA-android-reversing-Tool is open source under the Apache-2.0 licence. There is no licence fee and no seat count — you can self-host it or, where the project offers one, pay a vendor for a managed version instead.

What does GDA-android-reversing-Tool do?

the fastest and most powerful android decompiler(native tool working without Java VM) for the APK, DEX, ODEX, OAT, JAR, AAR, and CLASS file. which supports mali

What is GDA-android-reversing-Tool written in?

GDA-android-reversing-Tool is primarily written in Python. Its source is publicly available at https://github.com/charles2gan/GDA-android-reversing-Tool, and it has 4,833 GitHub stars.