Skip to content

Commit

Permalink
📝 Update Readme, add usage explanation video url
Browse files Browse the repository at this point in the history
  • Loading branch information
yhs0602 committed Feb 27, 2020
1 parent caef14f commit c5b7d68
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 90 deletions.
99 changes: 13 additions & 86 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,9 @@

Disassemble **ANY** files including android shared libraries (aka .so files) (NDK, JNI), windows PE files(EXE, DLLs, SYSs, etc..), linux executables, object files, ANY files you want like pictures, audios, etc(for fun) entirely on Android. Capstone-based disassembler application on android.

# Version 1.6.2 [pre-release](https://github.com/KYHSGeekCode/Android-Disassembler/releases)!
# Version 2.0.0 [pre-release](https://github.com/KYHSGeekCode/Android-Disassembler/releases)!

## What's new : Support Kitkat
## What's new : Tab system renewal, fix several issues
# Features
- Shows details of elf files.
- Shows symbol table(functions or objects' ,... names) of elf files.
Expand All @@ -21,7 +21,6 @@ Disassemble **ANY** files including android shared libraries (aka .so files) (ND
- Syntax colorizing.
- Support PE and other bin formats.
- Sort symbols if needed.
- No need to press `Disassemble` button!
- Colorize PUSH/POP instructions.
- Colorize ARM arch instructions better.
- Added **Follow Jump** menu for jump instructions.(*With BackStack*)
Expand All @@ -40,76 +39,11 @@ Disassemble **ANY** files including android shared libraries (aka .so files) (ND
- Bytewise analysis (mean, hashes, entropy, g-test, chi-test, autocorrelation) to help determine if the file is encrypted
- Support .NET assemblies
- Support dex files
- Analyzing multiple files in a project is allowed.

# [Themes Download](https://github.com/KYHSGeekCode/Android-Disassembler/tree/master/themes)
Good themes usually help you recognize some important instructions easily.
# Usage explanation video

# Usage(1)

1. Browse to a file to analyze.

The app automatically digs into `.zip, .apk, .dex` and `.NET assembly` files!

![](images/browseto.png)

![](images/chooseinstalled.png)

![](images/internal_storage.png)

1. You can just click to see the disassembled `.smali` files.

![](images/dex_opened.png)

1. Just by opening a .NET file like a folder, you can browse the symbols and methods defined.

![](images/dotnet_il.png)

1. You can view the decompiled `.smali` or `.il` files by clicking the method name.

![](images/open_ask.png)

![](images/opened_il.png)

![](images/opened_smali.png)

![](images/system.math.png)



# Usage(2)

1. Choose a file to analyze.
![image](images/Screenshot_20181222-213649.png)
- To change chooser, go to settings and change.
1. Go to details tab.
1. Press `Show details` button to see details.
(ELF)
![image](images/Screenshot_20181022-192953.png)
(PE)
![image](images/Screenshot_20190101-133237.png)
1. Press `Save to file` button to save it.
1. Go to Symbols tab.
1. You can see symbols found in the elf file, their demangled names(if they exist), addresses, and their properties.
![image](images/Screenshot_20181022-193032.png)
![image](images/Screenshot_20181022-193042.png)
![image](images/Screenshot_20190101-133256.png)
1. Go to disassembly tab.
![image](images/Screenshot_20181217-112755.png)
![image](images/Screenshot_20181221-215203.png)![image](images/Screenshot_20181221-215647.png)![image](images/Screenshot_20181222-173614.png)
1. To export the disassembly, press `Export` button and choose the option.
![image](images/Screenshot_20181022-193127.png)

# Export mode (Currently may not work well)
- Raw
Uses java's intrinsic serialization, and super fast.
- Classic
Pretty!
- Simple
Can be directly pasted as code!
- Json
It can be loaded again to analyze again(though reloading is not implemented yet - Sorry.)
- Database
Slow. Not recommended.
[![Watch the video](https://img.youtube.com/vi/WZk0JdgSnTs/maxresdefault.jpg)](https://youtu.be/WZk0JdgSnTs)

# Materials about assemblies
- [ARM](https://www.google.co.kr/url?sa=t&source=web&rct=j&url=http://arantxa.ii.uam.es/~gdrivera/sed/docs/ARMBook.pdf&ved=2ahUKEwjagIuEzOTeAhXHvLwKHeWcCnYQFjAAegQIBBAB&usg=AOvVaw2WWago0qaeDy06z0pgVR3n)
Expand All @@ -119,9 +53,6 @@ Slow. Not recommended.

# Error Handling

### Sorry, saved raw disasms are now incompatible with this version!

Here are some common issues and some solutons for them.
- The app crashes!

Sorry for inconvenience, please send an error report as an issue. **If you can't wait for the next stable version, please check / grant the read/write permission to the app.**
Expand All @@ -131,12 +62,6 @@ Here are some common issues and some solutons for them.
Is it a well known executable file? (ELF:`.so, .o, .lib, .a, etc..`, PE:`.exe, .dll, .sys, ...`) Then please report me with the file you tried to disassemble.
If not, you need to press `OK` and **setup manually**.

# Theme management -> you need not!
You can download the theme.zip here.
1. Unzip it to `/storage/emulated/0/themes/` or `/sdcard/themes`.
1. Done. You can now use this in settings menu(in app)
1. To rename/remove themes, just rename/remove the files.


### Feature requests are welcomed!

Expand All @@ -158,13 +83,19 @@ You can download the theme.zip here.
- [plthook](https://github.com/kubo/plthook/)
- [ELFIO](https://github.com/serge1/ELFIO) - bibliography: [TimScriptov/Disassembler](https://github.com/TimScriptov/Disassembler/blob/master/app/src/main/jni/Disassembler.cpp)
- [apache commons compress](https://commons.apache.org/proper/commons-compress/)
- [apache commons io](https://commons.apache.org/proper/commons-io/)
- [LouisCAD/Splitties](https://github.com/LouisCAD/Splitties)
- [Material-components-android](https://github.com/material-components/material-components-android)
- [Kotlix coroutines](https://github.com/Kotlin/kotlinx.coroutines)
- [SnackProgressBar](https://github.com/tingyik90/snackprogressbar)
- [Spek](https://github.com/spekframework/spek)
- [Kotlinx serialization](https://github.com/Kotlin/kotlinx.serialization)
- [AndroidX](https://android.googlesource.com/platform/frameworks/support/+/androidx-master-dev)
# TODO
- Show prototypes of NDK/C standard APIs in the symbols tab.
- More sophisticated colorizing
- Generate more useful comments
- Provide assembly tutorials.
- Fix symbols bug.
- Add pseudo-virtual machine to debug.
- Allow users to analyze active processes.
- Add arrow beside the disassembly.
Expand All @@ -174,11 +105,7 @@ You can download the theme.zip here.
- Add compatibility for IDA's produce files.
- About to add other utilities.
- Add android resource analyzer
- Improve elf parser
- Improve file(data source) chooser

# Help wanted!
- Don't the symbols' names look odd?
- Let user choose file from google drive

# Thanks
https://reverseengineering.stackexchange.com/a/20124/23870
Expand Down
8 changes: 4 additions & 4 deletions app/app.iml
Original file line number Diff line number Diff line change
Expand Up @@ -76,15 +76,15 @@
<exclude-output />
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/src/main/cpp" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/ap_generated_sources/debug/out" isTestSource="false" generated="true" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/renderscript_source_output_dir/debug/out" isTestSource="false" generated="true" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/aidl_source_output_dir/debug/out" isTestSource="false" generated="true" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/ap_generated_sources/debug/out" isTestSource="false" generated="true" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/buildConfig/debug" isTestSource="false" generated="true" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/renderscript_source_output_dir/debug/out" isTestSource="false" generated="true" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/res/rs/debug" type="java-resource" generated="true" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/ap_generated_sources/debugAndroidTest/out" isTestSource="true" generated="true" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/aidl_source_output_dir/debugAndroidTest/out" isTestSource="true" generated="true" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/buildConfig/androidTest/debug" isTestSource="true" generated="true" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/aidl_source_output_dir/debugAndroidTest/out" isTestSource="true" generated="true" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/renderscript_source_output_dir/debugAndroidTest/out" isTestSource="true" generated="true" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/ap_generated_sources/debugAndroidTest/out" isTestSource="true" generated="true" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/res/rs/androidTest/debug" type="java-test-resource" generated="true" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/ap_generated_sources/debugUnitTest/out" isTestSource="true" generated="true" />
<sourceFolder url="file://$MODULE_DIR$/src/debug/res" type="java-resource" />
Expand Down

0 comments on commit c5b7d68

Please sign in to comment.