Top Banner
Dalvik Executable (DEX) Trick: Hidex Axelle Apvrille Insomni’Hack, March 2014
41

Dalvik Executable (DEX) Trick: Hidex · PDF fileInsomni’Hack 2014 - A. Apvrille 2/18. Quick Android background Android mobile phone Applications: APK Inside the APK: DEX Dalvik Executable

Mar 29, 2018

Download

Documents

phamthu
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Dalvik Executable (DEX) Trick: Hidex · PDF fileInsomni’Hack 2014 - A. Apvrille 2/18. Quick Android background Android mobile phone Applications: APK Inside the APK: DEX Dalvik Executable

Dalvik Executable (DEX) Trick: Hidex

Axelle Apvrille

Insomni’Hack, March 2014

Page 2: Dalvik Executable (DEX) Trick: Hidex · PDF fileInsomni’Hack 2014 - A. Apvrille 2/18. Quick Android background Android mobile phone Applications: APK Inside the APK: DEX Dalvik Executable

Who am i?

whoami

#!/usr/bin/perl -w # recently converting to Python!

my $self = {

realname => ’Axelle Apvrille’,

nickname => ’Crypto Girl’,

twitter => ’@cryptax’,

job => ’Malware Analyst and Researcher’,

focus => ’Misc malware = mobile, Internet of Things...’,

title => ’Senior’, # white hair

company => ’Fortinet, FortiGuard Labs’,

before => ’Security software eng.: protocols, crypto...’,

languages => ’French, English, Hexadecimal :)’

};

Insomni’Hack 2014 - A. Apvrille 2/18

Page 3: Dalvik Executable (DEX) Trick: Hidex · PDF fileInsomni’Hack 2014 - A. Apvrille 2/18. Quick Android background Android mobile phone Applications: APK Inside the APK: DEX Dalvik Executable

Quick Android background

Android mobile phone

Applications: APK

Inside the APK: DEX

Dalvik Executable with Dalvik bytecodedex.035.V..d..$g

Inside the DEX

Classes, methods, fields, strings’bytes’, ’** I am Mr Hyde **’, ’<init>’...

Insomni’Hack 2014 - A. Apvrille 3/18

Page 4: Dalvik Executable (DEX) Trick: Hidex · PDF fileInsomni’Hack 2014 - A. Apvrille 2/18. Quick Android background Android mobile phone Applications: APK Inside the APK: DEX Dalvik Executable

Quick Android background

Android mobile phone Applications: APK

Inside the APK: DEX

Dalvik Executable with Dalvik bytecodedex.035.V..d..$g

Inside the DEX

Classes, methods, fields, strings’bytes’, ’** I am Mr Hyde **’, ’<init>’...

Insomni’Hack 2014 - A. Apvrille 3/18

Page 5: Dalvik Executable (DEX) Trick: Hidex · PDF fileInsomni’Hack 2014 - A. Apvrille 2/18. Quick Android background Android mobile phone Applications: APK Inside the APK: DEX Dalvik Executable

Quick Android background

Android mobile phone Applications: APK

Inside the APK: DEX

Dalvik Executable with Dalvik bytecodedex.035.V..d..$g

Inside the DEX

Classes, methods, fields, strings’bytes’, ’** I am Mr Hyde **’, ’<init>’...

Insomni’Hack 2014 - A. Apvrille 3/18

Page 6: Dalvik Executable (DEX) Trick: Hidex · PDF fileInsomni’Hack 2014 - A. Apvrille 2/18. Quick Android background Android mobile phone Applications: APK Inside the APK: DEX Dalvik Executable

Quick Android background

Android mobile phone Applications: APK

Inside the APK: DEX

Dalvik Executable with Dalvik bytecodedex.035.V..d..$g

Inside the DEX

Classes, methods, fields, strings’bytes’, ’** I am Mr Hyde **’, ’<init>’...

Insomni’Hack 2014 - A. Apvrille 3/18

Page 7: Dalvik Executable (DEX) Trick: Hidex · PDF fileInsomni’Hack 2014 - A. Apvrille 2/18. Quick Android background Android mobile phone Applications: APK Inside the APK: DEX Dalvik Executable

Part 1: Hiding a method

Insomni’Hack 2014 - A. Apvrille 4/18

Hiding a method

Page 8: Dalvik Executable (DEX) Trick: Hidex · PDF fileInsomni’Hack 2014 - A. Apvrille 2/18. Quick Android background Android mobile phone Applications: APK Inside the APK: DEX Dalvik Executable

