언어: 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비트 해시. 3계층 방어 (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 헤더 서브셋 계획 중.