/mono_unbundle

Extract DLL files from a Xamarin libmonodroid_app_bundle.so bundle

Primary LanguagePythonMIT LicenseMIT

A utility for extracting DLL files from Xamarin/Monodroid application bundles (libmonodroid_bundle_app.so), as created by the mono_mkbundle tool.

Useful in the reverse engineering of Android applications written in C# or other .NET languages supported by the Mono/Xamarin platform. You can import the resulting DLLs directly into your favourite .NET decompiler, such as ILSpy, dnSpy, dotPeek and JustDecompile.

Currently only supports ELF shared objects, as generated by Xamarin for packaging into an APK file. Patches welcome to support other formats.

Requires Python >=3.5 and Pipenv to install.

On Windows, you'll need DLLs for libmagic. The easiest way to get them is to install the python-magic-bin package from pip.

Installation

$ git clone https://github.com/tjg1/mono_unbundle.git
$ cd mono_unbundle
$ pip install .

Usage

$ apktool d -rs myapp.apk -o mod    # https://ibotpeaches.github.io/Apktool/
$ mono_unbundle mod/lib/armeabi-v7a/libmonodroid_bundle_app.so dlls/

Wishlist

  • Binary patching DLLs into the bundle.

Credits

  • Ghidra for help reverse engineering the bundle format.