Lazarus

by Niik · Source code & issues: github.com/AlbatrossMicrosystems/lazarus-xposed

Play dead. Stay findable.

Anti-theft for rooted Android: when a thief switches your phone off, it only looks off, and it keeps telling you where it is.

When someone holds the power button, Lazarus only pretends to switch the phone off: the screen, sound and vibration go dead, but Android keeps running, so location, mobile data and your tracking app (e.g. FMD) keep working. Holding power again plays a fake reboot: a buzz, the real boot animation, then the lock screen. The phone never actually restarts. That matters, because after a real restart Android keeps app storage encrypted until the PIN is entered ("before first unlock"), and tracking apps cannot run in that state.

Lazarus is an Xposed module that runs inside system_server.

Features

Fake power-off Hold power (default 1.5 s). Keys, touch and every wake source (calls, notifications, charger, fingerprint, double-tap) are swallowed. Optional total-silence Do Not Disturb and no vibration.
Fake reboot While fake-off, hold power (default 3 s): buzz → boot animation (~16 s) → lock screen.
Owner exit While fake-off, hold Vol-Up + Vol-Down (default 3 s) to wake normally.
Shutdown protection Power-off requests from menus or apps become fake power-off. Low-battery and overheating shutdowns are still allowed.
Real power off for the owner App button or Quick Settings tile "Real power off", protected by your PIN/pattern/password. Biometrics are not accepted, so nobody can force your finger onto the sensor.
Dark wake Allow-listed apps (default: FMD) may use the display while fake-off, e.g. for FMD's remote camera, with the backlight forced off.
Leak prevention Optionally disables Emergency SOS (5× power), the double-press camera, and the lock-screen / Quick Settings power menus. Original values are restored when you turn an option off, disable Lazarus, or uninstall the app.

Requirements

  • Root with Magisk (Zygisk enabled)
  • An Xposed framework: Vector (LSPosed successor) or LSPosed
  • Developed and tested on Android 16 (crDroid). The hooked internals change between Android versions. Every hook fails safe to stock behaviour, and the app shows how many hooks loaded.

Install

  1. Install the APK.
  2. In Vector/LSPosed, enable Lazarus with the scope System Framework (android), then reboot.
  3. Open Lazarus. The status line should say ● Active (hooks 14/14).
  4. (Recommended) Tap Install boot-animation support (root). This installs a tiny Magisk module (lazarus_sepolicy, one SELinux rule: allow system_server ctl_start_prop property_service set) so the fake reboot can show the boot animation. Without it, the fake reboot stays dark for a few seconds and then lights up straight into the lock screen.
  5. (Optional) Add the Real power off Quick Settings tile. The guide in the app has a one-tap button for this on Android 13+.
  6. Install a tracker if you don't have one. FMD works without Google and is allow-listed for dark wake by default.

On first launch the app opens How to use, a setup checklist that shows what is still missing: module active, boot-animation support, screen lock, and tracking app.

Tutorial

Everyday use

You do What happens
Hold power ~1.5 s Fake power-off: one buzz, then the phone looks dead.
While "off": press power, tap the screen, call the phone Nothing. It stays dark and silent.
While "off": hold power ~3 s Fake restart: buzz → boot animation → lock screen.
While "off": hold Vol-Up + Vol-Down ~3 s Owner exit: the phone wakes up normally.
Power menu or an app tries to shut down Becomes a fake power-off.
Lazarus → Power off / Restart (or the tile) Real power off / restart, after your PIN.

Try it (2 minutes)

  1. Hold power about 1.5 seconds. You feel one buzz and the screen goes black.
  2. Press power a few times and tap the screen. Nothing should happen.
  3. Hold Vol-Up + Vol-Down together for 3 seconds. The phone wakes up.
  4. Hold power 1.5 s again, then hold power about 3 seconds. The boot animation appears, so let go. After about 17 seconds the lock screen is back and the phone is in normal mode.
  5. While the phone is "off", open your tracker's website (e.g. FMD Server) and locate it, ring it or take a photo.

Settings

Every behaviour can be changed in the app: hold times, total silence, vibration, shutdown protection, fake restart, owner exit, the dark-wake app list, and which system settings Lazarus may change. The master switch turns Lazarus off completely and restores everything it changed.

