اللغات: English | 简体中文 | 繁體中文 | 日本語 | 한국어 | Français | Deutsch | Español | Italiano | Русский | العربية
ربط do_faccessat عند نقطة الدخول باستخدام neverc_krt_interpose_register. يوضح:
- التسلسل التلقائي: عدة معالجات على نفس الهدف، تُنفَّذ حسب الأولوية
- نمط استدعاء الأصلي: يستقبل المعالج مؤشر
origلاستدعاء الدالة الأصلية - التحكم بالأولوية: قيمة أقل = تنفيذ أولاً؛ استخدم قيم سالبة للتنفيذ قبل الخطافات الأخرى
- التعايش: يعمل حتى لو كان الهدف مُربوطاً مسبقاً بواسطة وحدة أخرى
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);توقيع المعالج:
long my_interpose(void *orig, void *a0, void *a1, void *a2, void *a3, void *a4, void *a5);cd examples/android-kernel-inline-interpose
neverc make # debug: -g (الافتراضي في أول بناء)
neverc make release # release: -O2 --strip
neverc make debug # العودة إلى debugاختر إعداد نواة آخر، مثلاً، بواسطة neverc make KERNEL=612 release.
يتوسع الأمر neverc make release إلى -O2 --strip. يسجل Makefile قيمتي
KERNEL وPROFILE المختارتين في .nvk-build-flags، ولذلك تستخدم أوامر
make push وmake run وmake بلا هدف الأثر نفسه لاحقًا. عند غياب ملف الحالة
هذا، يستخدم make بناء debug افتراضيًا. يحدّث make debug أو PROFILE=...
الصريح ملف التعريف المحفوظ، ويحذف make clean ملف الحالة ليعود البناء التالي
إلى debug.
تكتب NeverC خمس فئات من أسماء الإصدار المستوحاة من IDA من دون استخدام بادئاتها
المحجوزة: الدوال fn_HEX، والتسميات التنفيذية عديمة النوع code_HEX، والكائنات
obj_HEX، والتسميات الأخرى عديمة النوع sym_HEX، والرموز المطلقة abs_HEX.
في التعريف العادي المخصص يكون HEX هو analysis EA حتميًا مشتقًا من التخطيط
النهائي لأقسام SHF_ALLOC (أما abs_HEX فيستخدم st_value المطلق)؛ وهو ليس
hash (تجزئة)، ولا encryption (تشفيرًا)، ولا file offset (إزاحة ملف)، ولا ELF
virtual address (عنوان ELF افتراضيًا)، ولا runtime kernel address (عنوان النواة
وقت التشغيل). ولا تخزن NeverC صيغ sub_/loc_ المحجوزة أو أسماء عادية فارغة
عمدًا.
راجع سياسة الإصدار والتجريد لمعرفة
الأسماء الواجب إبقاؤها كما هي، ومعنى عرض extern التركيبي في IDA، وحدود الأمان،
وترتيب الإنهاء والتوقيع.
neverc make runأو يدوياً:
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'على الجهاز، يبث cat /proc/kmsg مخزن حلقة النواة في الوقت الفعلي — شبيه بـ DbgView على Windows. استخدمه عندما يفشل insmod برسالة غامضة أو تحتاج سبب الرفض الحقيقي (vermagic وmodversions وحجم القسم، إلخ).
الطرفية 1 (اتركها تعمل):
adb shell
su
cat /proc/kmsgالطرفية 2:
adb shell su -c 'insmod /data/local/tests/nvk_interpose_demo.ko'تظهر الأسطر الجديدة في الطرفية 1 لحظة التحميل. اضغط Ctrl+C للإيقاف.
ملاحظة: dmesg -w غير متوفر على بعض إصدارات Android؛ /proc/kmsg يحتاج root لكنه أكثر موثوقية لتصحيح تحميل الوحدات.
neverc make rmmod