DEXCALIBUR AUTOMATE YOUR ANDROID APP REVERSE Or hooking for dummies - - PowerPoint PPT Presentation

dexcalibur
SMART_READER_LITE
LIVE PREVIEW

DEXCALIBUR AUTOMATE YOUR ANDROID APP REVERSE Or hooking for dummies - - PowerPoint PPT Presentation

DEXCALIBUR AUTOMATE YOUR ANDROID APP REVERSE Or hooking for dummies https://github.com/FrenchYeti/dexcalibur.git WHO AM I ? GEORGES-B. MICHEL @FrenchYeti yeti@0xff.ninja Aka @FrenchYeti Software Security Evaluator at Thales Day


slide-1
SLIDE 1

DEXCALIBUR

AUTOMATE YOUR ANDROID APP REVERSE

Or hooking for dummies

https://github.com/FrenchYeti/dexcalibur.git

slide-2
SLIDE 2

WHO AM I ?

GEORGES-B. MICHEL

▸ @FrenchYeti ▸ yeti@0xff.ninja ▸ Software Security Evaluator at Thales ▸ Day : Reverse engineering (Android + TEE) apps

HCE Payment applications, Trusted Applications, ARM binaries

▸ Night : Develop reverse / pentest / appsec tools

Frida addict

Aka @FrenchYeti

slide-3
SLIDE 3

EXAMPLE OF AN OBFUSCATED ANDROID APPLICATION

slide-4
SLIDE 4

MOTIVATION

LET’S IMAGINE AN OBFUSCATED MULTI-DEX APPLICATION

PACKER 
 CLASS LOADER DEX LOADER APP CLASSES & METHODS

Clear .dex file & JNI libs Ciphered secondary 
 .dex file

DECIPHER & LOAD NATIVE
 FUNCTIONS

slide-5
SLIDE 5

MOTIVATION

LET’S IMAGINE AN OBFUSCATED MULTI-DEX APPLICATION

PACKER 
 CLASS LOADER DEX LOADER APP CLASSES & METHODS

Clear .dex file & JNI libs Ciphered secondary 
 .dex file

DECIPHER & LOAD

INVOKE BY REFLECTION

NATIVE
 FUNCTIONS

slide-6
SLIDE 6

MOTIVATION

LET’S IMAGINE AN OBFUSCATED MULTI-DEX APPLICATION

PACKER 
 CLASS LOADER DEX LOADER APP CLASSES & METHODS

Clear .dex file & JNI libs Ciphered secondary 
 .dex file

DECIPHER & LOAD

INVOKE BY REFLECTION Ciphered JNI lib

DECIPHER & LOAD NATIVE
 FUNCTIONS WHITE BOX
 CRYPTO

slide-7
SLIDE 7

MOTIVATION

LET’S IMAGINE AN OBFUSCATED MULTI-DEX APPLICATION

PACKER 
 CLASS LOADER DEX LOADER APP CLASSES & METHODS

Clear .dex file & JNI libs Ciphered secondary 
 .dex file

DECIPHER & LOAD

INVOKE BY REFLECTION Ciphered JNI lib

DECIPHER & LOAD

Class loaded from the network
 (NetworkClassLoader)

DOWNLOAD,
 DECIPHER & LOAD JNI FUNCTIONS NATIVE
 FUNCTIONS WHITE BOX
 CRYPTO

slide-8
SLIDE 8

MOTIVATION

LET’S IMAGINE AN OBFUSCATED MULTI-DEX APPLICATION

PACKER 
 CLASS LOADER DEX LOADER APP CLASSES & METHODS

Clear .dex file & JNI libs Ciphered secondary 
 .dex file

DECIPHER & LOAD

INVOKE BY REFLECTION Ciphered JNI lib

DECIPHER & LOAD

Class loaded from the network
 (NetworkClassLoader)

DOWNLOAD,
 DECIPHER & LOAD JNI FUNCTIONS NATIVE
 FUNCTIONS WHITE BOX
 CRYPTO

slide-9
SLIDE 9

MOTIVATION

PACKER 
 CLASS LOADER DEX LOADER APP CLASSES & METHODS

Ciphered secondary 
 .dex file

DECIPHER