⚠️ Read before use

  • You can no longer switch the phone off with the power button. Use the in-app Power off (PIN-protected) or adb shell settings put global lazarus_cmd shutdown.
  • Hardware reset. Every phone's power-management chip (PMIC) force-restarts the phone after the power key is held for a fixed time, often 6–10 s, and power + volume-down may do so sooner. No software can block this. Keep the fake-reboot hold time well below your device's limit, so the boot animation appears and people let go first. After a real hardware restart, trackers only work again once the PIN is entered. Lazarus restores its Do Not Disturb change on the next boot.
  • Not theft-proof. With an unlocked bootloader, someone who knows Android can still wipe or reflash the phone through fastboot or recovery. Lazarus defeats the common "hold power to turn it off" move.
  • Recovery if something goes wrong:
    • In fake-off: hold Vol-Up + Vol-Down, or run adb shell settings put global lazarus_cmd exit.
    • Disable the module in Vector and reboot.
    • Boot into Android safe mode (hold Vol-Down during boot), which makes Magisk disable all modules.

Control from a computer

adb shell settings put global lazarus_cmd enter      # fake power-off
adb shell settings put global lazarus_cmd exit       # back to normal
adb shell settings put global lazarus_cmd shutdown   # real power off
adb shell settings put global lazarus_cmd reboot     # real restart
adb shell settings get global lazarus_state          # 1 = fake-off
adb shell settings put global lazarus_cfg_<option> <value>   # see [Keys.java](https://assets.lsposed.org/raw/AlbatrossMicrosystems/lazarus-xposed/main/src/io/github/albatrossmicrosystems/lazarus/Keys.java?sign=295fd0d33f7e8cf08c556ea8f1c84c13&t=6a03bf00) for options

Logs go to the Vector/LSPosed module log, tag Lazarus.

Security model

  • The app controls the hook through broadcasts guarded by a signature permission (io.github.albatrossmicrosystems.lazarus.permission.CONTROL). Only an app signed with the Lazarus key, adb shell (via settings), or root can send commands.
  • Configuration lives in Settings.Global (lazarus_cfg_*). Any app can read it; only system_server, adb or root can write it.
  • Fake-off state lives in memory only, so every real boot starts in normal mode.

Building

No Gradle needed. Requires the Android SDK (build-tools 36, platform 36) and JDK 17+.

bash build.sh        # -> lazarus-v<version>.apk

On first build, a release key is created in ~/.lazarus/ (outside the repo). Back it up: updates must be signed with the same key. The stubs/ directory holds compile-only stand-ins for the Xposed API. They are not packaged.

License

GPL-3.0

Releases

2.2

Stable

10/31/2026, 8:29:21 PM

Play dead. Stay findable.
Anti-theft for rooted Android: when a thief switches your phone off, it only looks off, and it keeps telling you where it is.

First public release of Lazarus, an Xposed module (Vector / LSPosed) that fakes the power-off.

What it does

  • Fake power-off: hold power about 1.5 s. Keys, touch and every wake source are swallowed, while location, data and your tracker (e.g. FMD) keep running.
  • Fake restart: while "off", hold power about 3 s. A buzz, the real boot animation, then the lock screen. The phone never really restarts, so trackers never stop.
  • Owner exit: hold Vol-Up + Vol-Down for 3 s.
  • Shutdown protection: power-off requests from menus or apps turn into a fake power-off. Low-battery and overheating shutdowns are still allowed.
  • Real power off / restart from the app or Quick Settings tile, PIN-protected (fingerprint not accepted).
  • Dark wake: FMD's remote camera works while "off", with the backlight forced off.
  • Settings with a master switch and a clean undo of every system setting it changes. A setup guide with a live checklist opens on first launch.

Install

  1. Install lazarus-v2.2.apk.
  2. In Vector/LSPosed, enable Lazarus with the scope System Framework, then reboot.
  3. Open Lazarus and follow the How to use checklist.
  4. (Recommended) In the app, tap Install boot-animation support (root). This is a one-line SELinux rule installed as a Magisk module. lazarus_sepolicy-v1.0.zip is the same module for manual install (e.g. KernelSU).

⚠️ Before you use it

  • You can't switch the phone off with the power button any more. Use Lazarus → Power off.
  • Every phone hard-resets if power is held long enough (often 6–10 s). Keep the fake-restart hold time well below that.
  • Developed and tested on Android 16 (crDroid). Other versions may load fewer hooks; the app shows the count.
  • Recovery: Vol-Up + Vol-Down, adb shell settings put global lazarus_cmd exit, disable the module in Vector, or boot into safe mode.

Verify

APK signing certificate SHA-256: 9fc98321a4ce1a3aadad34bc0fe4f52be4dd5dee1ca5b636152adf7ecbe5402f

89b968ce476c58506bc375862837bb06c4a6f5767012c135b56d89507fa78481  lazarus-v2.2.apk
83535abe5e4b5d665d735c4b38c5048f2c224bac89ed1b49dd8e15a32e1e4ed3  lazarus_sepolicy-v1.0.zip

Full documentation: README · License: GPL-3.0 · by Niik

Assets

3