Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
eternal — 最小限のマシンアーキテクチャ、LLVMコンパイラバックエンド、Linux移植版、および仮想マシンを備え、複雑な依存関係なしに無期限に実行可能な自己完結型ソフトウェアカプセルを作成します。 | Kitploit
ツール/GitHubGitHub/adriancable/eternal
リバースエンジニアリングセキュリティ仮想化ハードウェアセキュリティ論文と研究学習と教育厳選リソース
GitHubadriancable/eternal

eternal

最小限のマシンアーキテクチャ、LLVMコンパイラバックエンド、Linux移植版、および仮想マシンを備え、複雑な依存関係なしに無期限に実行可能な自己完結型ソフトウェアカプセルを作成します。

リポジトリを見る
2111131ヶ月前Kitploit レビュー済み

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

はじめに

これはEternal Software Initiativeのルートリポジトリです。

ESIは、最小限のマシンアーキテクチャ(Subleq OISCの修正版に基づく)を定義しており、その完全な仕様はナプキンに書き留めることができるほど単純です。次に、このアーキテクチャ向けのLLVMコンパイラバックエンド、Linuxの移植版、C/C++ランタイムライブラリの移植版、および既存のソフトウェアから自己完結型の「カプセル」を構築して実行するために必要なその他のツール(リファレンス仮想マシン実装〜50行のCで記述)を提供します。

これらの目的は何でしょうか?現在のソフトウェアを実行するには、プロプライエタリで不完全に文書化されたハードウェアの上に、複雑な依存関係のスタック(コンパイラ、ライブラリ、フレームワーク、OS)が必要であり、現在のソフトウェアが将来も動作し続けることを保証することが非常に困難です。この「ビット劣化」の問題は、長年にわたってレガシーソフトウェアを保守している人なら誰でもよく知っています。しかし、今から1,000年後の歴史家が、主にソフトウェアを通じて経験される21世紀の生活を理解しようとしているところを想像してみてください。現在のソフトウェアのバイナリが保存されていたとしても、それらのバイナリが依然として実行可能であると想像するのは無理があります。QEMUのようなエミュレータはこの問題を先送りにしますが、解決はしません。それらも同様に複雑なソフトウェアとハードウェアの依存関係のスタックを持っており、遠い将来には実行できなくなるでしょう。

ESIは、この問題を次のように解決します。(1) ナプキンに書き留められるほど単純でありながら、あらゆるソフトウェアを効率的に表現できるほど強力なアーキテクチャを定義し、プロプライエタリなハードウェア、ソフトウェア、フレームワークなどの知識を必要としないこと、(2) 既存のソフトウェアをこのアーキテクチャ向けの自己完結型「カプセル」にコンパイルするためのツールチェーンを実装すること。これにより、カプセルバイナリとナプキンの指示が保存されていれば、現在のコンピューティングシステムに関する知識を一切前提とせずに、遠い将来にソフトウェアを復活させて体験できることが保証されます。

このリポジトリには、独自のESIマシンを構築して実行し、既存のソフトウェアからESI「カプセル」を構築するために必要なものがすべて含まれています。

ESIの使命の詳細については、https://www.eternal-software.orgをご覧ください。

チェックアウト

このリポジトリには、サブモジュールとして、LLVMツールチェーン、Linuxカーネル、uClibc-ng、BusyboxのESIフォークが含まれています。これらはすべて一緒にチェックアウトする必要があります。

root@kitploit:~
git clone --recurse-submodules https://github.com/adriancable/eternal

VMをビルドして試す

ESI仮想マシンをビルドするにはSDL3が必要です。apt install libsdl3-devなどでインストールしてください。他の依存関係はありません。SDL3は、現在または将来において、ピクセルの書き込みやキーボードイベントの取得を行う他の手段に簡単に置き換えることができます。

root@kitploit:~
cd eternal/vm
make

xz -d ../capsules/vmlinux.bootimage.xz
./vm ../capsules/vmlinux.bootimage

Linuxが起動したら、たとえば次のように試してください:

root@kitploit:~
cd doom
./doom

ツールチェーンのビルド

ESIツールチェーンは、最小限の労力で任意のLinuxシステム上でビルドできるはずです。また、いくつかの修正を加えてmacOS上でもビルドに成功しています。gcc、python3、CMake、ninja、flex、bisonがインストールされ、動作していることを確認してください。

チェックアウトしたeternalフォルダ内で開始します。

ステップ 1: ESI LLVM のビルド

root@kitploit:~
rm -rf llvm-project/build && mkdir -p llvm-project/build
cmake -G Ninja -S llvm-project/llvm -B llvm-project/build -DLLVM_ENABLE_PROJECTS="clang;lld" -DLLVM_BUILD_TOOLS=ON -DLLVM_ENABLE_ASSERTIONS=OFF -DCMAKE_BUILD_TYPE=Release -DLLVM_TARGETS_TO_BUILD="" -DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD="Subleq" -DLLVM_DEFAULT_TARGET_TRIPLE="subleq-unknown-linux" -DLLVM_FORCE_VC_REPOSITORY="ESI" -DLLVM_FORCE_VC_REVISION=""

