Skip to content

Latest commit

 

History

History
88 lines (64 loc) · 3.29 KB

File metadata and controls

88 lines (64 loc) · 3.29 KB

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

← NeverC Beispiele

Android Kernel Hello

Minimales NeverC Android-Kernelmodul (.ko). Bootstrapt kallsyms_lookup_name über kprobe, gibt eine Lademeldung aus und beendet sich sauber. Einfachste End-to-End-Validierung: Kompilierung → Linking → insmod.

Kompilierung

cd examples/android-kernel-hello
neverc make          # debug: -g (Standard beim ersten Build)
neverc make release  # release: -O2 --strip
neverc make debug    # zurück zu debug

Wählen Sie ein anderes Kernel-Preset z. B. mit neverc make KERNEL=612 release. neverc make release wählt -O2 --strip. Das Makefile schreibt die gewählten Werte für KERNEL und PROFILE in .nvk-build-flags, sodass spätere Aufrufe von make push, make run und make ohne Ziel dasselbe Artefakt verwenden. Ohne diese Statusdatei verwendet make standardmäßig debug. make debug oder ein ausdrückliches PROFILE=... ersetzt das gespeicherte Profil; make clean löscht die Statusdatei, sodass der nächste Build wieder debug verwendet.

NeverC schreibt fünf Klassen von IDA inspirierten, nicht reservierten Release-Namen: Funktionen fn_HEX, ausführbare typfreie Labels code_HEX, Objekte obj_HEX, andere typfreie Labels sym_HEX und absolute Symbole abs_HEX. Für gewöhnliche allozierte Definitionen ist HEX eine deterministische analysis EA, die aus dem endgültigen Layout der SHF_ALLOC-Sektionen abgeleitet wird (abs_HEX verwendet stattdessen den absoluten st_value); sie ist weder hash (Hashwert) noch encryption (Verschlüsselung), file offset (Datei-Offset), ELF virtual address (virtuelle ELF-Adresse) oder runtime kernel address (Kernel-Laufzeitadresse). NeverC speichert weder reservierte sub_/loc_-Formen noch absichtlich leere gewöhnliche Namen.

Die Release- und Strip-Richtlinie beschreibt die exakt zu erhaltenden Namen, IDAs synthetische extern-Ansicht, die Sicherheitsgrenzen sowie die Reihenfolge von Finalisierung und Signatur.

Bereitstellung und Ausführung

neverc make run

Oder manuell:

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

Kernel-Log (Live)

Auf dem Gerät streamt cat /proc/kmsg den Kernel-Ringpuffer in Echtzeit — ähnlich wie DbgView unter Windows. Nutzen Sie es, wenn insmod nur mit einer vagen Meldung scheitert oder Sie den echten Ablehnungsgrund sehen müssen (vermagic, modversions, Section-Größe usw.).

Terminal 1 (laufen lassen):

adb shell
su
cat /proc/kmsg

Terminal 2:

adb shell su -c 'insmod /data/local/tests/nvk_hello.ko'

Neue Zeilen erscheinen in Terminal 1 beim Laden. Mit Ctrl+C beenden.

Hinweis: dmesg -w fehlt auf manchen Android-Builds; /proc/kmsg braucht root, ist für Modul-Bring-up aber zuverlässig.

Entladen

neverc make rmmod

Oder manuell:

adb shell su -c 'rmmod neverc_krt_hello'