Skip to content

AeonLucid/AndroidNativeEmu

master
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Code

Latest commit

* Fix bug: use correct python version when testing

* Github action: run example*.py for test
10da9bb

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
September 2, 2021 22:47
September 2, 2021 09:58
September 2, 2021 09:10
September 2, 2021 09:24
September 2, 2021 11:50
August 23, 2021 17:43
September 2, 2021 09:54
September 2, 2021 11:13

AndroidNativeEmu

GitHub Workflow Status PyPI PyPI - Python Version

Allows you to partly emulate an Android native library.

This is an educational project to learn more about the ELF file format and Unicorn.

Read me for chinese readers 中文README

Features

  • Emulation of the JNI Invocation API so JNI_OnLoad can be called properly.
  • Emulation of native memory for malloc / memcpy.
  • Emulation of syscalls (SVC #0) instruction.
  • Hooking through the symbol table.
  • All JavaVM, JNIEnv and hooked functions are handled by python.
  • Enable VFP support.

Installation

You can install AndroidNativeEmu with pip.

pip install androidemu

TODO

  • Improve file descriptors in vfs/file_system.py so they are re-useable.
  • Add a way for the VirtualFileSystem to give back dynamic files, such as /proc/self/status, /proc/self/status but also /dev/urandom.
  • Library consumers must be able to easily rebuild the needed Java classes for a native library, which are used by the native library through the JNIEnv.
    • Classes
    • Objects
    • Methods
    • Native methods
    • Fields
    • Types
    • Reflection

Dependencies

Resources

All resources used while developing AndroidNativeEmu.

Text sources

Code sources