Part 1: goal and demo

Goal

1. Write an app

2. Hide a given method of the app to disassemblers

Demo - source code:https://github.com/cryptax/dextools

1. Example method thisishidden():I Logs "In thisishidden(): set mrhyde=" etcI Accesses file ”identity” in app dirI Exact prototype: public void thisishidden(boolean

ismrhyde)

2. Hide thisishidden(): Baksmali, dex2jar, Androguard, JEB,IDA Pro do not see it!

3. Back: reveal thisishidden()

Insomni’Hack 2014 - A. Apvrille 5/18

Page 9: Dalvik Executable (DEX) Trick: Hidex · PDF fileInsomni’Hack 2014 - A. Apvrille 2/18. Quick Android background Android mobile phone Applications: APK Inside the APK: DEX Dalvik Executable

Part 1: goal and demo

Goal

1. Write an app

2. Hide a given method of the app to disassemblers

Demo - source code:https://github.com/cryptax/dextools

1. Example method thisishidden():I Logs "In thisishidden(): set mrhyde=" etcI Accesses file ”identity” in app dirI Exact prototype: public void thisishidden(boolean

ismrhyde)

2. Hide thisishidden(): Baksmali, dex2jar, Androguard, JEB,IDA Pro do not see it!

3. Back: reveal thisishidden()

Insomni’Hack 2014 - A. Apvrille 5/18

Page 10: Dalvik Executable (DEX) Trick: Hidex · PDF fileInsomni’Hack 2014 - A. Apvrille 2/18. Quick Android background Android mobile phone Applications: APK Inside the APK: DEX Dalvik Executable

How it works / inside class data items

method ids

Encoded Method A

Encoded Method B Encoded Method C

Code

Code of A

Code of B

Code of C

method idx

code offset

method idx diff method idx diff

Encoded Method B

method idx diff

Code of B

Insomni’Hack 2014 - A. Apvrille 6/18

Page 11: Dalvik Executable (DEX) Trick: Hidex · PDF fileInsomni’Hack 2014 - A. Apvrille 2/18. Quick Android background Android mobile phone Applications: APK Inside the APK: DEX Dalvik Executable

How it works / inside class data items

method ids

Encoded Method A Encoded Method B

Encoded Method C

Code

Code of A

Code of B

Code of C

method idx

code offset

method idx diff

method idx diff

Encoded Method B

method idx diff

Code of B

Insomni’Hack 2014 - A. Apvrille 6/18

Page 12: Dalvik Executable (DEX) Trick: Hidex · PDF fileInsomni’Hack 2014 - A. Apvrille 2/18. Quick Android background Android mobile phone Applications: APK Inside the APK: DEX Dalvik Executable

How it works / inside class data items

method ids

Encoded Method A Encoded Method B Encoded Method C

Code

Code of A

Code of B

Code of C

method idx

code offset

method idx diff method idx diff

Encoded Method B

method idx diff

Code of B

Insomni’Hack 2014 - A. Apvrille 6/18

Page 13: Dalvik Executable (DEX) Trick: Hidex · PDF fileInsomni’Hack 2014 - A. Apvrille 2/18. Quick Android background Android mobile phone Applications: APK Inside the APK: DEX Dalvik Executable

How it works / inside class data items

method ids

Encoded Method A

Encoded Method B

Encoded Method C

Code

Code of A

Code of B

Code of C

method idx

code offset

method idx diff method idx diff

Encoded Method B

method idx diff

Code of B

Insomni’Hack 2014 - A. Apvrille 6/18

Page 14: Dalvik Executable (DEX) Trick: Hidex · PDF fileInsomni’Hack 2014 - A. Apvrille 2/18. Quick Android background Android mobile phone Applications: APK Inside the APK: DEX Dalvik Executable

How it works / inside class data items

method ids

Encoded Method A

Encoded Method B

Encoded Method C

Code

Code of A

Code of B

Code of C

method idx

code offset

method idx diff method idx diff

Encoded Method B

method idx diff

Code of B

Insomni’Hack 2014 - A. Apvrille 6/18

Page 15: Dalvik Executable (DEX) Trick: Hidex · PDF fileInsomni’Hack 2014 - A. Apvrille 2/18. Quick Android background Android mobile phone Applications: APK Inside the APK: DEX Dalvik Executable

Hiding - Advanced

Access flags

You may modify itbut must remain with the same category of methods:

I direct methods: static, private, constructors

I virtual methods: others ;)

Single method to hide?

