言語: English | 简体中文 | 繁體中文 | 日本語 | 한국어 | Français | Deutsch | Español | Italiano | Русский | العربية
-fdyncode は当初 ring-3 ペイロードのみをカバー。Ring-0 ペイロード(Windows ドライバ、Linux/Android カーネルモジュール、macOS kext)は ring-3 ABI を再利用できない:TEB/PEB が存在しない、syscall 命令はユーザー→カーネルのトラップ、x86_64 ではコードモデルとレッドゾーンの無効化が追加で必要。
- ユーザーモード(デフォルト):既存 PEB / syscall stub パイプラインを維持。
- カーネルモード:SyscallStubPass / WinPEBImportPass 無効化、カーネルフラグ注入、KernelImportPass 起動、
__NEVERC_DYNCODE_KERNEL__注入。
Level(User/Kernel)、KernelImport、KernelInjectFlags。カーネルサポート追加は「テーブル 1 行追加」。
| 次元 | x86_64 カーネル | AArch64 カーネル |
|---|---|---|
| レッドゾーン | -mno-red-zone |
自然に不在 |
| コードモデル | -mcmodel=kernel |
既存 -mcmodel=small 再利用 |
| 暗黙 SIMD | -mno-sse -mno-sse2 -mno-mmx |
-mgeneral-regs-only |
未解決 extern 直接呼出をリゾルバ支援間接呼出に自動リライト。ユーザーは普通の C を書く。暗黙 (resolver, cookie) パラメータをエントリに注入。FNV-1a 64 ビットハッシュ。三層防御(IR → MIR → 抽出器)。
Ring-3 は bionic + Linux syscall ABI;Ring-0 は純 Linux カーネル。<neverc/dyncode/kernel.h> がカーネルモード API を提供。
#include <neverc/dyncode/kernel.h>
NEVERC_KERNEL_ENTRY
int dyncode_entry(int a, int b) { return a * 13 + b * 7; }neverc_kern_resolve_t resolver と neverc_kern_hash("printk") でカーネル関数を解決。
カーネルコンテキスト切替、リゾルバリライト、純計算/リゾルバペイロードすべて完了。カーネル SDK ヘッダサブセットは計画中。