Repository navigation
Doppel 2.1
Doppel 2.1: identifiers that change on each boot, a built-in command filter, hidden hardware ids, a faster way to restrict apps, and many fixes.
Privacy
- Identifiers new each boot. The serial, Android ID, IMEI and MEID can be Fixed or Each boot. Each boot gives every app a different value, which changes after a restart, so apps cannot follow you across apps or over time. Same for all apps gives all apps one value per boot. The values come from a secret of the Doppel service that is new each boot and that no app can read. Android ID, IMEI and MEID are new each boot by default; a value you set before stays fixed.
- Run commands, a new group: apps can only run the shell commands you allow in Fake values (like
getprop, uname, or a regular expression); others, likesuandid, fail and show up in Activity. It checks every program of a script, also behindsh -c,env,execandbusybox. Allowed commands still get the fake values of the other groups. - Permanent hardware ids hidden. Files of
/systhat identify the device do not exist for restricted apps: the unique id of the chip (Samsungchip-id), the serial of the SD card and of UFS storage, the touchscreen, the light sensor calibration and the fingerprint sensor. Also for shell commands likecat,headanddd, and through links. - More faked values:
/proc/meminfowith rounded sizes, a boot id of its own for each app, the times of the shared storage folders (which tell when the device was set up), the install times of other apps, the Bluetooth addresses of connected input devices, and the mobile operator properties. - Analytics: more SDKs blocked (Clarity, Amplitude, Branch, Singular), and the Crashlytics opt-out can no longer be undone by an app.
- The service answers only Doppel and Android. Apps signed with the same key can no longer read or change settings; apps without restrictions get the answers of a device without Doppel.
Interface
- Swipe an app in Apps, or tap its badge, for Restrict all, Remove all and Groups, each with Undo. Groups opens a sheet with all groups by section.
- All / None per section, on the screen of an app and in the groups sheet.
- Fake values: Fixed or Each boot for the identifiers, a clear button per field, and a bar with Discard and Save only when something changed. The Clear button, easily mistaken for Cancel, is gone.
- Tapping the icon of a group shows its full description.
- Headers scroll away with a compact bar on all tabs and screens; the log of one app looks like the Activity tab; tapping a restriction in the log opens its hook.
- Settings keep their place when you change the accent, theme or pure black background.
- Clearer text on the accent colors, in the light and the dark theme.
Fixes
- Apps that start work early, like Facebook, no longer crash a few times on start: hooks are installed before the app's own code runs.
- Restrict all, Remove all and Undo only change the hooks that change, so the use of the others is kept and the app is not stopped for nothing.
SubscriptionInfo.getSubscriptionIdis no longer faked to a subscription that does not exist, which broke SMS and calls on multi-SIM phones; phone number and SIM serial are empty instead of null.- Scripts can use ROM classes that declare types the ROM lacks (like on Samsung).
- Restoring a backup handles renamed and newer definitions, stops the changed apps and ends with a summary.
- Screens closed while loading no longer crash.
Downloads
- 83 definitions removed that duplicated built-in ones or no longer worked, and the Fif command filter, which Run commands replaces. Installed definitions stay installed.
- New: Radar, Localytics and Ogury blockers. Fixed: the Google FCM set, the property blacklist,
BlockGuardOs.open,File.mkdir(s)and others.
Installing
- Requires Android 6.0 or later, and LSPosed (or a compatible fork) or Xposed. See Installation.
- Updating from 2.0: install over it, then reboot (not just a soft restart), so LSPosed loads the new version.
- In LSPosed, enable Doppel with System Framework and the apps to restrict in its scope. Add only the apps you restrict.
- Coming from XPrivacyLua: uninstall XPrivacyLua first. Doppel is a separate app (
sk.akano12.doppel) that uses the same service, so the two cannot be active side by side.
Verifying the download
Signing certificate SHA-256:
A0:F2:1E:B3:95:12:FA:90:4F:04:6C:F1:66:E7:86:07:F5:95:4F:00:F1:43:00:2D:35:89:EA:71:FD:EA:71:F4
APK SHA-256:
9c9786af6abe99ec388f9505cb3e4964b475dd040bf53bb52e3cc512e8f96a5e
Check the certificate with apksigner verify --print-certs Doppel-v2.1-201-release.apk.