Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
Инструменты/GitHubGitHub/adriancable/eternal
Обратная инженерияВиртуализация для безопасностиАппаратная БезопасностьСтатьи и ИсследованияОбучение и ОбразованиеПодобранные Ресурсы
GitHubadriancable/eternal

eternal

Минимальная архитектура машины с бэкендом компилятора LLVM, портом для Linux и виртуальной машиной для создания самодостаточных программных капсул, которые остаются работоспособными неограниченно долго без сложных зависимостей.

Репозиторий
211111 месяц назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

Введение

Это корневой репозиторий Eternal Software Initiative.

ESI определяет минимальную архитектуру машины (основанную на модификации OISC Subleq), которая настолько проста, что её полную спецификацию можно записать на салфетке. Затем мы предоставляем бэкенд компилятора LLVM для этой архитектуры, порт Linux, порты библиотек времени выполнения C/C++ и другие инструменты (включая эталонную реализацию виртуальной машины примерно в 50 строках C), необходимые для сборки и запуска самодостаточной 'капсулы' из существующего программного обеспечения.

В чем смысл всего этого? Для работы современного программного обеспечения требуется сложный стек зависимостей (компиляторы, библиотеки, фреймворки, ОС), построенный на проприетарном и неполностью документированном оборудовании, что делает очень сложным обеспечение работоспособности современного ПО в будущем. Эта проблема 'битовой гнили' хорошо известна всем, кто поддерживает устаревшее ПО в течение нескольких лет или десятилетий, но представьте себе историка через 1000 лет, пытающегося понять жизнь 21 века, большая часть которой воспринимается через программное обеспечение. Даже если сегодняшние бинарные файлы ПО будут сохранены, маловероятно, что эти бинарники всё ещё будут запускаемы. Эмуляторы, такие как QEMU, перемещают эту проблему, но не решают её: у них тоже есть аналогичный сложный стек программных и аппаратных зависимостей, и поэтому они также не будут запускаемы в далёком будущем.

ESI решает эту проблему, (1) определяя архитектуру, которая достаточно проста, чтобы записать на салфетке, но достаточно мощна, чтобы эффективно представлять любое ПО, и не требует знаний о каком-либо проприетарном оборудовании, ПО, фреймворках и т.д., и (2) реализуя инструментарий для компиляции любого существующего ПО в самодостаточную 'капсулу' для этой архитектуры. Это гарантирует, что при условии сохранения бинарного файла капсулы и инструкций на салфетке, ПО можно будет возродить и использовать в далёком будущем, не предполагая никаких знаний о современных вычислительных системах.

Этот репозиторий включает всё необходимое для сборки и запуска собственной машины ESI, а также для построения ESI 'капсул' из существующего ПО.

Для получения дополнительной информации о миссии ESI см.: https://www.eternal-software.org

Клонирование

Этот репозиторий включает, в качестве подмодулей, форки ESI инструментария LLVM, ядра Linux, uClibc-ng и Busybox. Все они должны быть клонированы вместе.

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

Сборка виртуальной машины и запуск

Для сборки виртуальной машины 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: Сборка и установка C-рантайма ESI (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: Сборка капсулы и запуск виртуальной машины

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

Введите exit, когда закончите, чтобы завершить работу виртуальной машины.

Компиляция и запуск собственного ПО

Стандартный рабочий процесс кросс-компиляции. Для быстрого старта мы предоставляем вспомогательный скрипт (clang_userspace.sh), который настраивает окружение и вызывает clang.

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

Загрузите ВМ:

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

После загрузки Linux:

root@kitploit:~
./hello.elf

Техническая документация

Предоставлена для современных разработчиков, чтобы понять архитектуру и инструментарий. Ничто из этого (кроме салфетки) не нужно тому, кто через 1000 лет захочет возродить капсулу и запустить находящееся внутри ПО.

  • Салфетка
  • Справочник по архитектуре машины ESI
  • Справочник по порту бэкенда LLVM
  • Справочник по порту ядра Linux

Порты виртуальной машины ESI

  • WebAssembly - попробуйте ESI Linux в вашем браузере

Если вы портировали виртуальную машину ESI на новую платформу, сообщите нам об этом, создав Issue, и мы добавим его в этот список.

IOCCC

Минифицированная версия виртуальной машины ESI (в 366 байтах C) стала победителем 29-го конкурса IOCCC.

Скачать инструмент