In class data item, set direct methods size (orvirtual methods size)+ nullify encoded method

Insomni’Hack 2014 - A. Apvrille 7/18

Page 16: Dalvik Executable (DEX) Trick: Hidex · PDF fileInsomni’Hack 2014 - A. Apvrille 2/18. Quick Android background Android mobile phone Applications: APK Inside the APK: DEX Dalvik Executable

Re-build the APK

Build a valid DEXI Compute the SHA-1 of the new DEX → Write to header

I Compute the checksum of the new DEX → Write to header

I hidex or dexrehash inhttps://github.com/cryptax/dextools

Re-package: easy

I In original APK, replace DEX with new one

I Zip, sign package (jarsigner)

Did you know?

You can write a .dex ’manually’ using Yasm - thanks @angealbertiniHello World: 695 bytes

Insomni’Hack 2014 - A. Apvrille 8/18

Page 17: Dalvik Executable (DEX) Trick: Hidex · PDF fileInsomni’Hack 2014 - A. Apvrille 2/18. Quick Android background Android mobile phone Applications: APK Inside the APK: DEX Dalvik Executable

Part 2: calling the hidden method - PoC

Insomni’Hack 2014 - A. Apvrille 9/18

Calling the hidden method

Page 18: Dalvik Executable (DEX) Trick: Hidex · PDF fileInsomni’Hack 2014 - A. Apvrille 2/18. Quick Android background Android mobile phone Applications: APK Inside the APK: DEX Dalvik Executable

Part 2: PoC

calling thisishidden()

I The method is hidden to disassemblers

I ... but it can be run!

The strange case of Dr Jekyll and MrHyde – R. Stevenson

I Split personalities: Dr Jekyll or MrHyde

I Only one way to change into MrHyde:call thisishidden()

I Current personality displayed in mainactivity

Insomni’Hack 2014 - A. Apvrille 10/18

Page 19: Dalvik Executable (DEX) Trick: Hidex · PDF fileInsomni’Hack 2014 - A. Apvrille 2/18. Quick Android background Android mobile phone Applications: APK Inside the APK: DEX Dalvik Executable

Part 2: Demo

I/HideAndSeek( 851): invoking thisishidden() with arg=true

I/HideAndSeek( 851): In thisishidden(): set mrhyde=true

I/HideAndSeek( 851): thisishidden(): context=android.app.Application@416ff148

I/HideAndSeek( 851): thisishidden(): dir=/data/data/com.fortiguard.hideandseek/files

I/HideAndSeek( 851): thisishidden(): file: /data/data/com.fortiguard.hideandseek/files/identity

I/HideAndSeek( 851): thisishidden(): done

Insomni’Hack 2014 - A. Apvrille 11/18

Page 20: Dalvik Executable (DEX) Trick: Hidex · PDF fileInsomni’Hack 2014 - A. Apvrille 2/18. Quick Android background Android mobile phone Applications: APK Inside the APK: DEX Dalvik Executable

Implementation... technical but illustrated ;)

MrHyde

Reflection

openNonAsset()

classes.dex

invoke

Patch

openDexFile()

defineClass()

ModifiedgetDeclaredConstructor()

Modified

MrHyde object

newInstance()

getDeclaredMethods()

thisishidden() invoke

Instance field Instance fieldDoes not work!

Static field Static field

Use shared files

Insomni’Hack 2014 - A. Apvrille 12/18

Page 21: Dalvik Executable (DEX) Trick: Hidex · PDF fileInsomni’Hack 2014 - A. Apvrille 2/18. Quick Android background Android mobile phone Applications: APK Inside the APK: DEX Dalvik Executable

Implementation... technical but illustrated ;)

MrHyde

Reflection

openNonAsset()

classes.dex

invoke

Patch

openDexFile()

defineClass()

ModifiedgetDeclaredConstructor()

Modified

MrHyde object

newInstance()

getDeclaredMethods()

thisishidden() invoke

Instance field Instance fieldDoes not work!

Static field Static field

Use shared files

Insomni’Hack 2014 - A. Apvrille 12/18

Page 22: Dalvik Executable (DEX) Trick: Hidex · PDF fileInsomni’Hack 2014 - A. Apvrille 2/18. Quick Android background Android mobile phone Applications: APK Inside the APK: DEX Dalvik Executable

Implementation... technical but illustrated ;)

MrHyde

Reflection

openNonAsset()

classes.dex

invoke

Patch

openDexFile()

defineClass()

ModifiedgetDeclaredConstructor()

Modified

MrHyde object

