Skip to content

Latest commit

 

History

History
90 lines (64 loc) · 4.01 KB

README.ar.md

File metadata and controls

90 lines (64 loc) · 4.01 KB

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

← أمثلة NeverC

قالب برنامج تشغيل نواة Android

قالب برنامج تشغيل مع حل ديناميكي للرموز عبر kallsyms_lookup_name. يستورد فقط register_kprobe/unregister_kprobe (ABI مستقر GKI). مصدر واحد متوافق مع جميع نوى GKI 5.10–6.12.

البناء

cd examples/android-kernel-driver
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_driver.ko /data/local/tests/
adb shell su -c 'insmod /data/local/tests/nvk_driver.ko'
adb shell su -c 'dmesg | grep neverc_krt_driver'

سجل النواة (مباشر)

على الجهاز، يبث 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_driver.ko'

تظهر الأسطر الجديدة في الطرفية 1 لحظة التحميل. اضغط Ctrl+C للإيقاف.

ملاحظة: dmesg -w غير متوفر على بعض إصدارات Android؛ /proc/kmsg يحتاج root لكنه أكثر موثوقية لتصحيح تحميل الوحدات.

إلغاء التحميل

neverc make rmmod

أو يدويًا:

adb shell su -c 'rmmod neverc_krt_driver'