Privacy Kit banner

Privacy Kit

Privacy Kit is a multi-layer Android anti-fingerprinting toolkit built around an LSPosed module. It lets you give each selected app its own controlled device identity instead of changing identifiers globally, so apps that rely on stable device identifiers see a coherent, per-app fake device rather than your real one.

It is designed for users who want more control over what apps can read from their device — for separating app profiles, reducing cross-app tracking based on stable identifiers, and testing how apps behave when device identity values change.

Privacy Kit does not make a device anonymous by itself. Apps can still use many other signals — account login, IP address, network metadata, browser state, app-specific storage, sensors, permissions, and server-side behavior.

What's in a Release

A Privacy Kit release ships up to four components. Only the first is required; the rest are optional layers that reach deeper below the app.

Component File What it does Needs
Privacy Kit module PrivacyKit-<ver>.apk The app + LSPosed module. Hooks Java-layer identifier APIs per selected app and returns coherent spoofed values. LSPosed
Zygisk native module privacykit-zygisk-*.zip Closes native/file read paths the Java hooks can't reach — system properties, /proc, /sys, boot_id, sysfs Wi-Fi MAC, kernel, /proc/meminfo. Magisk/KernelSU/APatch Zygisk
Kernel module (KPM) privacykit_kpm.kpm Optional, advanced. Spoofs file timestamps, /proc/cpuinfo, CPU cluster frequencies and /proc/net/if_inet6 in the kernel, below every app and service. APatch with KPM support
PK Probe PKProbe-<ver>.apk Companion self-test app. Verifies which identifiers are actually being spoofed vs. still leaking. — (optional)

How the Layers Work

Privacy Kit spoofs the same identifier at more than one level, because a real fingerprinting SDK reads the same value through several paths (a Java getter, a system property, a /proc or /sys file, or directly via the kernel).

  • Per-app (LSPosed) — hooks Java getters (Build.*, TelephonyManager, Settings.Secure, WifiInfo, media DRM, GMS identifiers, …) inside each target app you enable in LSPosed scope. This is the core layer.
  • Native (Zygisk) — rewrites what the app sees from SystemProperties, getprop, and file reads under /proc and /sys, so a native or file-based read returns the same fake value as the Java getter.
  • Framework mode (optional, experimental) — spoofs at the provider process (system_server / the phone process), per calling app, so the target app reads the fake value with no hook in its own process. Covers android_id, build serial, and telephony identifiers. Requires adding "Android System Framework" and the Phone app (com.android.phone) to Privacy Kit's LSPosed scope, then a reboot.
  • Kernel (KPM, optional) — for APatch users, spoofs surfaces below libc and below any service (file timestamps, /proc/cpuinfo, cpufreq, IPv6 link-local).

Coherence is the point: a spoofed profile draws one real, consistent device (brand, model, SoC, fingerprint, baseband, RAM, screen, etc.) so the values do not contradict each other across paths.

Identifiers Covered

Coverage depends on the layers you enable and the app's read path. Grouped by kind:

  • Advertising & app identity — Advertising ID (GAID), App Set ID, Google Services Framework ID (GSF), ANDROID_ID, Firebase Installation ID, Firebase App Instance ID, Media DRM / Widevine device ID.
  • Device & build — model, brand, manufacturer, device/product/board/hardware, build fingerprint, build ID/display, bootloader, serial, build time, SoC model & manufacturer, baseband/radio version.
  • OS & boot — Android release, API level (SDK), security patch, build incremental, kernel version (os.version/uname), boot_id, boot time, uptime.
  • Telephony & SIM — IMEI, MEID, IMSI (subscriber ID), ICCID (SIM serial), phone number, network & SIM operator (MCC/MNC + name), network & SIM country, SIM carrier ID, phone count, type-allocation code.
  • Network — Wi-Fi MAC, BSSID, SSID, Bluetooth MAC & name, hostname, IPv6 link-local address (/proc/net/if_inet6).
  • Hardware/proc/cpuinfo (SoC / CPU part), CPU cluster max frequencies, total RAM (MemTotal), display metrics (xdpi/ydpi/density, resolution).
  • Locale & environment — time zone, locale, HTTP / WebView user-agent, first-install and last-update time.
  • Location — GPS coordinate spoofing, Region Presets, per-app walk/jog/drive Activity Simulation, saved Favorite Locations, map-based coordinate picker.