newInstance()

getDeclaredMethods()

thisishidden() invoke

Instance field Instance fieldDoes not work!

Static field Static field

Use shared files

Insomni’Hack 2014 - A. Apvrille 12/18

Page 23: Dalvik Executable (DEX) Trick: Hidex · PDF fileInsomni’Hack 2014 - A. Apvrille 2/18. Quick Android background Android mobile phone Applications: APK Inside the APK: DEX Dalvik Executable

Implementation... technical but illustrated ;)

MrHyde

Reflection

openNonAsset()

classes.dex

invoke

Patch

openDexFile()

defineClass()

ModifiedgetDeclaredConstructor()

Modified

MrHyde object

newInstance()

getDeclaredMethods()

thisishidden() invoke

Instance field Instance fieldDoes not work!

Static field Static field

Use shared files

Insomni’Hack 2014 - A. Apvrille 12/18

Page 24: Dalvik Executable (DEX) Trick: Hidex · PDF fileInsomni’Hack 2014 - A. Apvrille 2/18. Quick Android background Android mobile phone Applications: APK Inside the APK: DEX Dalvik Executable

Implementation... technical but illustrated ;)

MrHyde

Reflection

openNonAsset()

classes.dex

invoke

Patch

openDexFile()

defineClass()

ModifiedgetDeclaredConstructor()

Modified

MrHyde object

newInstance()

getDeclaredMethods()

thisishidden() invoke

Instance field Instance fieldDoes not work!

Static field Static field

Use shared files

Insomni’Hack 2014 - A. Apvrille 12/18

Page 25: Dalvik Executable (DEX) Trick: Hidex · PDF fileInsomni’Hack 2014 - A. Apvrille 2/18. Quick Android background Android mobile phone Applications: APK Inside the APK: DEX Dalvik Executable

Implementation... technical but illustrated ;)

MrHyde

Reflection

openNonAsset()

classes.dex

invoke

Patch

openDexFile()

defineClass()

ModifiedgetDeclaredConstructor()

Modified

MrHyde object

newInstance()

getDeclaredMethods()

thisishidden() invoke

Instance field Instance fieldDoes not work!

Static field Static field

Use shared files

Insomni’Hack 2014 - A. Apvrille 12/18

Page 26: Dalvik Executable (DEX) Trick: Hidex · PDF fileInsomni’Hack 2014 - A. Apvrille 2/18. Quick Android background Android mobile phone Applications: APK Inside the APK: DEX Dalvik Executable

Implementation... technical but illustrated ;)

MrHyde

Reflection

openNonAsset()

classes.dex

invoke

Patch

openDexFile()

defineClass()

ModifiedgetDeclaredConstructor()

Modified

MrHyde object

newInstance()

getDeclaredMethods()

thisishidden() invoke

Instance field Instance fieldDoes not work!

Static field Static field

Use shared files

Insomni’Hack 2014 - A. Apvrille 12/18

Page 27: Dalvik Executable (DEX) Trick: Hidex · PDF fileInsomni’Hack 2014 - A. Apvrille 2/18. Quick Android background Android mobile phone Applications: APK Inside the APK: DEX Dalvik Executable

Implementation... technical but illustrated ;)

MrHyde

Reflection

openNonAsset()

classes.dex

invoke

Patch

openDexFile()

defineClass()

Modified

getDeclaredConstructor()

Modified

MrHyde object

newInstance()

getDeclaredMethods()

thisishidden() invoke

Instance field Instance fieldDoes not work!

Static field Static field

Use shared files

Insomni’Hack 2014 - A. Apvrille 12/18

Page 28: Dalvik Executable (DEX) Trick: Hidex · PDF fileInsomni’Hack 2014 - A. Apvrille 2/18. Quick Android background Android mobile phone Applications: APK Inside the APK: DEX Dalvik Executable

Implementation... technical but illustrated ;)

MrHyde

Reflection

openNonAsset()

classes.dex

invoke

Patch

openDexFile()

defineClass()

ModifiedgetDeclaredConstructor()

Modified

MrHyde object

newInstance()

getDeclaredMethods()

thisishidden() invoke

Instance field Instance fieldDoes not work!

Static field Static field

Use shared files

Insomni’Hack 2014 - A. Apvrille 12/18

Page 29: Dalvik Executable (DEX) Trick: Hidex · PDF fileInsomni’Hack 2014 - A. Apvrille 2/18. Quick Android background Android mobile phone Applications: APK Inside the APK: DEX Dalvik Executable

