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

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

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

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

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

Категории

Все категории
Loading categories
patchkit — патчинг двоичных файлов из Python | Kitploit
Инструменты/GitHubGitHub/lunixbochs/patchkit
Обратная инженерияАнализ Бинарных ФайловЭксплуатация Бинарных Файлов
GitHublunixbochs/patchkit

patchkit

патчинг двоичных файлов из Python

Репозиторий
6388253 лет назадПроверено Kitploit

Популярное

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

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

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

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

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

patchkit

Применяет патчи к ELF-бинарному файлу с помощью одного или нескольких простых скриптов на Python.

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

root@kitploit:~
patch <binary> <patchdir|file> [patchdir|file...]

patchdir

Содержит один или несколько файлов патчей на Python, которые будут выполнены в алфавитном порядке над бинарным файлом.

Примеры патчей

Замена адреса на NOP, инъекция ассемблерной функции и перехват точки входа:

root@kitploit:~
def simple_patch(pt):
    # заменить NOP'ами (5 байт) jump по адресу точки входа
    pt.patch(pt.entry, hex='90' * 5)

    # внедрить ассемблерный код в бинарник и получить адрес
    addr = pt.inject(asm='mov eax, 1; ret')

    # перехватить точку входа так, чтобы она вызывала addr (ret запустит оригинальную точку входа)
    pt.hook(pt.entry, addr)

Замена C-функции:

root@kitploit:~
def replace_free(pt):
    # предположим, что free() находится по этому адресу:
    old_free = 0x804fc4

    # внедрить функцию для замены free()
    new_free = pt.inject(c=r'''
    void free_stub(void *addr) {
        printf("stubbed free(%p)\n", addr);
    }
    ''')

    # пропатчить начало free() переходом на нашу новую функцию
    pt.patch(old_free, jmp=new_free)

API

root@kitploit:~
addr = search(data)
hook(addr, new_addr)
patch(addr, *compile arg*)
addr = inject(*compile arg*)

*compile arg* может быть любым из следующих:
  raw='data'
  hex='0bfe'
  asm='nop'
  jmp=0xaddr
  c='void func() { int a; a = 1; }' (поддерживается только в inject, не в patch)

Скрипты для IDA

Некоторые скрипты находятся в папке ida/. Запускайте их так:

root@kitploit:~
/Applications/IDA\ Pro\ 6.8/idaq.app/Contents/MacOS/idaq64 -A -Sida/allfuncs.py a.out

При таком запуске allfuncs.py создаст a.out.funcs, который используется скриптами усиления защиты.

Инструменты

Пока что они ориентированы на CGC и x86, но в будущем будут адаптированы для общего использования.

  • explore: использует граф потока управления (CFG) на Python и эмулятор с рекурсивным бэктрекингом для поиска базовых блоков в исполняемом файле.
  • bindiff: использует границы блоков, полученные в ходе работы explore, а также дополнительный анализ для поиска и вывода различий в базовых блоках между двумя бинарниками.

Зависимости

  • Запустите ./deps.sh для автоматической установки.
    • Capstone Engine - https://github.com/aquynh/capstone.git
    • Keystone Engine - https://github.com/keystone-engine/keystone.git
    • Unicorn Engine - https://github.com/unicorn-engine/unicorn.git
Скачать инструмент