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

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

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

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

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

Категории

Все категории
Loading categories
EhTrace — ATrace — это инструмент для трассировки выполнения бинарных файлов в Windows. | Kitploit
Инструменты/GitHubGitHub/k2/ehtrace
Динамический анализ (песочница)Анализ КодаЭксплуатацияОбратная инженерияОтладчикиФаззингАнализ Бинарных Файлов
GitHubk2/ehtrace

EhTrace

ATrace — это инструмент для трассировки выполнения бинарных файлов в Windows.

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

Популярное

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

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

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

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

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

EhTrace

Логотип

EhTrace (произносится 'ATrace') — это высокопроизводительный фреймворк для трассировки и инструментирования двоичных файлов Windows. Он предоставляет возможность глубокого анализа исполняемых файлов Windows во время выполнения без необходимости в исходном коде, модификации двоичных файлов или традиционной отладке.

Обзор

EhTrace использует Vectored Exception Handling (VEH) Windows и методы блочного шага для обеспечения всесторонней трассировки выполнения с минимальными накладными расходами. В отличие от традиционных инструментов отладки или инструментирования, EhTrace работает полностью в рамках процесса и не требует патчей для целевых двоичных файлов.

Ключевые особенности

  • Нулевая модификация двоичных файлов: Трассировка выполнения без изменения целевого двоичного файла
  • Высокая производительность: Блочный шаг вместо одиночного достигает ~43 миллионов событий в секунду
  • Полное покрытие кода: Автоматическое обнаружение и отслеживание базовых блоков
  • Мониторинг состояния регистров: Захват и анализ состояний регистров во время выполнения
  • Не требует режима отладки: Работает без включения возможностей CPU debug/trace MSR
  • Работа в рамках процесса: Минимальные накладные расходы на переключение контекста по сравнению с традиционными отладчиками
  • Несколько режимов инструментирования: Поддержка различных сценариев трассировки и анализа

Основные возможности

  • Анализ потока выполнения: Отслеживание путей выполнения программы и потока управления
  • Карта покрытия кода: Создание полных отчетов о покрытии кода
  • Защита от RoP: Обнаружение и предотвращение атак с использованием программирования, ориентированного на возвраты (Return-Oriented Programming), с помощью балансировки вызовов/возвратов
  • Депонирование ключей: Возможности перехвата и депонирования криптографических ключей
  • Интеграция с фазами: Инструментирование для фазания, совместимое с AFL (AWinAFL)
  • Разрешение символов: Автоматическая загрузка и разрешение символов через DIA2

Architecture

root@kitploit:~
flowchart TB
    subgraph Target["🎯 Target Process"]
        direction TB
        APP[Application Code]
        VEH[Vectored Exception Handler]
        style APP fill:#e1f5ff,stroke:#01579b,stroke-width:3px,color:#000
        style VEH fill:#fff3e0,stroke:#e65100,stroke-width:3px,color:#000
    end
    
    subgraph EhTrace["⚡ EhTrace Engine"]
        direction TB
        BLOCK[Block Stepper]
        DISASM[Capstone Disassembler]
        FIGHTERS[BlockFighters]
        CTX[Context Manager]
        style BLOCK fill:#f3e5f5,stroke:#4a148c,stroke-width:3px,color:#000
        style DISASM fill:#e8f5e9,stroke:#1b5e20,stroke-width:3px,color:#000
        style FIGHTERS fill:#ffebee,stroke:#b71c1c,stroke-width:3px,color:#000
        style CTX fill:#e0f2f1,stroke:#004d40,stroke-width:3px,color:#000
    end
    
    subgraph Output["📊 Analysis Output"]
        direction TB
        SHMEM[Shared Memory Log]
        GRAPHS[Visual Graphs]
        REPORTS[Coverage Reports]
        style SHMEM fill:#fce4ec,stroke:#880e4f,stroke-width:3px,color:#000
        style GRAPHS fill:#f1f8e9,stroke:#33691e,stroke-width:3px,color:#000
        style REPORTS fill:#fff8e1,stroke:#f57f17,stroke-width:3px,color:#000
    end
    
    APP -->|Exception| VEH
    VEH -->|Single Step| BLOCK
    BLOCK -->|Instruction| DISASM
    DISASM -->|Analysis| FIGHTERS
    FIGHTERS -->|State| CTX
    CTX -->|Events| SHMEM
    SHMEM -->|Data| GRAPHS
    SHMEM -->|Data| REPORTS
    
    style Target fill:#e3f2fd,stroke:#0d47a1,stroke-width:4px
    style EhTrace fill:#f3e5f5,stroke:#6a1b9a,stroke-width:4px
    style Output fill:#e8f5e9,stroke:#2e7d32,stroke-width:4px

Основные принципы работы