Some surfaces are intentionally not changed because doing so is a bigger tell or a stability risk (for example, CPU ABI list and core count are left real).

Key Features

  • Per-app identifier spoofing for selected target apps, with coherent whole-device profiles rather than random unrelated values.
  • One-tap AI Auto Profile and Maximum Privacy profile flows.
  • Native (Zygisk) layer for file/property//proc//sys reads, and an optional Framework mode and Kernel (KPM) tier for deeper coverage.
  • PK Probe companion for verifying exactly which values are spoofed vs. leaking.
  • Isolated browser account sessions using Android System WebView on supported Android versions, with WebView compatibility hotfixes for checkout/login/payment.
  • Live in-process updates so location, Build fields, and identifier changes apply to an already-running target app without a relaunch.
  • Region Presets, Activity Simulation scheduling, Favorite Locations, and a map-based coordinate picker for location spoofing.
  • Hook Diagnostics, an in-app hook log viewer, Export Diagnostics, and history views for troubleshooting LSPosed scope, profile, and hook activity.
  • Package name: com.sal.privacykit. Companion package: com.test.gmsprobe.

Requirements

  • Android device with root (Magisk, KernelSU, or APatch).
  • LSPosed installed and working (for the module).
  • A Zygisk implementation (for the native layer).
  • APatch with KPM support (only for the optional kernel module).
  • Basic understanding of Xposed module behavior and app-compatibility risks.

Installation

Install from an official public release:

Install the APK on the device where LSPosed is set up. Do not install APKs from unknown mirrors unless you verify the checksum against the values below.

Enabling the Module in LSPosed

  1. Open the LSPosed manager app.
  2. Go to Modules and select Privacy Kit.
  3. Enable the module.
  4. Select the apps you want Privacy Kit to affect.
  5. Reboot if LSPosed asks, or force stop and reopen the selected target apps.

Keep the scope narrow — only enable it for apps you intend to manage.

Verifying Spoofing with PK Probe

