Reverse engineering android apps

5,873
-1

Published on

With growth in app market it is essential to guard our android apps against possible threats, in this presentation we will walk through various tools and techniques which some one can use to reverse engineer an android app, we will see how some one can get access to APP DB, CODE, API, PREFERENCES.

We will also see different tools and techniques to guard our app against possible threats from code obfuscation with tools like dexgaurd to newer methods like verification of api calls using google play services.

This session was taken in Barcamp 13 bangalore http://barcampbangalore.org/bcb/bcb13/reverse-engineering-an-android-app-securing-your-android-apps-against-attacks
and bangalore android user group meetup Jan meetup http://www.meetup.com/blrdroid/events/100360682/

Published in: Technology
0 Comments
15 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
5,873
On Slideshare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
0
Comments
0
Likes
15
Embeds 0
No embeds

No notes for slide
  • Piracy is being address by google play licensing services but not that effective to stop piracyStealing you IP/Code
  • Progaurd is free and comes bundle with android SDKDexgaurd by same author of progaurdAllatori is paid
  • All Free tool except IDA PROAPK Tool internally uses SmaliAndroid Guard is python based tool with GUI which internally uses dex2gaurd smalietcIt works only on linux, difficult to install, A VM with fully configured android guard is available on http://www.honeynet.org/downloads/Android.tar.gz
  • AAPT (Android application packaging tool) converts resources reference into R.Java and compiled resources (Manifest)Java Compiler takes, R.java, Application Source code and java interfaces to generate class fileDx tool takes this .class files and 3rd party libraries and .class files to convert into dex files.so = System Objectshttp://developer.android.com/tools/building/index.html#detailed-build
  • Lets Reverse engineer an android app
  • Federal offence in some countriesUse this tools for securing your own apps
  • ReadSmali when de-compilation fails (Dex to smali)Multiple methods to extract APK1 pulling from device – Connect USB-Cable– Use ADB (Android Debug Bridge) from SDK– No Google Play on emulator (AVD)2. Directly downloading via googleplaypythonapi from Google Play– Configured Google Account with connected https://github.com/egirault/googleplay-apiAndroid ID3. Download from Web– Alternative source– Capture transfer to
  • Progaurd is simple protection tool available in android SDKIt not only acts as obfuscator but it is also a Shrinker and optimizer You can reduce size of your APK with progaurd.It is free to use and effectiveNo String encryption and advance obfuscation techniquesProgaurd can be configured to run in android during build process when you generate APKLets see how we can enable progaurd
  • Lets see a sample APK With progaurd enabled
  • Commercial tool by creator of progaurdAll features of progaurdAdvance obfuscation techniques with String encryption api hiding tamper detection etcLets see a apk obfuscated with dexgaurd
  • Other techniques to protect your Android App Code
  • New method for verifying backend calls by google play serviceVery easy to integrate works on all phones running google play services with android 2.2 and aboveNo prompting for asking anything with user runs in background Register your android app in googleapi console make client id for web application and one for android application, give your APK Signing key MD5 to protect unauthorized accessIn Android app call GoogleAuthUtil.getToken() method passing scope argument value as audience:server:client_id:X.apps.googleusercontent.com(where X is client id of your web app)User will not be prompted as system looks your server client id and since you are in the same app it gives you the token. Send this token along with your api parameters In your backend verify Access token signature with google public keyFrom the token (JSON PayLoad) get field name audazp and emailVerify from AUD if it’s the same client id as of your appOptional verification with AZP and emailSample code http://android-developers.blogspot.in/2013/01/verifying-back-end-calls-from-android.html
  • Simple API protection if you don’t want to use google play services
  • Encrypt string this will increase the time for understanding the codesEncrypt dbShare preference is also accessibleStore credentials only in encrypted formathttp://android-developers.blogspot.in/2013/02/using-cryptography-to-store-credentials.html
  • Reverse engineering android apps

    1. 1. Securing Your Android Apps By Pranay Airan @pranayairan
    2. 2. Pranay Airan Web application developer @IntuitAndroid Developer by choice  Assistant organizer Blrdroid @pranayairan
    3. 3. Current Threats Code Protection Tools Code Analysis Tools Android App Build Process How to disassembleDifferent protection techniques
    4. 4. Current ThreatsStealing App Stealing App Unauthorized Code Assets API AccessStealing App Repackaging Malwares DB and selling and viruses Piracy
    5. 5. Code Protectors Progaurd Dexgaurd Java obfuscators
    6. 6. Code Analysis Tools Dex2jar Smali IDA Pro Dexdump
    7. 7. Android Application Build Process Java .java files .class files Compiler Obfuscator Jar .so Dx tool resource Signer files Obfuscator .apk files APK Builder .dex filesRef: http://net.cs.uni-bonn.de/fileadmin/user_upload/plohmann/2012-Schulz-Code_Protection_in_Android.pdf
    8. 8. Reverse Engineering An App
    9. 9. Use this methods This can be used onFederal Offence ethically your apps
    10. 10. Lets disassemble App on phone Apk Extractor .apk files Extract APKImages DB AAPT Readable resource .dex files Manifest asset XML etc dex -> class (dex2jar) .class files Class -> java Java files
    11. 11. Code ProtectionObfuscation Shrinker Optimization ProgaurdUsing Progaurd in Android
    12. 12. Reversed APK with Progaurd
    13. 13. Reversed APK with Dexgaurd
    14. 14. Other Techniques junk byte insertion Dynamic Code loading Self Modifying code Obfuscation at dex levelRef: http://net.cs.uni-bonn.de/fileadmin/user_upload/plohmann/2012-Schulz-Code_Protection_in_Android.pdf
    15. 15. API Protection Google Play Service Token + Your Verify Google Client id Your Token Authutil Parameters Backend Fields Access Token Verify Token Signature Googleaudience:server:client_id:9414861317621.apps.googleusercontent.com
    16. 16. API ProtectionHiding url & Use HTTPSparameters (self signed will work)Use time & Use Userencoding in Agentparameters Identifier
    17. 17. DB ProtectionHash your data3rd Party DB encryption like SQLCipherString Encryption
    18. 18. To Sum UpNothing is full proofDon’t give away your code just like thatUse progaurd to protect your codeUse Google Api Verification for Sensitivebackend calls
    19. 19. Questions ??
    20. 20. Thank YouPranay.airan@iiitb.net @pranayairanhttp://goo.gl/okiJp
    21. 21. Useful Links• http://www.honeynet.org/downloads/Android.tar.gz• http://proguard.sourceforge.net/index.html#manual/examples. html• http://code.google.com/p/dex2jar/• http://code.google.com/p/android-apktool/• http://android-developers.blogspot.in/2013/01/verifying-back- end-calls-from-android.html• http://sqlcipher.net/sqlcipher-for-android/

    ×