Skip to content

Latest commit

 

History

History
55 lines (38 loc) · 1.66 KB

File metadata and controls

55 lines (38 loc) · 1.66 KB

Languages: English | 简体中文 | 繁體中文 | 日本語 | 한국어 | Français | Deutsch | Español | Italiano | Русский | العربية

← NeverC Examples

Android Kernel Function Interpose

Interposes do_faccessat at its entry point using neverc_krt_interpose_register. Demonstrates:

  • Auto-chain: multiple handlers on the same target, dispatched by priority
  • Call-original pattern: handler receives orig pointer to invoke the original function
  • Priority control: lower value runs first; use negative to run before other interposes
  • Coexistence: works even if the target is already interposed by another module

API

int neverc_krt_interpose_register(void *target, void *handler, int priority,
                             void **orig, struct neverc_krt_interpose_ref *ref);
int neverc_krt_interpose_unregister(struct neverc_krt_interpose_ref *ref);

Handler signature:

long my_interpose(void *orig, void *a0, void *a1, void *a2, void *a3, void *a4, void *a5);

Build

cd examples/android-kernel-inline-interpose
neverc make

Change KERNEL to 515, 601, 606, 612, or 618 for other kernel versions.

Deploy & Run

neverc make run

Or manually:

adb push nvk_interpose_demo.ko /data/local/tests/
adb shell su -c 'insmod /data/local/tests/nvk_interpose_demo.ko'
adb shell su -c 'dmesg | grep neverc_krt_interpose_demo'

Unload

neverc make rmmod