cd llvm-project/build
ninja llc clang llvm-mc lld llvm-objcopy llvm-ar llvm-ranlib llvm-nm llvm-readelf llvm-strip llvm-objdump

ステップ 2: Linux カーネルヘッダのインストール

root@kitploit:~
cd ../../linux
make ARCH=subleq \
  CC=../llvm-project/build/bin/clang \
  LD=../llvm-project/build/bin/ld.lld \
  AR=../llvm-project/build/bin/llvm-ar \
  NM=../llvm-project/build/bin/llvm-nm \
  OBJCOPY=../llvm-project/build/bin/llvm-objcopy \
  INSTALL_HDR_PATH=../runtime/sysroot/kernel-headers \
  headers_install

ステップ 3: ESI C ランタイム (uClibc-ng) のビルドとインストール

root@kitploit:~
cd ../uclibc-ng
make ARCH=subleq defconfig

make ARCH=subleq \
  CC=../llvm-project/build/bin/clang \
  LD=../llvm-project/build/bin/ld.lld \
  AR=../llvm-project/build/bin/llvm-ar \
  NM=../llvm-project/build/bin/llvm-nm \
  PREFIX=../runtime/sysroot \
  STRIPTOOL=../llvm-project/build/bin/llvm-strip \
  DEVEL_PREFIX=/ \
  install_dev

ステップ 4: ESI コアランタイム (CPU, FPU, C++) のビルド

root@kitploit:~
cd ../runtime
./build_and_install_runtime.sh
./build_libcxx.sh
ninja -C ./libcxx install

ステップ 5: Busybox のビルド

root@kitploit:~
cd ../busybox
make subleq_defconfig

make CC=../llvm-project/build/bin/clang \
     AR=../llvm-project/build/bin/llvm-ar \
     STRIP=../llvm-project/build/bin/llvm-strip

mkdir ../initramfs_root/bin
cp busybox ../initramfs_root/bin/busybox

ステップ 6: ESI Linux のビルド

root@kitploit:~
cd ../linux
export KBUILD_BUILD_USER="root"
export KBUILD_BUILD_HOST="eternal"

make ARCH=subleq \
  CC=../llvm-project/build/bin/clang \
  LD=../llvm-project/build/bin/ld.lld \
  AR=../llvm-project/build/bin/llvm-ar \
  NM=../llvm-project/build/bin/llvm-nm \
  OBJCOPY=../llvm-project/build/bin/llvm-objcopy \
  defconfig

make ARCH=subleq \
  CC=../llvm-project/build/bin/clang \
  LD=../llvm-project/build/bin/ld.lld \
  AR=../llvm-project/build/bin/llvm-ar \
  NM=../llvm-project/build/bin/llvm-nm \
  OBJCOPY=../llvm-project/build/bin/llvm-objcopy

ステップ 7: カプセルのビルドと VM の実行

root@kitploit:~
cd ..
python3 tools/make_boot_image.py --stack-size 536870912 linux/vmlinux
./vm/vm linux/vmlinux.bootimage

終了したら exit と入力して VM を終了します。

独自のソフトウェアのコンパイルと実行

標準的なクロスコンパイルのワークフローです。すぐに始めるために、環境をセットアップしてclangを呼び出す便利なスクリプト(clang_userspace.sh)を提供しています。

root@kitploit:~
cat << 'EOF' > hello.c
#include <stdio.h>

int main() {
    printf("Hello, ESI world!\n");
    return 0;
}
EOF

tools/clang_userspace.sh hello.c
cp hello.elf initramfs_root/root

次に、initramfsとカプセルを再ビルドします:

root@kitploit:~
cd linux
make ARCH=subleq \
  CC=../llvm-project/build/bin/clang \
  LD=../llvm-project/build/bin/ld.lld \
  AR=../llvm-project/build/bin/llvm-ar \
  NM=../llvm-project/build/bin/llvm-nm \
  OBJCOPY=../llvm-project/build/bin/llvm-objcopy

cd ..
python3 tools/make_boot_image.py --stack-size 536870912 linux/vmlinux

VMを起動します:

root@kitploit:~
./vm/vm linux/vmlinux.bootimage

Linuxが起動したら:

root@kitploit:~
./hello.elf

技術ドキュメント

現在の開発者がアーキテクチャとツールチェーンを理解するために提供されています。これら(ナプキンを除く)は、1,000年後の誰かがカプセルを復活させて内部のソフトウェアを実行するために必要なものではありません。

  • ナプキン
  • ESIマシンアーキテクチャリファレンス
  • LLVMバックエンド移植リファレンス
  • Linuxカーネル移植リファレンス

ESI 仮想マシンの移植

  • WebAssembly - ブラウザでESI Linuxを試す

ESI仮想マシンを新しいプラットフォームに移植した場合は、Issueを提出してお知らせください。このリストに追加します。

IOCCC

ESI仮想マシンの最小化バージョン(C言語で366バイト)は、第29回IOCCCコンテストの受賞作でした。

ツールをダウンロード