Name | androidemu JSON |
Version |
0.0.4
JSON |
| download |
home_page | None |
Summary | Allows you to partly emulate an Android native library. |
upload_time | 2025-02-13 23:20:46 |
maintainer | None |
docs_url | None |
author | None |
requires_python | >=3.7 |
license | GPLv3 |
keywords |
emulation
android
|
VCS |
 |
bugtrack_url |
|
requirements |
No requirements were recorded.
|
Travis-CI |
No Travis.
|
coveralls test coverage |
No coveralls.
|
# AndroidNativeEmu
[](https://github.com/AeonLucid/AndroidNativeEmu/actions)
[](https://pypi.org/project/androidemu/)

Allows you to partly emulate an Android native library.
This is an educational project to learn more about the ELF file format and [Unicorn](https://github.com/unicorn-engine/unicorn).
> Read me for chinese readers [中文README](README_cn.md)
## Features
- Emulation of the [JNI Invocation API](https://docs.oracle.com/javase/7/docs/technotes/guides/jni/spec/invocation.html) 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
- [Unicorn CPU emulator framework](https://github.com/unicorn-engine/unicorn)
- [Keystone assembler framework](https://github.com/keystone-engine/keystone)
## Resources
All resources used while developing AndroidNativeEmu.
### Text sources
- https://greek0.net/elf.html
- https://stackoverflow.com/questions/13908276/loading-elf-file-in-c-in-user-space
- https://programtalk.com/python-examples/pyelftools.elftools.elf.relocation.Relocation/
- http://infocenter.arm.com/help/topic/com.arm.doc.ihi0044f/IHI0044F_aaelf.pdf
- https://wiki.osdev.org/ELF_Tutorial
- https://docs.oracle.com/javase/7/docs/technotes/guides/jni/spec/functions.html
- https://android.googlesource.com/platform/dalvik/+/donut-release/vm/Jni.c
### Code sources
- https://github.com/lunixbochs/usercorn
- https://github.com/slick1015/pad_unpacker (SVC 0 instruction)
Raw data
{
"_id": null,
"home_page": null,
"name": "androidemu",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.7",
"maintainer_email": null,
"keywords": "emulation, android",
"author": null,
"author_email": "AeonLucid <aeonlucid@gmail.com>",
"download_url": "https://files.pythonhosted.org/packages/ab/d9/7f2e10525ae901c1f47b6ca2324248318936991d0fa9fe6d54cb96f007a3/androidemu-0.0.4.tar.gz",
"platform": null,
"description": "# AndroidNativeEmu\n\n[](https://github.com/AeonLucid/AndroidNativeEmu/actions)\n[](https://pypi.org/project/androidemu/)\n\n\nAllows you to partly emulate an Android native library.\n\nThis is an educational project to learn more about the ELF file format and [Unicorn](https://github.com/unicorn-engine/unicorn).\n\n> Read me for chinese readers [\u4e2d\u6587README](README_cn.md)\n\n## Features\n\n- Emulation of the [JNI Invocation API](https://docs.oracle.com/javase/7/docs/technotes/guides/jni/spec/invocation.html) so `JNI_OnLoad` can be called properly.\n- Emulation of native memory for malloc / memcpy.\n- Emulation of syscalls (SVC #0) instruction.\n- Hooking through the symbol table.\n- All JavaVM, JNIEnv and hooked functions are handled by python.\n- Enable VFP support.\n\n## Installation\n\nYou can install AndroidNativeEmu with pip.\n\n```\npip install androidemu\n```\n\n## TODO\n\n- Improve file descriptors in `vfs/file_system.py` so they are re-useable.\n- Add a way for the VirtualFileSystem to give back dynamic files, such as `/proc/self/status`, `/proc/self/status` but also `/dev/urandom`.\n- 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.\n - ~~Classes~~\n - ~~Objects~~\n - ~~Methods~~\n - ~~Native methods~~\n - Fields\n - Types\n - Reflection\n\n## Dependencies\n\n- [Unicorn CPU emulator framework](https://github.com/unicorn-engine/unicorn)\n- [Keystone assembler framework](https://github.com/keystone-engine/keystone)\n\n## Resources\n\nAll resources used while developing AndroidNativeEmu.\n\n### Text sources\n- https://greek0.net/elf.html\n- https://stackoverflow.com/questions/13908276/loading-elf-file-in-c-in-user-space\n- https://programtalk.com/python-examples/pyelftools.elftools.elf.relocation.Relocation/\n- http://infocenter.arm.com/help/topic/com.arm.doc.ihi0044f/IHI0044F_aaelf.pdf\n- https://wiki.osdev.org/ELF_Tutorial\n- https://docs.oracle.com/javase/7/docs/technotes/guides/jni/spec/functions.html\n- https://android.googlesource.com/platform/dalvik/+/donut-release/vm/Jni.c\n\n### Code sources\n- https://github.com/lunixbochs/usercorn\n- https://github.com/slick1015/pad_unpacker (SVC 0 instruction)\n",
"bugtrack_url": null,
"license": "GPLv3",
"summary": "Allows you to partly emulate an Android native library.",
"version": "0.0.4",
"project_urls": {
"Bug Tracker": "https://github.com/AeonLucid/AndroidNativeEmu/issues",
"Repository": "https://github.com/AeonLucid/AndroidNativeEmu"
},
"split_keywords": [
"emulation",
" android"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "fdb151dbb8c269e2102e7b198bc4672b5d61967f0717409aba95ad9c4dc1504d",
"md5": "5985cade0ed2362645b2c0828e902134",
"sha256": "6c6d2e40bddb90afc9395079ebd65e8bd270029527cfe96a911c5bf1c7a5b1b9"
},
"downloads": -1,
"filename": "androidemu-0.0.4-py3-none-any.whl",
"has_sig": false,
"md5_digest": "5985cade0ed2362645b2c0828e902134",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.7",
"size": 60892,
"upload_time": "2025-02-13T23:20:45",
"upload_time_iso_8601": "2025-02-13T23:20:45.047785Z",
"url": "https://files.pythonhosted.org/packages/fd/b1/51dbb8c269e2102e7b198bc4672b5d61967f0717409aba95ad9c4dc1504d/androidemu-0.0.4-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "abd97f2e10525ae901c1f47b6ca2324248318936991d0fa9fe6d54cb96f007a3",
"md5": "00d1592c39e7910137351e9846d8a0ff",
"sha256": "5ed5d5aa13821698c150f227d55ed65bd3bf61ff127a0565964f1a820f431ec7"
},
"downloads": -1,
"filename": "androidemu-0.0.4.tar.gz",
"has_sig": false,
"md5_digest": "00d1592c39e7910137351e9846d8a0ff",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.7",
"size": 50339,
"upload_time": "2025-02-13T23:20:46",
"upload_time_iso_8601": "2025-02-13T23:20:46.110733Z",
"url": "https://files.pythonhosted.org/packages/ab/d9/7f2e10525ae901c1f47b6ca2324248318936991d0fa9fe6d54cb96f007a3/androidemu-0.0.4.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-02-13 23:20:46",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "AeonLucid",
"github_project": "AndroidNativeEmu",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "androidemu"
}