INVOKE BY REFLECTION Ciphered JNI lib

DECIPHER & LOAD

Class loaded from the network
 (NetworkClassLoader)

DOWNLOAD,
 DECIPHER & LOAD JNI FUNCTIONS

YOU CAN HOOK
 ONLY WHAT YOU SEE

WHAT CAN I HOOK ?

Clear .dex file & JNI libs

NATIVE
 FUNCTIONS

slide-10
SLIDE 10

MOTIVATION

PACKER 
 CLASS LOADER DEX LOADER APP CLASSES & METHODS

Clear .dex file Ciphered secondary 
 .dex file

DECIPHER

INVOKE BY REFLECTION Ciphered JNI lib

DECIPHER & LOAD

Class loaded from the network
 (NetworkClassLoader)

DOWNLOAD,
 DECIPHER & LOAD JNI FUNCTIONS

IT REQUIRES SEVERAL
 HOOKING SESSIONS

Clear .dex file & JNI libs

NATIVE
 FUNCTIONS

WHAT IS INTERESTING TO HOOK ?

slide-11
SLIDE 11

MOTIVATION

slide-12
SLIDE 12

THE IDEA

▸ Deobfuscate waste of time

MOTIVATION

slide-13
SLIDE 13

THE IDEA

▸ Deobfuscate waste of time ▸ Manage hooks not so easy

MOTIVATION

slide-14
SLIDE 14

THE IDEA

▸ Deobfuscate waste of time ▸ Manage hooks not so easy ▸ Manual tasks can be automated (start App, …)

MOTIVATION

slide-15
SLIDE 15

THE IDEA

▸ Deobfuscate waste of time ▸ Manage hooks not so easy ▸ Manual tasks can be automated (start App, …) ▸ Several devices hooked simultaneously

MOTIVATION

slide-16
SLIDE 16

THE IDEA

▸ Deobfuscate waste of time ▸ Manage hooks not so easy ▸ Manual tasks can be automated (start App, …) ▸ Several devices hooked simultaneously ▸ Application size explore bytecode/libs is boring

MOTIVATION

slide-17
SLIDE 17

THE IDEA

▸ Show functions invoked dynamically as « xrefs » ▸ Discover automatically classes & bytecode loaded dynamically

(DexFile ..)

▸ Generate hook with a single click on the function ▸ Debug a single hook while others are active ▸ Enable/disable hook without lose 


  • r pollute the source code

CHRISTMAS WISH LIST 1/2 :

slide-18
SLIDE 18

THE IDEA

▸ Multi-user : share the same instrumentation with my friends ▸ Instrumente several devices and merge hook logs 


(Workflow / IoT)

▸ Be able to run with rooted & non-rooted devices ▸ Offer user-friendly GUI and API, ▸ Free & open-source ! ( license APACHE 2 )

CHRISTMAS WISH LIST 2/2 :

slide-19
SLIDE 19

WHAT IS DEXCALIBUR ?

slide-20
SLIDE 20

NOT JUST A TOOLBOX

DEX DISASSEMBLER

Baksmali

WHAT IS DEXCALIBUR ?

slide-21
SLIDE 21

NOT JUST A TOOLBOX

FILE IDENTIFIERS & PARSERS DEX DISASSEMBLER

Baksmali

WHAT IS DEXCALIBUR ?

slide-22
SLIDE 22

NOT JUST A TOOLBOX

STATIC BYTECODE ANALYZER DYNAMIC BYTECODE ANALYZER FILE IDENTIFIERS & PARSERS DEX DISASSEMBLER

Baksmali

WHAT IS DEXCALIBUR ?

slide-23
SLIDE 23

NOT JUST A TOOLBOX

STATIC BYTECODE ANALYZER DYNAMIC BYTECODE ANALYZER FILE IDENTIFIERS & PARSERS DEX DISASSEMBLER

Baksmali

INSTRUMENTATION TOOL

WHAT IS DEXCALIBUR ?

slide-24
SLIDE 24

NOT JUST A TOOLBOX

STATIC BYTECODE ANALYZER DYNAMIC BYTECODE ANALYZER FILE IDENTIFIERS & PARSERS MODULAR HEURISTIC & SEARCH ENGINE DEX DISASSEMBLER

