言語: English | 简体中文 | 繁體中文 | 日本語 | 한국어 | Français | Deutsch | Español | Italiano | Русский | العربية
本ドキュメントは、計画中・進行中・意図的に延期した機能を追跡します。
NeverC の dyncode パイプラインは以下をカバー:
- 11+ 個の専用パスを持つ完全な LLVM IR パイプライン
- COFF / ELF / Mach-O エクストラクタ
- Win32 PEB-walk インポート解決(ROR-13 ハッシュ、6 DLL バケット)
- ダイレクト syscall 低レベル化(Darwin
svc #0x80、Linuxsvc #0/syscall) - カーネルモードサポート(Windows、Linux)
- 設定可能なプロファイルによるバッドバイト監査
- バッドバイトリライターと文字セットエンコーダーのプラグイン SDK
- サイズ / アライメント / パディング制約(
-fdyncode-max-length=、-fdyncode-align=、-fdyncode-pad=) - IR、MIR、バイトストリーム 3 層で計 11 個の難読化フック
-
サイズ / アライメント / パディング制約 — ビルトイン。
-fdyncode-max-length=、-fdyncode-align=、-fdyncode-pad=はfinalizeDynCodeBytesの末尾で実行。ドライバは矛盾する設定を拒否(例:パッドバイトがバッドバイトセット内にある、または align/max-length なしの pad)。 -
アウトオブツリー C プラグイン API — 純粋 C ABI プラグインインターフェース(
NevercPluginAPI.h)。IR、MIR、Binary、Linker のカスタムパスを 11 の dyncode フックポイント(NEVERC_INTERPOSE_SC_*)に登録可能。単一ヘッダー SDK、LLVM/CRT 依存ゼロ。詳細は Plugin API ドキュメント を参照。
以下の機能は 意図的にビルトインしない。戦略 / 難読化レイヤーに属し、フックとプラグインインターフェースを通じてサードパーティプラグインが提供する設計。
| 機能 | フックポイント | 備考 |
|---|---|---|
| アンチディスアセンブリ | RunBeforePreEmit / RunAfterPreEmit / RunAfterFinalMIR |
命令プレフィックス干渉、ジャンプ並び替え、ジャンクバイト挿入 |
| ポリモーフィズム | RunAfterFinalMIR / RunPostExtract |
シードベースのコンパイルごとの出力変化 |
| ステージドエンコーダー(XOR / RC4 / 自己復号) | RunPostExtract / RunPostFinalize |
コンパイル時スタブ生成 + ペイロード暗号化 |
| 間接 syscall(Halos / Tartarus / Recycled Gate) | IR レベルプラグインまたは RunPostExtract |
ランタイム ntdll ガジェットスキャン |
| スリープマスク / コールスタックスプーフィング | IR パスプラグイン | Ekko / FOLIAGE / Cronos パターン |
| ETW / AMSI パッチ | IR パスプラグイン | ランタイムパッチシーケンス |
| モジュールストンプ / アンフック | IR パスプラグイン | メモリ操作パターン |
3 層で計 11 フック:
IR 層(6 フック、ModulePassManager & を受け取り):
RunBeforePrep— dyncode パスの前RunAfterPrep— リンケージ統一後RunBeforeInlining— AlwaysInliner 前の最後の機会RunAfterInlining— IR が 1 関数に完全フラット化RunAfterStackify— コード生成前の最終 IR 形状RunAfterFinalIR—AllBlrPass後、絶対最後の IR フック
MIR 層(3 フック、TargetPassConfig & を受け取り):
RunBeforePreEmit— レジスタ割り当て済み、CFI/EH 疑似命令ありRunAfterPreEmit—MIRPrepPassクリーンアップ後、最終バイトに最も近いRunAfterFinalMIR— LLVMaddPreEmitPass2()後、AsmPrinter 直前
バイトストリーム層(2 フック、SmallVectorImpl<uint8_t> & を受け取り):
RunPostExtract— プレファイナライズ、リライター/エンコーダー/監査/サイジングが処理RunPostFinalize— ポストファイナライズ、ディスク書き込み直前;NeverC は以降の監査を行わない
各エクストラクタは .bin 書き込み前に finalizeDynCodeBytes を呼び出す:
applyPostExtractObfuscationInterpose (C Plugin API: NEVERC_INTERPOSE_SC_POST_EXTRACT)
|
auditFinalBadBytes (ビルトインハード監査)
|
applyDynCodeSizing (-fdyncode-align/-max-length/-pad)
|
applyPostFinalizeObfuscationInterpose (C Plugin API: NEVERC_INTERPOSE_SC_POST_FINALIZE)
使用法とコード例は Plugin API ドキュメント を参照。
- クロスランゲージフロントエンド — NeverC は自身の C23 フロントエンドのみを受け入れる。IR パイプラインはフロントエンドから分離されているが、外部 bitcode(例:
rustcやzigから)の受け入れはプロジェクト目標ではない。