EhTrace работает через сложный конвейер:

  1. 🛡️ Обработка исключений: Регистрация Vectored Exception Handler (VEH)
  2. 👣 Блочный шаг: Использование одношаговых исключений на границах базовых блоков
  3. 🔍 Дизассемблирование: Использование Capstone для анализа инструкций на лету
  4. 📝 Журналирование: Запись событий выполнения в общую память для внешнего анализа
  5. ⚔️ Противодействие: Применение настраиваемых 'BlockFighters' для задач безопасности и анализа

Фреймворк поддерживает состояние выполнения для каждого потока с помощью специализированных структур контекста и предоставляет хуки для настраиваемого инструментирования.

Performance

root@kitploit:~
graph LR
    subgraph Traditional["🐌 Traditional Debugger"]
        T1[Single Step]
        T2[Context Switch]
        T3[Kernel Mode]
        T4[~1M events/sec]
        style T1 fill:#ffcdd2,stroke:#c62828,stroke-width:2px,color:#000
        style T2 fill:#ffcdd2,stroke:#c62828,stroke-width:2px,color:#000
        style T3 fill:#ffcdd2,stroke:#c62828,stroke-width:2px,color:#000
        style T4 fill:#ef5350,stroke:#b71c1c,stroke-width:3px,color:#fff
    end
    
    subgraph EhTrace["⚡ EhTrace"]
        E1[Block Step]
        E2[In-Process]
        E3[User Mode]
        E4[~43M events/sec]
        style E1 fill:#c8e6c9,stroke:#2e7d32,stroke-width:2px,color:#000
        style E2 fill:#c8e6c9,stroke:#2e7d32,stroke-width:2px,color:#000
        style E3 fill:#c8e6c9,stroke:#2e7d32,stroke-width:2px,color:#000
        style E4 fill:#66bb6a,stroke:#1b5e20,stroke-width:3px,color:#fff
    end
    
    T1 --> T2 --> T3 --> T4
    E1 --> E2 --> E3 --> E4
    
    style Traditional fill:#ffebee,stroke:#d32f2f,stroke-width:3px
    style EhTrace fill:#e8f5e9,stroke:#388e3c,stroke-width:3px

EhTrace достигает высокой производительности за счет нескольких оптимизаций:

  • 🎯 Блочный шаг против одношагового: Трассировка только на границах базовых блоков
  • ⚡ Работа в процессе: Отсутствие переключений контекста отладчика
  • ⏱️ Управление временным состоянием: VEH естественным образом поддерживает состояние выполнения
  • 💾 Эффективное журналирование: Буферы общей памяти для записи событий с высокой пропускной способностью

📊 Тест производительности: 428 833 152 события (по 32 байта каждое) за 10 секунд = ~43 млн событий/с

Пример вывода

CSW16 демо-трассировка notepad.exe без символов:

График-пламя без символов

График базовых блоков с дизассемблированием Capstone:

График базовых блоков с дизассемблированием

Визуализация покрытия кода:

Визуализация покрытия кода

Components

root@kitploit:~
graph TD
    subgraph Core["🎯 Core Components"]
        EH[EhTrace.dll<br/>Main Instrumentation]
        AC[Acleanout<br/>Log Dumper]
        AG[Agasm<br/>Graph Generator]
        style EH fill:#e1bee7,stroke:#6a1b9a,stroke-width:3px,color:#000
        style AC fill:#c5cae9,stroke:#3949ab,stroke-width:3px,color:#000
        style AG fill:#b2dfdb,stroke:#00695c,stroke-width:3px,color:#000
    end
    
    subgraph Tools["🔧 Supporting Tools"]
        AL[Aload<br/>DLL Injector]
        AP[Aprep<br/>Test EXE]
        AS[Astrace<br/>Stack Tracer]
        style AL fill:#ffe0b2,stroke:#e65100,stroke-width:3px,color:#000
        style AP fill:#f8bbd0,stroke:#c2185b,stroke-width:3px,color:#000
        style AS fill:#d1c4e9,stroke:#512da8,stroke-width:3px,color:#000
    end
    
    subgraph Fuzzing["🐛 Fuzzing Integration"]
        AWA[AWinAFL<br/>AFL Instrumentation]
        style AWA fill:#ffccbc,stroke:#d84315,stroke-width:3px,color:#000
    end
    
    subgraph Viz["📊 Visualization"]
        WPF[WPFx<br/>Graph Viewer]
        DIA[Dia2Sharp<br/>Symbol Resolver]
        ASF[AStackFolding<br/>Flame Graphs]
        style WPF fill:#c8e6c9,stroke:#2e7d32,stroke-width:3px,color:#000
        style DIA fill:#fff9c4,stroke:#f9a825,stroke-width:3px,color:#000
        style ASF fill:#ffecb3,stroke:#ff8f00,stroke-width:3px,color:#000
    end
    
    EH -->|Logs| AC
    AC -->|Data| AG
    AG -->|Graphs| WPF
    AL -->|Inject| EH
    DIA -->|Symbols| AG
    ASF -->|Process| AC
    AWA -->|Variant| EH
    
    style Core fill:#f3e5f5,stroke:#7b1fa2,stroke-width:4px
    style Tools fill:#fff3e0,stroke:#ef6c00,stroke-width:4px
    style Fuzzing fill:#fbe9e7,stroke:#bf360c,stroke-width:4px
    style Viz fill:#e8f5e9,stroke:#388e3c,stroke-width:4px