Baksmali

INSTRUMENTATION TOOL

WHAT IS DEXCALIBUR ?

slide-25
SLIDE 25

NOT JUST A TOOLBOX

STATIC BYTECODE ANALYZER DYNAMIC BYTECODE ANALYZER FILE IDENTIFIERS & PARSERS MODULAR HEURISTIC & SEARCH ENGINE DEVICE MANAGER & FRIDA UTILS DEX DISASSEMBLER

Baksmali

INSTRUMENTATION TOOL

WHAT IS DEXCALIBUR ?

slide-26
SLIDE 26

NOT JUST A TOOLBOX

STATIC BYTECODE ANALYZER DYNAMIC BYTECODE ANALYZER FILE IDENTIFIERS & PARSERS MODULAR HEURISTIC & SEARCH ENGINE WEB SERVER & UI DEVICE MANAGER & FRIDA UTILS CONTROLS & CUSTOMIZE DEX DISASSEMBLER

Baksmali

INSTRUMENTATION TOOL

WHAT IS DEXCALIBUR ?

slide-27
SLIDE 27

NOT JUST A TOOLBOX

STATIC BYTECODE ANALYZER DYNAMIC BYTECODE ANALYZER FILE IDENTIFIERS & PARSERS MODULAR HEURISTIC & SEARCH ENGINE WEB SERVER & UI DEVICE MANAGER & FRIDA UTILS IMPROVES AT
 RUNTIME CONTROLS & CUSTOMIZE DEX DISASSEMBLER

Baksmali

INSTRUMENTATION TOOL

WHAT IS DEXCALIBUR ?

slide-28
SLIDE 28

NOT JUST A TOOLBOX

STATIC BYTECODE ANALYZER DYNAMIC BYTECODE ANALYZER FILE IDENTIFIERS & PARSERS MODULAR HEURISTIC & SEARCH ENGINE WEB SERVER & UI DEVICE MANAGER & FRIDA UTILS IMPROVES AT
 RUNTIME CONTROLS & CUSTOMIZE

DEXCALIBUR

DEX DISASSEMBLER

Baksmali

INSTRUMENTATION TOOL

WHAT IS DEXCALIBUR ?

slide-29
SLIDE 29

WHAT IS DEXCALIBUR ?

POWERED BY …

ANDROID SDK APKTOOL +
 BAKSMALI

Today

NATIVE HOOK CANNOT BE GENERATED
 NO BYTECODE SYMBOLIC EXEC

Functions contained into JNI/native libs
 can be hooked, but decompilers/analyzers
 dont support it. So, native hook cannot be 
 generated.

NICE TOOLS :-)

slide-30
SLIDE 30

WHAT IS DEXCALIBUR ?

POWERED BY …

ANDROID SDK APKTOOL +
 BAKSMALI

Today

NATIVE HOOK CANNOT BE GENERATED
 NO BYTECODE SYMBOLIC EXEC

Functions contained into JNI/native libs
 can be hooked, but decompilers/analyzers
 dont support it. So, native hook cannot be 
 generated.

ADD NATIVE LIBRARIES SUPPORT SMALI SYMBOLIC EXEC

NICE TOOLS :-)

LIEF R2 LIEF

Tomorrow

RetDec

SMALI VM Z3 SOLVER

AND MORE !

slide-31
SLIDE 31

DEMO #1

slide-32
SLIDE 32

HOW IT WORKS ?

slide-33
SLIDE 33

HOW IT WORKS ?

1) START PHASE - FILE ANALYSIS

UNCOMPRESS APK

APK FILE DEVICE

FILE 
 ANALYZER

Files identified & categorized:
 key stores, libs, properties, xml,
 shared pref, cache, … Pull Application data
 /data/data/xxx … Undetected / high entropy files 
 are tagged notify

1 3 4

Parse APK content

2

slide-34
SLIDE 34

HOW IT WORKS ?

1) START PHASE - ANDROID API ANALYSIS

UNCOMPRESS APK

APK FILE

ANDROID API/STUB

Application
 Graph Statically built

DEX DISASSEMBLER

SAST

FILE 
 ANALYZER

