AmznKiller

libxposed API 102 Release Android 10+

An Xposed module that hides ads and sponsored products in the Amazon Shopping app. It injects CSS rules into Amazon's pages that hide the ad markup and leave the rest of the page alone.

  • Remove ads: hides sponsored results, ad slots and sponsored video carousels.
  • Price history: adds Keepa and CamelCamelCamel charts to product pages, each with its own switch. Keepa covers Amazon US, UK, DE, FR, JP, CA, IT, ES, IN, MX, BR and AU. CamelCamelCamel covers the same stores except IN, MX and BR.
  • Hide Rufus AI: removes Amazon's Rufus assistant.
  • Disable video autoplay: videos wait for a tap.
  • Dark mode: forces a dark theme on Amazon. Experimental, see Force dark.
  • Rule updates: ships with built-in rules and updates them from this repo, or from a list URL you set.
  • App updates: installs new versions from GitHub releases after checking the checksum and the signing key.

Note

The blocking is cosmetic. Amazon still sends its ad requests. Pair it with a DNS blocker such as AdGuard, NextDNS or Pi-hole to stop those too.

Before and after

Search query: "macbook air m1 16gb 512"

Stock (2 real results, rest are ads) With AmznKiller
Stock Amazon app Amazon app with AmznKiller

Stock With AmznKiller
Price charts Echo Dot page without price charts Echo Dot page with Keepa and CamelCamelCamel charts
Dark mode Product page in Amazon's own theme Product page with dark mode on

Companion app
Dashboard
Dashboard
Settings
Settings
About
About
Update
Update

Install

Needs Android 10 or newer, root and an Xposed framework with libxposed API 101 or newer (LSPosed or Vector).

  1. Download the APK:

    GitHub Releases Obtainium

  2. Enable AmznKiller in your Xposed manager. The scope is fixed to Amazon Shopping (com.amazon.mShop.android.shopping), Amazon India (in.amazon.mShop.android.shopping) and Amazon Business (com.amazon.mShop.android.business.shopping).

  3. Force stop Amazon Shopping and open it again.

  4. Open AmznKiller. The dashboard says Ads are blocked once the module is active.

Settings apply while Amazon is running, on the next page load: Remove ads, rule updates, Keepa, CamelCamelCamel, video autoplay and WebView debugging. Hide Rufus AI and Dark mode need a force stop of Amazon Shopping.

AmznKiller targets libxposed API 102, so on a framework with hot reload a new version takes effect without restarting Amazon.

Force dark

Amazon opts out of Android force dark with forceDarkAllowed=false in its theme. AmznKiller turns force dark back on for native views and WebViews and adds CSS fixes for the parts it gets wrong.

It needs Android 15 (API 35) or newer. On Android 10 to 14 Amazon's opt-out wins. Some ROMs that aren't Pixel builds don't support it.

Pick Off, System or On under Amazon appearance on the dashboard, then force stop Amazon Shopping.

Troubleshooting

  1. If the dashboard says AmznKiller isn't active, enable the module in your Xposed manager.
  2. Force stop Amazon Shopping and open it again.
  3. Pull down on the dashboard to update the rules. If the update fails, reset Rule source in Settings to the default.
  4. If a page looks broken, turn off Remove ads to check whether the rules cause it.
  5. Open an issue and paste the versions from About > Diagnostics.

Build

git clone https://github.com/hxreborn/amznkiller.git
cd amznkiller
./gradlew :app:assembleDebug

Requires JDK 21 and the Android SDK. Configure local.properties:

sdk.dir=/path/to/android/sdk

# Optional: release signing
RELEASE_STORE_FILE=<path/to/keystore.jks>
RELEASE_STORE_PASSWORD=<store_password>
RELEASE_KEY_ALIAS=<key_alias>
RELEASE_KEY_PASSWORD=<key_password>

See CONTRIBUTING.md before opening a pull request.

License

GPL-3.0

Releases

v2.6.0

Stable

10/21/2026, 5:06:24 AM

What's Changed

Closes #6

Features

Bug Fixes

Refactor

Dependencies

Build

Assets

1

v2.5.2

Stable

8/17/2026, 11:51:22 AM

What's Changed

Bug Fixes

  • ae38ba3 (hook) Darken the bottom tab bar where force dark skips it by @hxreborn

  • 212ea59 (prefs) Skip auto update fetch when cached selectors are not stale by @hxreborn

  • f1db3f0 (ui) Use auto-mirrored TrendingUp icon so it flips in RTL locales by @hxreborn