PK Probe (PKProbe-1.22.apk) checks what is actually being spoofed, by baseline diff rather than guesswork:

  1. Install PK Probe unhooked (not in Privacy Kit's LSPosed scope) and tap SAVE BASELINE — it records the real values via every read path.
  2. Add com.test.gmsprobe to Privacy Kit's LSPosed scope, apply a full spoof profile, and relaunch.
  3. Tap COMPARE — each path is diffed against its baseline: changed = hooked, unchanged = the real value is still leaking.

Per-path granularity catches the common failure where a Java getter is spoofed but a /proc, /sys, getprop, or native read still leaks the real value.

Optional: Framework Mode

Framework mode moves selected identifiers to the provider process so target apps carry no in-process hook. It is experimental: these are system-wide provider hooks, it requires adding "Android System Framework" and com.android.phone to Privacy Kit's LSPosed scope plus a reboot, and a fault could bootloop. Leave it off unless you are testing on a device you can recover.

Optional: Kernel Module (KPM) — APatch only

⚠️ Advanced and dangerous. Experimental — not yet verified on device. The KPM (privacykit_kpm.kpm) runs in the kernel. A bad kernel module can brick boot. It requires APatch with KPM support. Load it only on a device you can recover (fastboot / OrangeFox). It is written fail-open (any error leaves the real syscall in place) and stays off by default in the app.

Load and verify:

adb push privacykit_kpm.kpm /data/local/tmp/
apd kpm load /data/local/tmp/privacykit_kpm.kpm
apd kpm list

Then enable Developer Settings → Kernel module (KPM) in Privacy Kit and confirm with PK Probe. This build targets KernelPatch 0.13.5. If it fails to load, rebuild it against your APatch's exact KernelPatch version.

Warnings and Limitations

  • Identifier spoofing is one privacy layer, not full anonymity. Apps also use accounts, cookies, local storage, IP address, sensors, and server-side records.
  • Some apps may block access, fail integrity checks (e.g. Play Integrity), reset sessions, or behave unpredictably when identifiers change.
  • Framework mode and the KPM are system/kernel-level and higher risk (bootloop / brick-boot). Both are optional and off by default.
  • Spoofing certain low-level properties can crash an app's graphics or ABI paths; Privacy Kit deliberately avoids the riskiest ones.
  • Use separate accounts, network protections, and browser hygiene when your privacy model requires stronger separation.

Basic Usage Flow

  1. Install Privacy Kit from the official release and enable it in LSPosed.
  2. Select the target apps that should receive spoofed identifiers.
  3. (Optional) Flash the Zygisk module for native coverage.
  4. Configure identifier values or apply a profile in the app.
  5. Restart the target apps so they read the updated values.
  6. Verify with PK Probe, then adjust one app or profile at a time.

Troubleshooting

The module does not appear in LSPosed

  • Confirm the APK installed and that LSPosed is active; reboot and re-check.

A target app is not affected

  • Ensure Privacy Kit is enabled for that specific app in LSPosed.
  • Force stop and reopen the app; reboot if it was running before enabling.
  • Use PK Probe to see which path is still leaking, and enable the native/framework layer for that surface.

An app crashes or blocks access

  • Disable Privacy Kit for that app and restart it.
  • Try a fresh profile or less aggressive changes; some apps are incompatible.

The APK cannot be installed

  • Download from the official release page.
  • Remove conflicting old builds on a signature or downgrade error.

Release and APK Verification

Official release: https://github.com/Xposed-Modules-Repo/com.sal.privacykit/releases/tag/24-1.22

Expected SHA-256:

PrivacyKit-1.22.apk      95B1C0816A684186A8EA082F14F68E9728A40212944A57865C5BEA1F08CAB990
PKProbe-1.22.apk         1E1104E0FAAFB7088C45B40D01307DEC01BF697F7853AE4BB48400594C54AABB
privacykit_kpm.kpm       C9D4EB74CD04D73C2AEEE8BA23B9A5D2976286C040889658E5157BFBBD52AE67

Compare the downloaded file's SHA-256 with the value above before installing. If the hash does not match, do not install.

Support

Privacy Kit takes time to build, test, maintain, and support. If it is useful to you and you are able to help, a donation means a lot and helps keep development going.

Donate / support: https://pk.adserr.com

Source Availability

This public repository is intentionally release-only. It hosts public documentation, release metadata, and links to official APK releases for LSPosed distribution. The application source, build project, signing material, and private tooling are maintained privately by the developer.

Disclaimer

Use Privacy Kit only on devices and apps where you understand and accept the privacy, compatibility, legal, and policy implications. You are responsible for how you use it. Some apps and services may restrict access, enforce integrity checks, terminate sessions, or behave unexpectedly when device identifiers change. The Framework mode and Kernel (KPM) features carry additional bootloop / brick-boot risk and are provided for advanced users on recoverable devices only.

Releases

8/18/2026, 8:31:05 AM

Privacy Kit 1.23

Assets: PrivacyKit-1.23.apk · PKProbe-1.23.apk · privacykit-zygisk-v1.3.zip · privacykit_kpm.kpm

New: in-process Lua hook scripts

Custom Hooks gain a script type — Lua that runs on every call of a target method (imperative complement to the declarative rules). Script gets args, thisObject, original(), setarg(i,v), resolve("key"), log(msg); what you return becomes the result. Sandboxed pure-Java LuaJ (no native .so in the target), fail-open (any error runs the real method). New Script editor + "Block ads (script)" template. Off by default; brand-new injected-process code path — smoke-test before relying on it.

Checkout pre-bind

"Purchase Pro" opens the checkout pre-linked to this device, so post-payment "Activate" needs no key entry.

Kernel tier

privacykit_kpm.kpm built against KernelPatch 0.13.5 (AArch64). Experimental, APatch-only, NOT verified on-device — can brick boot; recoverable device only. Off by default.

SHA-256

PrivacyKit-1.23.apk   B5F6F4541FC82993FAC53F8F9CC6B03E0007E556B4BFBF059BA7A6CE508C67E5
PKProbe-1.23.apk      570E051950AB1039C1D68E65E5A5EF37E510D132DD23E60EED307377058163D1
privacykit_kpm.kpm    C9D4EB74CD04D73C2AEEE8BA23B9A5D2976286C040889658E5157BFBBD52AE67

Signing: 95:E9 cert — installs over an existing Privacy Kit.

Assets

4

7/26/2026, 9:08:19 PM

Privacy Kit 1.13 — native Zygisk companion, Break Play Services, cross-layer coherence & license fixes.

Native (Zygisk) companion

  • Full integration with the Privacy Kit Zygisk module (v0.5): native spoofing of system properties, uname, GL strings, /proc & /sys reads, and Wi‑Fi MAC — closing the NDK/libc surfaces the Xposed layer can't reach.
  • New Native Spoofing screen with per‑app native categories, plus live native status (attached / backend / surfaces) in each app's diagnostics.
  • Cross‑layer coherence checks warn when an identifier is spoofed in Java but not natively, so a C/NDK reader can't catch a mismatch.
  • Java and native layers now return identical values for randomized identifiers (e.g. Wi‑Fi MAC), removing a Java‑vs‑native tell.

Break Play Services

  • Optional per‑profile switch that makes Google Play Services appear absent to the app — honest GMS‑absence, not attestation/integrity forging — plus boot_id de‑correlation.

Licensing

  • Fixed: activating a purchased key on a device that still held the expired trial no longer errors — the device re‑binds to the new license automatically (previously leaked a raw datastore error).
  • Friendlier activation error messages, and a new Unbind this device action on the lock screen.

Requires / notes

  • Native spoofing needs the Privacy Kit Zygisk companion module (attached: privacykit-zygisk-v0.5.zip) on LSPosed (Zygisk) or KernelSU + ZygiskNext.
  • After updating, re‑toggle Privacy Kit in LSPosed and relaunch target apps so the module reloads (LSPosed caches module code).

Assets

3

8/18/2026, 2:58:33 AM

Privacy Kit 1.22

Module APK: PrivacyKit-1.22.apk · Companion: PKProbe-1.22.apk · Native: privacykit-zygisk-v1.3.zip · Kernel tier: privacykit_kpm.kpm

App

  • KPM content pipeline: the optional Kernel Patch Module now receives content coherent with the device each profile impersonates — the app asks your configured AI provider to render a matching /proc/cpuinfo + per-cluster CPU frequencies for the spoofed SoC, and pushes them (plus a deterministic /proc/net/if_inet6 from the spoofed Wi-Fi MAC and the install timestamp) into the kernel. New "Sync KPM content (AI)" action in Developer Settings.

PK Probe (companion) — rewritten as a baseline-diff verifier

Read every identifier via every path unhooked → save a snapshot → read again hooked → diff each path: changed = hooked, unchanged = leaking the real value. Per-path granularity catches "getter spoofed but /proc, /sys, getprop or native still leaks". Placeholder constants (02:00:… MAC, unknown serial) are ignored; boot-token guard avoids false positives across a reboot. Flow: install unhooked → SAVE BASELINE → add com.test.gmsprobe to the LSPosed scope + apply a full profile → relaunch → COMPARE.

Kernel tier (Tier-2, APatch only) — privacykit_kpm.kpm

A loadable KernelPatch Module that spoofs file timestamps, /proc/cpuinfo, CPU cluster frequencies and /proc/net/if_inet6 at the kernel (below every app and service). Built against KernelPatch 0.13.5 (AArch64). apd kpm load /data/local/tmp/privacykit_kpm.kpm.

⚠️ KPM is experimental and NOT yet verified on-device. It requires APatch with KPM support. A bad kernel module can brick boot — load it only on a device you can recover (fastboot/OrangeFox). It is written fail-open (any error → the real syscall stands), and stays off by default in the app. If it fails to load, rebuild it against your APatch's exact KernelPatch version.

Signing: same 95:E9 cert as prior releases — installs over an existing Privacy Kit.

Assets

4

8/16/2026, 5:06:45 AM

Privacy Kit 1.21

Leak fixes (from a fingerprint report showing exposed values — these are in the normal per-app hooking path, so they help everyone):

  • Dalvik User-Agent / http.agent no longer leaks the real model — System.getProperty("http.agent") now rewrites the model/Android-version/build tokens (this was the reported SM-S938B leak).
  • Screen xdpi/ydpi — the "Coarsen screen metrics" toggle now also covers Resources.getSystem().getDisplayMetrics() (a path it was missing).
  • App install time — the APK's File.lastModified() is now spoofed for the app's own paths, not just PackageInfo.firstInstallTime.
  • Baseband/radio — added gsm.version.baseband1/2, ro.baseband, ro.boot.baseband (was only gsm.version.baseband).

Framework mode (experimental) — fixed the IMEI path (getImei() routes through PhoneInterfaceManager, not PhoneSubInfoController), added SubscriptionManagerService phone-number + sim-carrier-id + network-country, and build_serial at system_server.

PK Probe 1.21 (attached) — now a self-check LEAK SCANNER: add com.test.gmsprobe to Privacy Kit's scope + a profile, open it, and it reads every surface via multiple paths and flags ⚠ LEAK wherever they disagree (summary + logcat + /sdcard/Download/pkprobe.txt).

Remaining exposures (CPU freq, /proc/cpuinfo SoC, native stat timestamps) need the Zygisk/KPM layer and are tracked separately. After updating, re-toggle Privacy Kit in LSPosed and reboot.

Assets

3

8/15/2026, 4:18:21 AM

Privacy Kit 1.20

Two experimental, off-by-default tiers inspired by provider-side/kernel spoofing — they make a target app read fakes with no hook in its own process (invisible to injection detection).

Framework/Provider mode (Developer Settings → experimental; no kernel needed)

  • Spoofs identifiers at the provider, per calling app: android_id (system_server) and IMEI / MEID / subscriber / SIM serial / number (phone process).
  • Requires adding Android System Framework and the Phone app (com.android.phone) to Privacy Kit's LSPosed scope, then a reboot.
  • ⚠️ System-wide provider hooks — a fault could bootloop. Enable only on a recoverable device.

Kernel module (KPM) — APatch only (Developer Settings; off by default)

  • Detects APatch + KPM support, and can load/control a Privacy Kit Kernel Patch Module for kernel-level spoofing (file timestamps / boot_id / serial).
  • You build privacykit_kpm.kpm from the kpm/ skeleton against KernelPatch; push it to /data/local/tmp.
  • ⚠️ A bad kernel module BRICKS BOOT — recoverable device only.

Everything else is unchanged; existing behaviour is identical unless you opt into these. The Zygisk v1.3 companion (attached) is unchanged from 1.19.

After updating, re-toggle Privacy Kit in LSPosed, then reboot.

Assets

3

8/14/2026, 8:24:32 PM

Privacy Kit 1.19

App Set ID (fixes "IPC/binder spoofing not working")

  • The raw-binder path now also matches the AdServices App Set ID service (Android 13+), not just the GMS one.
  • Swaps the UUID on readString + readString8 + readString16 (newer AIDL stubs use the latter).
  • Logs any unmatched App-Set-like binder descriptor so an odd app's exact interface can be captured (Logs / Export Diagnostics) and added.

New Advanced toggles

  • Fuzz motion sensors — keeps sensors working but adds a stable per-app bias, giving this app a unique sensor-calibration fingerprint (defeats cross-app SensorID) instead of blocking them (a phone with no accelerometer is itself a tell).
  • Hide root & analysis apps — removes Privacy Kit, root/Xposed/KernelSU managers, and known analysis apps from this app's PackageManager enumeration (closes the installed-app-list fingerprint and hides the managers).

Native v1.3 (attached zip) — the /proc/meminfo REWRITE now clamps MemFree/MemAvailable/Cached/Buffers below the spoofed MemTotal, so a down-spoofed RAM total can't be exceeded by a live free-memory line.

Community — an AI safety + coherence review of a shared config before you apply it.

After updating, re-toggle Privacy Kit in LSPosed, then reboot. The Zygisk v1.3 companion is optional (native hooking opt-in, off by default).

Assets

2

8/12/2026, 12:05:52 AM

Privacy Kit 1.18

Diagnostics

  • New Export Diagnostics on the Logs screen — one shareable file with module status, real device/OS, active profiles, per-app hook success/failures, and the full module log. (Reads only Privacy Kit's own data — no target-app probing.)
  • The bundle now folds in the native (Zygisk) module status: version, per-hook install results, self-verify proof-of-effect, and spoofed surfaces.

Native coherence (needs the Zygisk v1.2 module below)

  • New partial-file REWRITE engine spoofs /proc/meminfo MemTotal to the coherent device's RAM class — closing the native RAM leak (a "Pixel 7a" reading 12 GB) for C/NDK readers — while MemFree/MemAvailable stay live.

Licensing

  • Purchase Pro button opens the storefront (card or crypto, $10/mo or $50 lifetime).
  • Automatic activation: after payment, tap Activate in Privacy Kit on the confirmation page and your key applies automatically (privacykit://activate deep link) — no copy/paste.

After updating, re-toggle Privacy Kit in LSPosed (Manager caches stale module code across updates), then reboot. The Zygisk v1.2 companion (attached) is optional; native hooking stays opt-in and off by default.

Assets

2

8/11/2026, 9:58:09 PM

Privacy Kit 1.17

Coherence hardening — defeats cross-layer fingerprint contradictions (the giveaway isn't a wrong value, it's two layers disagreeing):

  • Baseband now matches the spoofed device (real Pixel modem string, not a random one)
  • RAM (ActivityManager) matches the spoofed model's class, with a realistic non-round MemTotal
  • Build date (ro.build.date/.utc + Build.TIME) matches the spoofed OS
  • Per-account install time — no more identical first_install_time across cloned accounts on one profile
  • WebView User-Agent rewritten to match the spoofed device (fixes the WebView-vs-native mismatch)

AI

  • Custom (OpenAI-compatible) provider — use OpenRouter free models, Together, Groq, or a local server
  • AI Providers screen redesigned (per-provider setup, no more duplicated key fields)
  • Test connection, AI coherence audit, fingerprint explainer, natural-language profile hint

Licensing — two tiers: $10/month or $50 lifetime

After updating, re-toggle Privacy Kit in LSPosed (Manager caches stale module code across updates), then reboot.

Assets

2

8/11/2026, 12:03:51 PM

Privacy Kit 1.16 (versionCode 18)

New — Timestamps identifiers

  • App Install Time and Last Boot Time — defeat install-history and boot-time fingerprinting. Set them to Random Per Launch / Random Daily like any identifier.
  • Kernel Version now rotates a realistic GKI release string that stays coherent with the spoofed Android version (both os.version and native uname).

New — Advanced screen (per profile)

Powerful, per-app controls grouped on their own screen, all off by default (each can break the target app):

  • Microphone (mute) — the app records silence.
  • Hide contacts / SMS / call log / calendar — those reads return empty.
  • Block motion sensors — refuses accel/gyro/magnetometer registration (defeats SensorID fingerprinting).
  • Clipboard guard, Spoof battery level, Coarsen screen metrics, Allow screenshots.
  • Break Play Services and Native boot_id moved here too.

Licensing — survives uninstall, self-transfer

  • Your license now survives uninstalling the app or clearing its data on the same device — the device identity is derived from ANDROID_ID instead of a wiped keystore key, so re-entering your key just works.
  • Re-entering your key on another device moves the license there and frees the old one — no support contact needed. Existing activations are not disrupted.

Experimental — virtual camera (Advanced → Camera)

  • Injects a chosen gallery image into the live camera PREVIEW — good for privacy and video-call preview. Off by default, experimental.
  • Still-photo capture is not supported on hardened / Ultra-HDR camera apps yet, and it does not beat depth/liveness or attestation. Only enable it for apps you've confirmed behave.

Bundled

  • Zygisk companion v1.0 — self-unloads in processes where it does nothing, so it no longer trips memory-scanner "maps-only module" flags. Flash privacykit-zygisk-v1.0.zip in your root manager; native spoofing stays off until you enable it in the app.

Assets

2

8/4/2026, 11:00:10 PM

Privacy Kit 1.15 (versionCode 17)

New

  • Advanced screen (per profile). The riskier / native surfaces — Camera, Break Play Services, and Native boot_id de-correlation — now live together on a dedicated Advanced screen instead of the profile's main page. All off/neutral by default.
  • Per-identifier randomize. A dice button next to each custom identifier value re-rolls just that value, alongside the existing "randomize all custom values".
  • Virtual camera (EXPERIMENTAL). Advanced → Camera lets you feed a chosen gallery image into an app's camera instead of the real sensor — aimed at privacy and video-call preview. This is experimental and off by default: it does not yet work in every app, and it does not defeat depth/liveness or attestation checks. Video sources are stored but not yet delivered. Existing behavior is unchanged unless you explicitly pick a camera source for an app.

Improved

  • Spoofed Values preview now mirrors the actual runtime resolution — native-surface identifiers show their fixed value (they can't vary per-launch/day), Java-only random-daily shows today's value, and random-per-launch is labelled as varying each launch — so the preview matches what apps really read.

Bundled

  • Zygisk companion v0.9 (native inline hooking is opt-in and OFF by default; W^X-hardened trampoline/hook sites so memory scanners don't flag it). Flash the attached privacykit-zygisk-v0.9.zip in your root manager; native spoofing stays off until you enable it in the app.

Assets

2

8/3/2026, 5:55:41 PM

Privacy Kit 1.14 (versionCode 16)

Highlights

  • Native inline hooking is now opt-in and OFF by default. A stock install installs no native inline hooks, so it passes anti-tamper / memory-integrity scanners (e.g. Duck Detector) out of the box. Turn it on in Settings → Native Spoofing → "Enable native hooking (advanced)" when you want native-level spoofing. The Java/Xposed layer still spoofs regardless.
  • Zygisk native module (v0.9) hardening (W^X). The And64 inline-hook trampoline pool and every patched target page are sealed to r-x after install, so the module no longer maps persistent writable+executable memory that scanners flag as code injection.
  • Randomize custom values. A dice icon next to each Custom identifier field regenerates that value; a "randomize all" action on the Identifiers screen regenerates every Custom field in a profile at once.
  • Fixes/improvements to the property-read hook and os.version/kernel spoofing.

Assets

  • PrivacyKit-v1.14.apk — the LSPosed module (install/update via LSPosed).
  • PK-Probe-1.14.apk — companion probe app for cross-checking spoofed identifiers.
  • privacykit-zygisk-v0.9.zip — native Zygisk companion (flash in KSU/Magisk; optional, off by default).

Assets

3

7/25/2026, 3:23:01 PM

New anti-fingerprint coverage

  • SystemProperties hook — spoofs ~60 ro.* properties (brand, fingerprint, per-partition product props, marketname, SoC/board, hardware, radio, locale) read via SystemProperties.get.
  • getprop exec hook — rewrites getprop <key> and bare getprop dumps run via Runtime.exec/ProcessBuilder, closing the native-shell cross-check.
  • Derived build propsro.build.version.incremental, ro.build.description, ro.build.flavor derived from the spoofed fingerprint; Build.HOST/USER/VERSION.INCREMENTAL no longer leak.
  • NetworkInterface MACNetworkInterface.getHardwareAddress() returns the spoofed Wi-Fi MAC for wlan/p2p/eth (closes a MAC bypass).

New "Privacy Restrictions" (opt-in, per profile)

Set an item's rule to Empty / Restricted to return an empty result: Device Accounts, Bluetooth bonded devices, Wi-Fi scan results, Wi-Fi configured networks, Cell info; Contacts, Call log, SMS/MMS, Calendar.

Fixes

  • AI profile generation updated to current provider models (DeepSeek deepseek-v4-flash, Gemini gemini-2.5-flash); AI Providers settings show every provider's saved key.

Assets

1

7/12/2026, 6:17:40 PM

Privacy Kit 1.10 (versionCode 12)

Random per launch is now consistent — a spoofed identifier keeps one value for the whole launch (so the getter, GMS-reflection and IPC-binder App Set ID paths all match) and changes on the next launch. Previously each read could differ.

Substitute hooks are a first-class type — new "Substitute value" template and editor (real value to match / replace with); they appear in each profile's Identifiers list and count like other custom hooks. The "Replace with" field accepts a $profile:<key> token to map the spoof to a profile identifier. App Set ID substitution remains automatic per device (the module learns your real value).

Assets

1

7/11/2026, 3:20:14 PM

Privacy Kit 1.9 (versionCode 11)

App Set ID / GMS spoofing — SDK-agnostic value-substitution defeats the async App Set ID binder path (IPC Binder / GMS Result Reflection); added AppSetIdInfo.getId and AOSP android.adservices AppSetId.getId hooks; class-load watcher now also hooks BaseDexClassLoader.findClass so deferred SDK hooks install reliably.

Custom hooks are now per-profile identifiers — they appear in each profile's Identifiers list, configured there (Real / Static / Custom / Random per launch / Random per day); new Apply-to-all action; simplified Custom Hooks screen.

Community configs — new Community section: browse, pick a target app, apply spoof configs shared in a public GitHub repo, and submit your own.

Backup — fixed isolated-session data silently dropped on some devices (portable gzip archiving); live progress dialog, background-safe, completion notification.

License — Expiry now shows the real license duration (0 days = lifetime); added Reset license key.

Logs — simplified diagnostic log; module logs hooked <key> = <value>.

Assets

1

7/4/2026, 12:50:51 PM

Privacy Kit 1.8 adds live in-process configuration updates and new location tooling for the LSPosed app.

Highlights:

  • Live config polling: location policy, Build fields, and identifier hooks (android_id, IMEI, SIM/carrier, Firebase/GMS ids, etc.) now apply to an already-running hooked app within seconds via libxposed API 102's HookHandle.replaceHook (identifiers) and a live-read reference (location/Build fields) -- no more force-stop required for most config changes.
  • Region Preset: sets GPS, timezone, locale, and carrier identifiers together from a set of predefined regions.
  • Activity Simulation: schedules a daily walk/jog (round trip) or one-way drive to a saved Favorite Location, at a random time within a configured morning window.
  • Favorite Locations: save and reuse named coordinates across Region Preset, Location Policy, and Activity Simulation.
  • Map-based location picker (MapLibre, no Google API key required).
  • In-app hook log viewer and a generalized, keyword-driven GMS/Firebase binder discovery tool.
  • Fixed a History screen bug where "not configured" hooks were silently dropped instead of shown.
  • Fixed a live-update loop that could repeatedly reapply a "Random Per Launch" identifier's hook every poll cycle instead of leaving it fixed for the process's lifetime.
  • Kept the LSPosed distribution repository release-only: this release contains the compiled APK and release metadata only, not the private Android source tree.

Verification:

  • Package: com.sal.privacykit
  • Version: versionCode 10, versionName 1.8
  • APK asset: app-release.apk
  • APK SHA-256: 827286F703BEEEF333AA82F7215CED15732B203F6A9ABAFEAF39EC0DBA51D578
  • APK size: 65,478,583 bytes
  • APK Signature Scheme v2: verified
  • Signing certificate SHA-256: 95e9144aa166767181a67b968842c3227bbcdf6e36649100d799d5d7260429a9
  • Manifest debuggable flag: absent / non-debuggable release
  • Release assembly: passed
  • Unit tests: :app:testDebugUnitTest passed

Assets

1

6/29/2026, 9:58:27 PM

Privacy Kit 1.7 is a cleanup and hardening release for the LSPosed app.

Highlights:

  • Refreshed cleanup and license-hardening work from private source commit d261ccd.
  • Fixed license refresh/expiry handling so cached and refreshed license state stays reliable.
  • Improved hook/history reporting stability for spoofed identifier events.
  • Improved Advertising ID hook stability.
  • Improved browser/profile stability around isolated browsing flows.
  • Kept the LSPosed distribution repository release-only: this release contains the compiled APK and release metadata only, not the private Android source tree.

Verification:

  • Package: com.sal.privacykit
  • Version: versionCode 9, versionName 1.7
  • APK asset: app-release.apk
  • APK SHA-256: 6E0952B2C39A06BA5BC938986145E0EB3570FD25C4D2289A19683A63D3AD035B
  • APK size: 17,042,706 bytes
  • APK Signature Scheme v2: verified
  • Signing certificate SHA-256: 95e9144aa166767181a67b968842c3227bbcdf6e36649100d799d5d7260429a9
  • Manifest debuggable flag: absent / non-debuggable release
  • Release assembly: passed
  • Unit tests: :app:testDebugUnitTest passed
  • git diff --check: passed

Assets

1