3 1 2

Create app
 graph

DEVICE

slide-35
SLIDE 35

HOW IT WORKS ?

1) START PHASE - APPLICATION BYTE CODE ANALYSIS

UNCOMPRESS APK

APK FILE

ANDROID API/STUB

DEX DISASSEMBLER

notify

SAST

Application
 Graph Statically built

DEX DISASSEMBLER

SAST

FILE 
 ANALYZER

1 2 4 3

Update app
 graph

DEVICE

slide-36
SLIDE 36

HOW IT WORKS ?

2) INSTRUMENTATION PHASE - BEFORE RUN

notify Categorized Files Application
 +
 Android API
 Graph Statically built

DYNAMIC LOADER BYTE ARRAY CLASSIFIER FILE ACCESS KEY STORES

1 MODULAR HEURISTIC ENGINE

slide-37
SLIDE 37

HOW IT WORKS ?

notify Categorized Files Application
 +
 Android API
 Graph Statically built

DYNAMIC LOADER NATIVE LIB / JNI FILE ACCESS DESCRIPTORS STREAMS

Search pattern &
 method Correlate static files
 Bind a file to a method

KEY STORE

1 2 2’ MODULAR HEURISTIC ENGINE

2) INSTRUMENTATION PHASE - BEFORE RUN

slide-38
SLIDE 38

HOW IT WORKS ?

Categorized Files Application
 +
 Android API
 Graph Statically built

DYNAMIC LOADER NATIVE LIB / JNI FILE ACCESS DESCRIPTORS STREAMS KEY STORE

HOOK 
 MANAGER

Get method
 signature

ASK FOR INSTRUMENTATION

Generate
 frida code

HOOKS

3 4 5 MODULAR HEURISTIC ENGINE

2) INSTRUMENTATION PHASE - BEFORE RUN

slide-39
SLIDE 39

HOW IT WORKS ?

2) INSTRUMENTATION PHASE - RUNTIME

Application
 +
 Android API
 Graph Statically built

DYNAMIC LOADER NATIVE LIB / JNI FILE ACCESS DESCRIPTORS STREAMS KEY STORE

HOOK 
 MANAGER DEVICE

HOOKS

Starts app &
 deploys Hook data : args, 
 return, this, …

6 7

Correlate graph &
 intercepted data

8 MODULAR HEURISTIC ENGINE

slide-40
SLIDE 40

HOW IT WORKS ?

Application
 +
 Android API
 Graph Statically built

DYNAMIC LOADER NATIVE LIB / JNI FILE ACCESS DESCRIPTORS STREAMS KEY STORE

HOOK 
 MANAGER DEVICE

HOOKS

Starts app &
 deploys Hook data : args, 
 return, this, …

6 7

Correlate 
 intercepted data

8

Push discovered 
 elements & tag node

9 MODULAR HEURISTIC ENGINE

2) INSTRUMENTATION PHASE - RUNTIME

slide-41
SLIDE 41

« HEY ! GIVE ME THE MOST COMPLETE PICTURE OF THE APPLICATION »

slide-42
SLIDE 42

DRAW A COMPLETE PICTURE OF THE APPLICATION

MIX * ANALYSIS WITH INSTRUMENTATION RESULTS

GRAPHS

STATIC ANALYSIS

ANDROID
 INTERNALS CALLS STATIC VALUES

slide-43
SLIDE 43

DRAW A COMPLETE PICTURE OF THE APPLICATION

GRAPHS SYMBOLIC VALUES

STATIC ANALYSIS DYNAMIC ANALYSIS

ANDROID
 INTERNALS CALLS STATIC VALUES SOLVE CONSTRAINT …

MIX * ANALYSIS WITH INSTRUMENTATION RESULTS

slide-44
SLIDE 44

DRAW A COMPLETE PICTURE OF THE APPLICATION

GRAPHS SYMBOLIC VALUES

STATIC ANALYSIS DYNAMIC ANALYSIS

ANDROID
 INTERNALS CALLS STATIC VALUES

FILE ANALYSIS

KEYSTORES PROPERTIES LIBS & DEX … STRUCTURES SOLVE CONSTRAINT …