Dependencies

Build

  • 0bf01a4 (hook) Suppress deprecation on bar colors that no-op under edge to edge by @hxreborn

Assets

1

v2.5.1

Stable

7/24/2026, 9:36:04 PM

What's Changed

Bug Fixes

Dependencies

Build

Miscellaneous

Assets

1

v2.5.0

Stable

7/20/2026, 11:28:34 AM

What's Changed

Features

Bug Fixes

Dependencies

Assets

1

v2.4.0

Stable

7/12/2026, 8:39:03 PM

What's Changed

Features

Bug Fixes

Performance Improvements

Refactor

Dependencies

Assets

1

v2.3.2

Stable

6/12/2026, 6:39:51 AM

What's Changed

Bug Fixes

Performance Improvements

Refactor

Build

Miscellaneous

Assets

1

v2.2.0

Stable

5/14/2026, 9:26:11 AM

What's Changed

Features

Refactor

CI/CD

Miscellaneous

Assets

1

v2.3.0

Stable

5/28/2026, 6:08:28 AM

What's Changed

Features

Bug Fixes

  • e0be6de (hook) Force dark tab icon tinting could cause rendering glitches by @hxreborn

  • 352b79d (ui) Refresh button reflects loading and error by @hxreborn

  • 80fad20 (ui) Apply navigation bar insets to bottom nav by @hxreborn

  • a99398c Settings save gracefully even when Xposed service is unavailable by @hxreborn

  • 45b73a4 Module settings could be stale or ignored on first hook load by @hxreborn

  • d56442d Verbose logging toggle now takes effect without restarting the app by @hxreborn

Performance Improvements

  • 468886d Skip debug string construction when verbose logging is off by @hxreborn

Refactor

Miscellaneous

Assets

1

v2.1.0

Stable

4/25/2026, 5:08:47 PM

What's Changed

Added

Fixed

Changed

Other

Assets

1

v2.0.1

Stable

4/3/2026, 9:48:15 PM

What's Changed

Fixed

  • 0b18141 - (charts) Show charts on cart product links by @hxreborn

    Fix a bug where price charts did not appear when opening products from the cart.

  • ba8a66b - (ui) Keep splash until settings state is ready by @hxreborn

Changed

  • 05db728 - (ui) Split screen state and extract dashboard/settings components by @hxreborn

  • 64f0a94 - (ui) Remove selector bottom sheet from dashboard by @hxreborn

New Contributors

Assets

1

v2.0.0

Stable

3/18/2026, 4:48:26 PM

What's Changed

Added

  • 8006a71 - Migrate to libxposed API 101 [breaking] by @hxreborn in #14

    Migrates from libxposed API 100 to 101. API 100 will no longer be supported once 101 is officially released. An LSPosed Manager with API 101 support may not be publicly available yet.

Other

Assets

1

v1.2.3

Stable

3/16/2026, 11:19:48 AM

What's Changed

Added

Fixed

  • 31a4695 - (charts) Re-inject price charts on SPA variant navigation by @hxreborn

    • price charts now update when switching product variants (e.g. size/color)
  • 21064f2 - (selectors) Hide homepage video/creative ad cards by @hxreborn

    • fixes empty space left behind when inner ad content was already hidden

Other

Assets

1

v1.2.2

Stable

2/28/2026, 7:57:35 AM

What's Changed

Added

Fixed

  • 009ef83 - (charts) Prevent injection inside buybox swatch buttons by @hxreborn

    price charts were rendering inside the one-time purchase tab card on subscribe & save products

    Fixes #11

Changed

Other

Assets

1

v1.2.1

Stable

2/27/2026, 8:06:26 AM

What's Changed

Fixed

  • 8317698 - (xposed) Stop writing to read-only remote prefs in hooked process by @hxreborn

    • Fixes UnsupportedOperationException on every Amazon app launch when selectors are stale

    Closes #10

Assets

1

v1.2.0

Stable

2/15/2026, 4:48:17 PM

What's Changed

Added

  • ec50887 - Add Amazon India package support by @hxreborn

    • Module now hooks both com.amazon and in.amazon Shopping apps

    Fixes #8

Changed

  • ca908b1 - (scripts) Stop writing embedded.css from update_selectors by @hxreborn

    • embedded.css is now hand-maintained, not auto-generated
    • the script only produces lists/generated/merged.txt (the remote list)
    • CI workflows no longer validate or diff-check embedded.css