Implementation... technical but illustrated ;)

MrHyde

Reflection

openNonAsset()

classes.dex

invoke

Patch

openDexFile()

defineClass()

Modified

getDeclaredConstructor()

Modified

MrHyde object

newInstance()

getDeclaredMethods()

thisishidden() invoke

Instance field Instance fieldDoes not work!

Static field Static field

Use shared files

Insomni’Hack 2014 - A. Apvrille 12/18

Page 30: Dalvik Executable (DEX) Trick: Hidex · PDF fileInsomni’Hack 2014 - A. Apvrille 2/18. Quick Android background Android mobile phone Applications: APK Inside the APK: DEX Dalvik Executable

Implementation... technical but illustrated ;)

MrHyde

Reflection

openNonAsset()

classes.dex

invoke

Patch

openDexFile()

defineClass()

Modified

getDeclaredConstructor()

Modified

MrHyde object

newInstance()

getDeclaredMethods()

thisishidden() invoke

Instance field Instance fieldDoes not work!

Static field Static field

Use shared files

Insomni’Hack 2014 - A. Apvrille 12/18

Page 31: Dalvik Executable (DEX) Trick: Hidex · PDF fileInsomni’Hack 2014 - A. Apvrille 2/18. Quick Android background Android mobile phone Applications: APK Inside the APK: DEX Dalvik Executable

Implementation... technical but illustrated ;)

MrHyde

Reflection

openNonAsset()

classes.dex

invoke

Patch

openDexFile()

defineClass()

Modified

getDeclaredConstructor()

Modified

MrHyde object

newInstance()

getDeclaredMethods()

thisishidden() invoke

Instance field Instance fieldDoes not work!

Static field Static field

Use shared files

Insomni’Hack 2014 - A. Apvrille 12/18

Page 32: Dalvik Executable (DEX) Trick: Hidex · PDF fileInsomni’Hack 2014 - A. Apvrille 2/18. Quick Android background Android mobile phone Applications: APK Inside the APK: DEX Dalvik Executable

Implementation... technical but illustrated ;)

MrHyde

Reflection

openNonAsset()

classes.dex

invoke

Patch

openDexFile()

defineClass()

ModifiedgetDeclaredConstructor()

Modified

MrHyde object

newInstance()

getDeclaredMethods()

thisishidden() invoke

Instance field Instance field

Does not work!

Static field Static field

Use shared files

Insomni’Hack 2014 - A. Apvrille 12/18

Page 33: Dalvik Executable (DEX) Trick: Hidex · PDF fileInsomni’Hack 2014 - A. Apvrille 2/18. Quick Android background Android mobile phone Applications: APK Inside the APK: DEX Dalvik Executable

Implementation... technical but illustrated ;)

MrHyde

Reflection

openNonAsset()

classes.dex

invoke

Patch

openDexFile()

defineClass()

ModifiedgetDeclaredConstructor()

Modified

MrHyde object

newInstance()

getDeclaredMethods()

thisishidden() invoke

Instance field Instance fieldDoes not work!

Static field Static field

Use shared files

Insomni’Hack 2014 - A. Apvrille 12/18

Page 34: Dalvik Executable (DEX) Trick: Hidex · PDF fileInsomni’Hack 2014 - A. Apvrille 2/18. Quick Android background Android mobile phone Applications: APK Inside the APK: DEX Dalvik Executable

Implementation... technical but illustrated ;)

MrHyde

Reflection

openNonAsset()

classes.dex

invoke

Patch

openDexFile()

defineClass()

ModifiedgetDeclaredConstructor()

Modified

MrHyde object

newInstance()

getDeclaredMethods()

thisishidden() invoke

Instance field Instance fieldDoes not work!

Static field Static field

Use shared files

Insomni’Hack 2014 - A. Apvrille 12/18

Page 35: Dalvik Executable (DEX) Trick: Hidex · PDF fileInsomni’Hack 2014 - A. Apvrille 2/18. Quick Android background Android mobile phone Applications: APK Inside the APK: DEX Dalvik Executable

Implementation... technical but illustrated ;)

MrHyde

Reflection

openNonAsset()

classes.dex

invoke

Patch

openDexFile()

defineClass()

ModifiedgetDeclaredConstructor()

Modified

MrHyde object

newInstance()

getDeclaredMethods()

thisishidden() invoke

Instance field Instance fieldDoes not work!

Static field Static field

Use shared files

Insomni’Hack 2014 - A. Apvrille 12/18

