https://github.com/zacsweers/blackmirror
https://github.com/zacsweers/blackmirror
Last synced: 4 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/zacsweers/blackmirror
- Owner: ZacSweers
- Created: 2018-08-13T00:22:20.000Z (about 7 years ago)
- Default Branch: master
- Last Pushed: 2020-03-28T00:37:01.000Z (over 5 years ago)
- Last Synced: 2025-06-30T10:03:25.579Z (4 months ago)
- Language: Java
- Size: 3.63 MB
- Stars: 40
- Watchers: 5
- Forks: 6
- Open Issues: 5
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
BlackMirror
===========Terrible reflection hacks around classloaders in Android. Sample app from a talk given at Droidcon NYC 2018.
Slides: https://speakerdeck.com/gdglviv/zac-sweers-breaking-the-android-classloader
Core project is `blackmirror`, which has the `BlackMirror` classloader implementation and some other utilities for working with classloaders and dex files
Examples:
* `app` - The main sample app
* `neighbor` - A simple sibling app with some simple code, used as the target for the main app to run code out of.
* `initprovider:simple` - demonstrating automatic initialization via init provider (before `Application#onCreate()`)
* `initprovider:pluginized` - demonstrating automatic initialization via pluginized init provider (before `Application#onCreate()`)
* `samples:logging` - Simple logging of class loading via Timber
* `samples:timing` - Simple timing of class loading, reported via Timber
* `samples:swapper` - Different examples of trying to swap what classes are loaded. Does not work for different reasons
* `samples:hello` - Simple `Hello` interface with a `sayHello` method. Used in the next two samples
* `samples:assets` - Example loading dex files from assets, in this case `Hello` impls
* `samples:resources` - Example loading dex files from resources, in this case `Hello` impls
* `samples:spy` - Examples for reading other apps' dex files and running other apps' code