Other

New Contributors

  • @github-actions[bot] made their first contribution in #7

Assets

1

v1.1.0

Stable

2/15/2026, 12:37:19 AM

What's Changed

Added

  • 08b0665 - Initial price history charts and experimental force dark mode by @hxreborn

    • Keepa and CamelCamelCamel chart embeds on product pages (12 locales)
    • Force dark overrides Amazon's forceDarkAllowed=false via framework hooks
    • Both features default to disabled

Fixed

  • c06a374 - (ui) Correct license screen wording by @hxreborn

  • 8eeefea - (xposed) Pass classLoader to ForceDarkHooker.hook by @hxreborn

  • 203fa82 - (xposed) Make bottom nav icons visible under GPU force dark by @hxreborn

    • Hook getTabIcon on Base/SavX/SwitcherTabController to tint icons grey (168,168,168) so GPU force dark inverts them to near-white
    • Guard against tint and drawable resets with TintListGuard and DrawableChangeGuard
    • Drop redundant ForceDarkOverrideHooker since determineForceDarkType ALWAYS mode ignores per-view opt-out
    • Remove dead safeIdName extension
    • Extract hookMethod helper to deduplicate hook registration
  • 141b2c9 - Close resource leak in embedded selector loader by @hxreborn

Changed

Other

  • df75ebd - Release v1.1.0 by @hxreborn

  • 225f915 - Add organization options to issue templates by @hxreborn

    • Add price charts and dark theme issue type options to bug report template
    • Add tracking issue links to config
    • Standardize environment fields (device, android, module version) across templates
    • Add location options for order history, account pages, price charts
  • 1cfb5c6 - Assorted build and resource fixes by @hxreborn

    • Move embedded.css to payload/css/ subdirectory
    • Fix snackbar format string from %s to %d for rule count
    • Add dark background CSS rules to dark_mode.js for navigation flash
    • Suppress UnstableApiUsage warnings in Gradle scripts
    • Add SuppressLint for LocalContextGetResourceValueCall in RulesBottomSheet
    • Rewrite Force Dark FAQ section in README
    • Add Known Issues section to README
  • 130cd09 - Remove unreferenced local screenshot assets by @hxreborn

Assets

1

v1.0.0

Stable

2/11/2026, 7:42:06 AM

Initial release.

For previous changelog, see pre-releases.

What's Changed

Added

  • 14000ac - (ui) Add animated splash screen by @hxreborn

  • 00bbb8e - Add ghost state to metrics grid when injection is disabled by @hxreborn

    • Left card shows pause icon and "Injection paused"
    • Right card dims and disables click
  • b89fe37 - Persist refresh failure state and use string resources for error messages by @hxreborn

    • Dashboard shows error state after app restart if last sync failed
    • Error messages use string resources instead of hardcoded text

Fixed

  • 0772e25 - (hook) Skip toast when amazon starts in bg by @hxreborn

    process restarts from push/content-provider trigger onPackageLoaded without the app being visible

  • 7e2a51e - (util) Add missing XposedModule import by @hxreborn

  • 6c5e46b - Split Logger into debug and info tiers by @hxreborn

    • Boot and error logs always emit
    • Runtime verbosity respects the debug logs toggle
  • b178a48 - Gate WebView debugging on WEBVIEW_DEBUGGING pref by @hxreborn

    • Toggle in settings now actually controls WebView debugging
    • Requires force stopping Amazon to take effect
  • ac658e9 - Replace report-issue icon with Feedback by @hxreborn

Changed

  • b7192d5 - Simplify toast logic in AmznkillerModule by @hxreborn

    • Flattened nested reflection blocks
    • Removed redundant process check
  • 501b058 - Reduce StyleInjector.inject() complexity by @hxreborn

    • Split into smaller focused methods
    • Clearer field and class names
    • Comments for non-obvious logic
  • 7c2d77c - Improve ShapeUtil readability and TimeFormat granularity by @hxreborn

    • Named corner params instead of positional
    • Finer relative time buckets under 1 minute
    • Day-level relative time before falling back to date
  • 132e7f4 - Simplify dashboard state, remove dead code, reorganize packages by @hxreborn

    • Removed unused frameworkPrivilege field
    • Simplified UpdatesCard with local status enum
    • Moved ViewModel and UiState to shared packages

Other

Assets

1