MIX * ANALYSIS WITH INSTRUMENTATION RESULTS

slide-45
SLIDE 45

DRAW A COMPLETE PICTURE OF THE APPLICATION

GRAPHS SYMBOLIC VALUES PARAMS 
 & RETURNS
 VALUES

STATIC ANALYSIS DYNAMIC ANALYSIS DYNAMIC INSTRUMENTATION

ANDROID
 INTERNALS CALLS STATIC VALUES DATA 
 READ/WRITE SECONDARY
 DEX & LIBS STACK TRACE RUNTIME CONTEXT

FILE ANALYSIS

KEYSTORES PROPERTIES LIBS & DEX … STRUCTURES SOLVE CONSTRAINT …

MIX * ANALYSIS WITH INSTRUMENTATION RESULTS

slide-46
SLIDE 46

CASE #1

DYNAMIC UPDATE OF XREF WITH INVOKED METHODS

slide-47
SLIDE 47

METHOD INVOKED DYNAMICALLY

  • Method.invoke()
  • Class.getMethod()

From a static point-of-view only two methods are called :

Smali code

DYNAMIC UPDATE OF « XREF FROM »WITH INVOKED METHODS

slide-48
SLIDE 48

DYNAMIC UPDATE OF « XREF FROM »WITH INVOKED METHODS

DYNAMIC UPDATE OF XREF WITH INVOKED METHODS

GRAPHS PARAMS 
 & RETURNS
 VALUES

STATIC ANALYSIS DYNAMIC INSTRUMENTATION

ANDROID
 INTERNALS CALLS STATIC VALUES DATA 
 READ/WRITE SECONDARY
 DEX & LIBS STACK TRACE RUNTIME CONTEXT

slide-49
SLIDE 49

DYNAMIC UPDATE OF « XREF FROM »WITH INVOKED METHODS

DYNAMIC UPDATE OF XREF WITH INVOKED METHODS

GRAPHS PARAMS 
 & RETURNS
 VALUES

STATIC ANALYSIS DYNAMIC INSTRUMENTATION

ANDROID
 INTERNALS CALLS STATIC VALUES DATA 
 READ/WRITE SECONDARY
 DEX & LIBS STACK TRACE RUNTIME CONTEXT

REFLECTION API INSTRUMENTED

slide-50
SLIDE 50

DYNAMIC UPDATE OF « XREF FROM »WITH INVOKED METHODS

DYNAMIC UPDATE OF XREF WITH INVOKED METHODS

GRAPHS PARAMS 
 & RETURNS
 VALUES

STATIC ANALYSIS DYNAMIC INSTRUMENTATION

ANDROID
 INTERNALS CALLS STATIC VALUES DATA 
 READ/WRITE SECONDARY
 DEX & LIBS STACK TRACE RUNTIME CONTEXT

REFLECTION API INSTRUMENTED START APP

slide-51
SLIDE 51

DYNAMIC UPDATE OF « XREF FROM »WITH INVOKED METHODS

DYNAMIC UPDATE OF XREF WITH INVOKED METHODS

GRAPHS PARAMS 
 & RETURNS
 VALUES

STATIC ANALYSIS DYNAMIC INSTRUMENTATION

ANDROID
 INTERNALS CALLS STATIC VALUES DATA 
 READ/WRITE SECONDARY
 DEX & LIBS STACK TRACE RUNTIME CONTEXT

REFLECTION API INSTRUMENTED START APP HOOK TRIGGED

slide-52
SLIDE 52

DYNAMIC UPDATE OF « XREF FROM »WITH INVOKED METHODS

DYNAMIC UPDATE OF XREF WITH INVOKED METHODS

GRAPHS PARAMS 
 & RETURNS
 VALUES

STATIC ANALYSIS DYNAMIC INSTRUMENTATION

ANDROID
 INTERNALS CALLS STATIC VALUES DATA 
 READ/WRITE SECONDARY
 DEX & LIBS STACK TRACE RUNTIME CONTEXT

REFLECTION API INSTRUMENTED START APP HOOK TRIGGED HOOK GATHERS METHOD INFO

slide-53
SLIDE 53

DYNAMIC UPDATE OF « XREF FROM »WITH INVOKED METHODS

