Skip to content

Releases: Bouteillepleine/DuckUSB

v1.4.0

Choose a tag to compare

@github-actions github-actions released this 29 Aug 09:46

Full Changelog: v1.3.3...v1.4.0

v1.3.3

Choose a tag to compare

@github-actions github-actions released this 28 Aug 10:12

Full Changelog: v1.3.2...v1.3.3

v1.3.2

Choose a tag to compare

@github-actions github-actions released this 22 Aug 12:46

Full Changelog: v1.3.0...v1.3.2

1.3.0

Choose a tag to compare

@Bouteillepleine Bouteillepleine released this 16 Aug 19:28

Framework mode now works, and it is the recommended way to use DuckUSB: one hook in system_server covers every app at once, with no per-app scope.

⚠️ Scope the right entry

In LSPosed → DuckUSB → Scope, tick "Cadre du sous-système" / package system.

Not "Système Android" / package android — that one does not inject into system_server. Picking it gives you a module that looks enabled and silently does nothing. This release declares an xposedscope recommendation so LSPosed highlights the correct entries. Reboot after scoping.

What's new

  • Framework mode, hooking ContentProvider.attachInfo and then only the settings provider's call(), matched by authority so ROMs that subclass SettingsProvider still work. Callers below uid 10000 (root / system / shell) always see the truth, so adb and the Settings toggle keep working.
  • Diagnostics that prove it. A small binder service inside system_server (never registered with ServiceManager) reports the hook count, uptime, and every caller that was lied to since boot with per-key counts. A mis-scoped module used to look identical to a working one.
  • Live config. Toggles push to system_server over that binder and apply immediately, no reboot.
  • Pause switch — stops all spoofing at once. It does not uninstall hooks or unload the native library; LSPosed's own switch remains the real off.
  • Property spoof is now automatic in scoped non-core apps — the toggle is gone. Scoping an app already states the intent.
  • Mutually exclusive settings layers. Framework mode and per-app spoof cover the same ground; whichever is on greys out the other.
  • UI: merged status card, collapsible caller list, light/dark toggle, regrouped sections, optional verbose logging.

Fixed

  • sys.usb.ffs.ready is no longer spoofed. It is the USB function-filesystem ready flag — machinery the USB stack acts on, not telemetry a detector reads. Claiming 0 could take the whole USB gadget down: no MTP and no adb.
  • Core processes are properly protected. handleLoadPackage fires once per package hosted in a process, not once per process — with the system scope, system_server reports android, com.android.providers.settings, com.android.location.fused, com.android.server.telecom and more, all at uid 1000. The old package-name check caught only the first, so the property spoof could install inside system_server. Now guarded three ways: uid, process name, and package name.
  • OS file-transfer plumbing is spared from both spoofs — com.android.mtp and friends run at app uids, so the uid guard alone does not reach them.

Upgrading

Signed with the same key as 1.1, so this installs as an in-place update — no uninstall, and your LSPosed enable/scope is preserved.

Tested on

OnePlus 15 (CPH2747) / OxygenOS / Android 16 with LSPosed + KernelSU. Framework mode is verified there and nowhere else; other ROMs are unknown, though the provider is matched by authority and the guards key off uid and process name rather than OEM-specific package names.

1.1

1.1

Choose a tag to compare

@Bouteillepleine Bouteillepleine released this 09 Aug 10:11

What's new

  • USB system-property spoofsys.usb.* / init.svc.adbd now spoofed via Java SystemProperties and native libc hooks, catching detectors that read raw properties instead of the Settings provider.
  • Redesigned Material 3 app UI.
  • Native hooks skip core OS processes (system_server / SystemUI) and publish their override map lock-free.

Install the APK, enable DuckUSB in LSPosed, then scope your detector apps. See the README.

1.0

1.0

Choose a tag to compare

@Bouteillepleine Bouteillepleine released this 20 Jul 01:20

First release under the DuckUSB name (renamed from DuckADB).

  • Spoof USB debugging / wireless debugging / Developer Options as off to scoped apps, while they stay genuinely on.
  • Hide the persistent "USB debugging enabled" notification (needs System Framework + System UI scoped).
  • Two live toggles, both on by default, applied without a reboot.
  • Core OS is hard-skipped for the spoof half.

Functionally identical to DuckADB v1.1, which was verified on-device (spoof + notification A/B + live toggles all confirmed working).