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

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

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

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

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

Категории

Все категории
Loading categories
patching — Интерактивный плагин для пропатчивания бинарных файлов для IDA Pro | Kitploit
Инструменты/GitHubGitHub/gaasedelen/patching
Статический анализДинамический анализ кода (DAST)ЭксплуатацияОбратная инженерияШелл-кодОтладчикиАнализ вредоносных программАнализ Бинарных ФайловОбучение и ОбразованиеРазработка Полезной НагрузкиЭксплуатация Бинарных Файлов
1.3k14911 год назадПроверено Kitploit

Популярное

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

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

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

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

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

patching

Интерактивный плагин для пропатчивания бинарных файлов для IDA Pro

Репозиторий

Patching - Интерактивный патчинг бинарного кода для IDA Pro

Patching Plugin

Обзор

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

В настоящее время проект работает на основе небольшого форка широко используемого Keystone Engine, поддерживая патчинг x86/x64 и Arm/Arm64 с планами включить остальные архитектуры Keystone в будущих выпусках.

Особая благодарность Hex-Rays за поддержку разработки этого плагина.

Релизы

  • v0.2 — Важные исправления ошибок, совместимость с IDA 9
  • v0.1 — Первоначальный выпуск

Установка

Этот плагин требует IDA 7.6 и Python 3. Он поддерживает Windows, Linux и macOS.

Обратите внимание: старые версии IDA (8.2 и ниже) несовместимы с Python 3.11 и выше.

Быстрая установка

Выполните следующую строку в консоли IDA для автоматической установки плагина:

Windows / Linux

root@kitploit:~
import urllib.request as r; exec(r.urlopen('https://github.com/gaasedelen/patching/raw/main/install.py').read())

macOS

root@kitploit:~
import urllib.request as r; exec(r.urlopen('https://github.com/gaasedelen/patching/raw/main/install.py', cafile='/etc/ssl/cert.pem').read())

Установка вручную

Кроме того, плагин можно установить вручную, скачав распространяемый пакет плагина для вашей платформы со страницы релизов и распаковав его в папку plugins.

Настоятельно рекомендуется устанавливать этот плагин в пользовательскую директорию плагинов IDA:

root@kitploit:~
import ida_diskio, os; print(os.path.join(ida_diskio.get_user_idadir(), "plugins"))

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

Плагин патчинга автоматически загружается для поддерживаемых архитектур (x86/x64/Arm/Arm64) и добавляет соответствующие действия по патчингу в контекстное меню правой кнопки мыши в окнах дизассемблера IDA:

Patching plugin right click context menu

Полный список контекстных действий по патчингу описан в следующих разделах.

Сборка (Assemble)

Основной диалог патчинга можно запустить через действие «Сборка» в контекстном меню правой кнопки мыши. Он имитирует базовый вид дизассемблера IDA, который можно использовать для редактирования одной или нескольких инструкций подряд.

The interactive patching dialog

Строка ассемблера — это редактируемое поле, которое можно использовать для изменения инструкций в реальном времени. Нажатие Enter фиксирует (применяет патч) введённую инструкцию в базе данных.

Ваше текущее местоположение (т.е. курсор) всегда будет выделено зелёным цветом. Инструкции, которые будут перезаписаны в результате вашего патча/редактирования, будут выделены красным цветом до фиксации патча.

Additional instructions that will be clobbered by a patch show up as red

Наконец, клавиши со стрелками ВВЕРХ и ВНИЗ можно использовать, находясь в фокусе редактируемого текстового поля ассемблера, чтобы быстро перемещать курсор вверх и вниз по дизассемблеру без использования мыши.

NOP

Самое распространённое действие патчинга — замена одной или нескольких инструкций на NOP. По этой причине действие NOP всегда будет видно в контекстном меню для быстрого доступа.

Right click NOP instruction

Отдельные инструкции можно заменить на NOP, а также выбранный диапазон инструкций.

Принудительный условный переход

Принуждение условного перехода к всегда выполнению «хорошего» пути — ещё одно распространённое действие патчинга. Плагин будет показывать это действие только при щелчке правой кнопкой мыши по инструкции условного перехода.

Forcing a conditional jump

Если вы никогда не хотите, чтобы условный переход выполнялся, вы можете просто заменить его на NOP!

Сохранение и быстрое применение

Патчи можно сохранить (применить) к выбранному исполняемому файлу через подменю патчинга в любое время. Действие быстрого применения позволяет ещё быстрее сохранять последующие патчи с теми же настройками.

Applying patches to the original executable

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

Отмена патча

Наконец, если вы когда-либо остались недовольны патчем, вы можете просто щёлкнуть правой кнопкой мыши по заплаченным (жёлтым) блокам инструкций, чтобы вернуть их к исходным значениям.

Reverting patches

Хотя «легко» вернуть байты к исходному значению, «трудно» восстановить анализ до предыдущего состояния. Отмена патча может иногда требовать дополнительных ручных исправлений.

Известные ошибки

  • Дальнейшее улучшение корректности ARM / ARM64 / THUMB
  • Определить «лучшее» поведение для cpp::like::symbols(...) / IDB (сейчас очень сомнительно)
  • Добавление / Обновление / Изменение / Отображение / Предупреждение о записях перемещения??
  • Обработка переименованных регистров (например, для idb с аннотациями dwarf)?
  • Некоторые новые инструкции (примерно с 2017 года и новее) не поддерживаются Keystone
  • Некоторые проблемные кодировки инструкций в Keystone

Планы на будущее

При наличии времени и мотивации будущие работы могут включать:

  • Включить остальные основные архитектуры, поддерживаемые Keystone:
    • PPC32 / PPC64 / MIPS32 / MIPS64 / SPARC / SystemZ
  • Многоинструкционная сборка (например, xor eax, eax; ret;)
  • Многострочная сборка (например, shellcode / метки ассемблера)
  • Интерактивное редактирование байтов/данных/строк
  • Подсказки символов / автозавершение / нечёткое сопоставление
  • Подсветка синтаксиса редактируемой строки ассемблера
  • Улучшенные подсказки об ошибках, проблемах синтаксиса и т.д.
  • NOP / Force Jump из представления Hex-Rays (звучит легко, но, вероятно, довольно сложно!)
  • Переключатель между режимом «pretty print» и «raw»? или отображать оба?
    root@kitploit:~
    Pretty:  mov     [rsp+48h+dwCreationDisposition], 3
       Raw:  mov     [rsp+20h], 3
    

Я приветствую внешние вклады, сообщения об ошибках и запросы функций. Пожалуйста, делайте любые pull-запросы в ветку develop этого репозитория, если хотите, чтобы они были рассмотрены для будущего выпуска.

Авторы

  • Маркус Гаазеделен (@gaasedelen)
Скачать инструмент