DYNAMIC UPDATE OF XREF WITH INVOKED METHODS

GRAPHS PARAMS 
 & RETURNS
 VALUES

STATIC ANALYSIS DYNAMIC INSTRUMENTATION

ANDROID
 INTERNALS CALLS STATIC VALUES DATA 
 READ/WRITE SECONDARY
 DEX & LIBS STACK TRACE RUNTIME CONTEXT

REFLECTION API INSTRUMENTED START APP HOOK TRIGGED HOOK SHOWS STACK TRACE HOOK GATHERS METHOD INFO

slide-54
SLIDE 54

DYNAMIC UPDATE OF « XREF FROM »WITH INVOKED METHODS

DYNAMIC UPDATE OF XREF WITH INVOKED METHODS

GRAPHS PARAMS 
 & RETURNS
 VALUES

STATIC ANALYSIS DYNAMIC INSTRUMENTATION

ANDROID
 INTERNALS CALLS STATIC VALUES DATA 
 READ/WRITE SECONDARY
 DEX & LIBS STACK TRACE RUNTIME CONTEXT

REFLECTION API INSTRUMENTED START APP HOOK TRIGGED HOOK SHOWS STACK TRACE HOOK GATHERS METHOD INFO HEURISTIC ENGINE UPDATE DB

slide-55
SLIDE 55

BEFORE
 RUNTIME

DYNAMIC UPDATE OF THE CALL GRAPH

METHOD INVOKED DYNAMICALLY

slide-56
SLIDE 56

BEFORE
 RUNTIME AFTER RUNTIME

METHOD INVOKED DYNAMICALLY

DYNAMIC UPDATE OF THE CALL GRAPH

slide-57
SLIDE 57

UPDATE OF THE CALL GRAPH

Green nodes are internal Android or Java methods Pink node are invoked dynamically and not discovered statically Gray nodes have been discovered statically DYNAMIC UPDATE OF THE CALL GRAPH

slide-58
SLIDE 58

DEMO #2

DYNAMIC UPDATE OF XREFS 
 WITH INVOKED METHODS

DYNAMIC UPDATE OF THE CALL GRAPH

slide-59
SLIDE 59

CASE #2

ANALYZE DEX FILE LOADED DYNAMICALLY

slide-60
SLIDE 60

ANALYZE DEX FILE LOADED DYNAMICALLY

ANALYZE DEX FILE LOADED DYNAMICALLY

PARAMS 
 & RETURNS
 VALUES

DYNAMIC INSTRUMENTATION

DATA 
 READ/WRITE SECONDARY
 DEX & LIBS STACK TRACE RUNTIME CONTEXT

FILE ANALYSIS

LIBS & DEX CLASS GRAPH

STATIC ANALYSIS

ANDROID
 INTERNALS CALLS

slide-61
SLIDE 61

ANALYZE DEX FILE LOADED DYNAMICALLY

ANALYZE DEX FILE LOADED DYNAMICALLY

PARAMS 
 & RETURNS
 VALUES

DYNAMIC INSTRUMENTATION

DATA 
 READ/WRITE SECONDARY
 DEX & LIBS STACK TRACE RUNTIME CONTEXT

FILE ANALYSIS

LIBS & DEX CLASS GRAPH

STATIC ANALYSIS

ANDROID
 INTERNALS CALLS

DEX LOADING API INSTRUMENTED START APP

slide-62
SLIDE 62

ANALYZE DEX FILE LOADED DYNAMICALLY

ANALYZE DEX FILE LOADED DYNAMICALLY

PARAMS 
 & RETURNS
 VALUES

DYNAMIC INSTRUMENTATION

DATA 
 READ/WRITE SECONDARY
 DEX & LIBS STACK TRACE RUNTIME CONTEXT

FILE ANALYSIS

LIBS & DEX CLASS GRAPH

STATIC ANALYSIS

ANDROID
 INTERNALS CALLS

DEX LOADING API INSTRUMENTED DEXFILE CONSTRUCTORS TRIGGED START APP

slide-63
SLIDE 63

ANALYZE DEX FILE LOADED DYNAMICALLY

ANALYZE DEX FILE LOADED DYNAMICALLY