Page 36: Dalvik Executable (DEX) Trick: Hidex · PDF fileInsomni’Hack 2014 - A. Apvrille 2/18. Quick Android background Android mobile phone Applications: APK Inside the APK: DEX Dalvik Executable

Status

It works :)

I Dex manipulation: working on all versions

I Calling hidden method: < 4.4.2.Prototypes for openDexFile and defineClass changed

I minor modif for defineClassI openDexFile no longer works on byte[]

Work in progress: looks feasible.

I Android Security Team notified in June 2013

Insomni’Hack 2014 - A. Apvrille 13/18

Page 37: Dalvik Executable (DEX) Trick: Hidex · PDF fileInsomni’Hack 2014 - A. Apvrille 2/18. Quick Android background Android mobile phone Applications: APK Inside the APK: DEX Dalvik Executable

Detecting hidden methods

How? Use ’--detect’ option in hidex.pl

$ ./hidex.pl --input classes.dex | grep -B 1 "WARNING"

$ ./nonreferenced-methods.sh classes.dex

I null code offset: just a hint

I null or negative method idx diff

I code offset or method id already referenced

I method id never referenced: beware, there are valid methodsnot implemented in the DEX.

Something is wrong with openNonAsset()

Class: Lcom../MrHyde; Method: openNonAsset Position: 0x2C99

WARNING: Code offset 0x13D8 ALREADY REFERENCED

Class: Lcom../MrHyde; Method: openNonAsset Position: 0x2C99

WARNING: method_idx_diff <= 0 detected

Class: Lcom../MrHyde; Method: openNonAsset Position: 0x2C99

WARNING: METHOD_IDX 22 ALREADY REFERENCED

Insomni’Hack 2014 - A. Apvrille 14/18

Page 38: Dalvik Executable (DEX) Trick: Hidex · PDF fileInsomni’Hack 2014 - A. Apvrille 2/18. Quick Android background Android mobile phone Applications: APK Inside the APK: DEX Dalvik Executable

Non Referenced Methods Detection results

Method Landroid/annotation/SuppressLint;->value is never used

Method Landroid/annotation/TargetApi;->value is never used

→ abstract methods indeed never used.

Method Lcom/fortiguard/hideandseek/MrHyde;->thisishidden is never used

→ hidden method!

Method Ljava/io/File;->delete is never used

Method Ljava/io/File;->exists is never used

Method Ljava/io/FileOutputStream;-><init> is never used

Method Ljava/io/FileOutputStream;->close is never used

Method Ljava/io/FileOutputStream;->write is never used

Method Ljava/lang/Object;->toString is never used

→ methods used only by the hidden method!

Insomni’Hack 2014 - A. Apvrille 15/18

Page 39: Dalvik Executable (DEX) Trick: Hidex · PDF fileInsomni’Hack 2014 - A. Apvrille 2/18. Quick Android background Android mobile phone Applications: APK Inside the APK: DEX Dalvik Executable

Reversing the hidden method

Fixing

I Implement method idx diff check?

I Implement code or method id duplicate references check?

Working around

I Unpatch the DEX: hidex.pl

I Disassemble bytecode at a given location: androdis.py

Insomni’Hack 2014 - A. Apvrille 16/18

Page 40: Dalvik Executable (DEX) Trick: Hidex · PDF fileInsomni’Hack 2014 - A. Apvrille 2/18. Quick Android background Android mobile phone Applications: APK Inside the APK: DEX Dalvik Executable

How about hiding strings?

Header section

string ids

”abc”

”blah”

”hello”

offset

alphabetic order

Data section

I No idx diff. No chaining.

I String as byte [] → not in strings list but visible in hex (e.gstrings Unix command)

I Encode, encrypt, obfuscate string → possible - nothingnew.

Insomni’Hack 2014 - A. Apvrille 17/18

Page 41: Dalvik Executable (DEX) Trick: Hidex · PDF fileInsomni’Hack 2014 - A. Apvrille 2/18. Quick Android background Android mobile phone Applications: APK Inside the APK: DEX Dalvik Executable

Thank You !

Where’s the source code?

https://github.com/cryptax/dextools

FortiGuard Labs

Follow us on twitter: @FortiGuardLabsor on our blog http://blog.fortinet.comMe: @cryptax or aapvrille at fortinet dot com

Useless/shameless/stupid speaker challenge

I told @angealbertini I could keep it under 20 slides ;)

Are those PowerPoint slides? No way! It’s LATEX+ TikZ + Beamer + Lobster

Insomni’Hack 2014 - A. Apvrille 18/18