
Introduction to the Java Native Interface (JNI) To learn and/or review ARM assembly, I highly suggest the ARM Assembly Basics from Azeria Labs. Most Android devices run on ARM, but all exercises in this workshop also include an x86 version of the library. If you don’t have previous binary reverse engineering/ assembly experience, here are some suggested resources. Because the goal of this workshop is not to teach you the ASM architectures, all exercises will include an ARM and an x86 version of the library to be analyzed so that each person can choose the architecture that they are more comfortable with.
DEX ONLINE REVERSE DIRECTORY HOW TO
The goal of this section is not to teach you assembly (ASM) or how to reverse engineer compiled code more generally, but instead how to apply the more general binary reverse engineering skills, specifically to Android. This is largely due to DEX bytecode can be decompiled to Java whereas native, compiled code, often must be analyzed as assembly. Malware developers have begun moving to native code because reverse engineering compiled binaries tends to be a less common skillset than analyzing DEX bytecode. The benign, or legitimate, reasons a developer may do this is for mathematically intensive or time sensitive operations, such as graphics libraries. Most often, this means code that is written in C or C++.

Native libraries are code that the developer wrote and then compiled for a specific computer architecture. Reverse Engineering Android Apps - Native LibrariesĪndroid applications can contain compiled, native libraries.