PARAMS 
 & RETURNS
 VALUES

DYNAMIC INSTRUMENTATION

DATA 
 READ/WRITE SECONDARY
 DEX & LIBS STACK TRACE RUNTIME CONTEXT

FILE ANALYSIS

LIBS & DEX CLASS GRAPH

STATIC ANALYSIS

ANDROID
 INTERNALS CALLS

DEX LOADING API INSTRUMENTED DEXFILE CONSTRUCTORS TRIGGED START APP HOOKS ASK IF DEX FILES ARE ALREADY KNOWN

Dex File already 
 analyzed ?

slide-64
SLIDE 64

ANALYZE DEX FILE LOADED DYNAMICALLY

ANALYZE DEX FILE LOADED DYNAMICALLY

PARAMS 
 & RETURNS
 VALUES

DYNAMIC INSTRUMENTATION

DATA 
 READ/WRITE SECONDARY
 DEX & LIBS STACK TRACE RUNTIME CONTEXT

FILE ANALYSIS

LIBS & DEX CLASS GRAPH

STATIC ANALYSIS

ANDROID
 INTERNALS CALLS

DEX LOADING API INSTRUMENTED DEXFILE CONSTRUCTORS TRIGGED START APP HOOKS ASK IF DEX FILES ARE ALREADY KNOWN

Dex File already 
 analyzed ?

COPY OR GET DEX FILE

slide-65
SLIDE 65

ANALYZE DEX FILE LOADED DYNAMICALLY

ANALYZE DEX FILE LOADED DYNAMICALLY

PARAMS 
 & RETURNS
 VALUES

DYNAMIC INSTRUMENTATION

DATA 
 READ/WRITE SECONDARY
 DEX & LIBS STACK TRACE RUNTIME CONTEXT

FILE ANALYSIS

LIBS & DEX CLASS GRAPH

STATIC ANALYSIS

ANDROID
 INTERNALS CALLS

DEX LOADING API INSTRUMENTED DEXFILE CONSTRUCTORS TRIGGED START APP HOOKS ASK IF DEX FILES ARE ALREADY KNOWN

Dex File already 
 analyzed ?

COPY OR GET DEX FILE DECOMPILE DEX & UPDATE DB

slide-66
SLIDE 66

ANALYZE DEX FILE LOADED DYNAMICALLY

slide-67
SLIDE 67

CASE #3

BYTECODE CLEANER

slide-68
SLIDE 68

BYTECODE CLEANER

BYTE CODE CLEANER : REMOVE NOP

BEFORE

slide-69
SLIDE 69

BYTECODE CLEANER

BYTE CODE CLEANER : REMOVE NOP

BEFORE AFTER

slide-70
SLIDE 70

REMOVE USELESS GOTO

BEFORE

BYTECODE CLEANER

slide-71
SLIDE 71

REMOVE USELESS GOTO

BEFORE AFTER

BYTECODE CLEANER

slide-72
SLIDE 72

DEXCALIBUR - NEXT STEPS

IMPROVEMENTS

  • Use my own customizable Dex Decompiler (or use LIEF)?
  • Add r2 binding and native hooks
  • HTTP communications & Intent grabbing
  • Bytecode & native symbolic exec (Z3) ?
  • Bytecode emulation (SmaliVM @CalebFenton)?
  • Offers native instruction hooking (QBDI)?
  • And fuzz (afl-fuzz params + feedback given by hooking)?
slide-73
SLIDE 73

DEXCALIBUR

Thanks

slide-74
SLIDE 74

Q&A

slide-75
SLIDE 75

ANNEXES

slide-76
SLIDE 76

HOW TO INSTALL ?

HOW TO INSTALL ?

  • Ensure you have the requirements (Frida, NodeJS, apktool)
  • Or install from DockerHub

git clone https://github.com/FrenchYeti/dexcalibur.git cd dexcalibur npm install docker pull frenchyeti/dexcalibur docker run -it \

  • v <workspace>:/home/dexcalibur/workspace \
  • p 8080:8000 —dev=<device> \

frenchyeti/dexcalibur

slide-77
SLIDE 77

DEXCALIBUR - WHAT IS IT ?

SEARCH BYTE ARRAY