Экосистема EhTrace состоит из нескольких интегрированных проектов:

Основные компоненты

  • EhTrace: Основная DLL для инструментирования (также может быть собрана как EXE для тестирования)
  • Acleanout: Сбрасывает журналы трассировки из общей памяти, созданной EhTrace
  • Agasm: Инструмент склеивания/дизассемблирования для создания графиков с символами и интеграцией Capstone

Вспомогательные инструменты

  • Aload: Утилита для внедрения DLL
  • Aprep: Тестовый исполняемый файл (EhTrace, собранный как EXE)
  • Astrace: Утилиты трассировки стека
  • AKeyTest: Тестирование депонирования криптографических ключей

Интеграция с фазами

  • AWinAFL: Инструментирование для фазания, совместимое с AFL, для Windows

Визуализация

  • WPFx: Визуализация на основе WPF с использованием библиотеки графов MSAGL
  • Dia2Sharp: Обертка C# DIA2 для обработки символов
  • TestDump2: Тестовое приложение для Dia2Sharp
  • Amerger: Утилиты для слияния журналов
  • AStackFolding: Сворачивание трассировки стека для создания графиков-пламени

Предварительные требования

Требования к сборке

  • Visual Studio 2015 или новее (набор инструментов C++)
  • Windows SDK
  • .NET Framework (для инструментов визуализации)

Зависимости времени выполнения

  • dbghelp.dll: Разрешение символов (включена в каталог support)
  • symsrv.dll: Поддержка сервера символов (включена в каталог support)
  • Capstone: Движок дизассемблирования (библиотеки в каталоге support)
  • MSAGL: Визуализация графов (Microsoft Automatic Graph Layout)

Сборка

  1. Откройте EhTrace.sln в Visual Studio
  2. Выберите целевую конфигурацию (Debug/Release) и платформу (x86/x64)
  3. Соберите решение

Подробные инструкции по сборке см. в BUILDING.md

Использование

Базовая трассировка

  1. Соберите или получите EhTrace.dll
  2. Внедрите EhTrace.dll в целевой процесс с помощью Aload или вашего предпочтительного метода внедрения
  3. Запустите целевое приложение
  4. Соберите данные трассировки с помощью Acleanout
  5. Визуализируйте результаты с помощью WPFx или пользовательских инструментов анализа

Пример рабочего процесса

root@kitploit:~
# Build EhTrace
msbuild EhTrace.sln /p:Configuration=Release /p:Platform=x64

# Inject into target
Aload.exe target.exe EhTrace.dll

# Collect trace data
Acleanout.exe > trace.log

# Analyze with Agasm
Agasm.exe trace.log output.graph

Подробную документацию по использованию см. в USAGE.md

Конфигурация

EhTrace поддерживает конфигурацию во время выполнения через фреймворк BlockFighters. Настройте поведение трассировки, изменив конфигурацию fighter в вашей сборке.

Доступные fighters:

  • RoP Fighter: Обнаруживает цепочки гаджетов ROP
  • Key Escrow Fighter: Перехватывает криптографические операции
  • AFL Fighter: Обеспечивает инструментирование для фазания
  • Пользовательские Fighters: Реализуйте собственную логику анализа

Разработка

Структура проекта

root@kitploit:~
EhTrace/
├── EhTrace/          # Core instrumentation DLL
├── prep/             # Supporting tools and utilities
├── vis/              # Visualization components
├── support/          # Dependencies and resources
├── doc/              # Documentation
└── afl-fuzz/         # AFL fuzzing integration

Ключевые исходные файлы

  • EhTrace.cpp: Основной обработчик VEH и основная логика
  • BlockFighters.cpp: Реализация фреймворка Fighter
  • Config.cpp: Управление конфигурацией и символами
  • GlobLog.cpp: Журналирование в общую память
  • KeyEscrow.cpp: Перехват криптографических ключей
  • RoP-Defender.cpp: Логика обнаружения ROP

Лицензия

Этот проект лицензирован в соответствии с GNU Affero General Public License v3.0 — подробности в файле LICENSE.

Copyright (C) 2014-2016 Shane Macaulay

Участие в разработке

Вклад приветствуется! Пожалуйста, убедитесь, что ваш код соответствует существующему стилю и включает соответствующее тестирование.

Автор

Shane Macaulay ([email protected])

Благодарности

  • Фреймворк дизассемблирования Capstone
  • Microsoft Automatic Graph Layout (MSAGL)
  • Фреймворк фазания AFL
  • Сообщество исследователей безопасности

Ссылки

Дополнительные технические сведения см. в:

  • ARCHITECTURE.md — Техническая документация по архитектуре
  • doc/ — Дополнительная документация и презентации
Скачать инструмент