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

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

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

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

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

Категории

Все категории
Loading categories
libpeconv — Пользовательская библиотека для загрузки и манипуляции PE-файлами, предназначенная для ручного маппинга, перехвата IAT, дампа памяти и пересборки импортов при анализе вредоносных программ и реверс-инжиниринге. | Kitploit
Инструменты/GitHubGitHub/hasherezade/libpeconv
Криминалистика памятиОбратная инженерияАнализ вредоносных программУтилиты и фреймворкиАнализ Бинарных ФайловРазработка Полезной Нагрузки
GitHubhasherezade/libpeconv

libpeconv

Пользовательская библиотека для загрузки и манипуляции PE-файлами, предназначенная для ручного маппинга, перехвата IAT, дампа памяти и пересборки импортов при анализе вредоносных программ и реверс-инжиниринге.

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

Популярное

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

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

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

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

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

libPeConv

Build status Codacy Badge Commit activity Last Commit

License Platform Badge

Библиотека для загрузки и работы с PE-файлами.

Цели

Цель libPEConv — создать «швейцарский нож» для нестандартной загрузки PE-файлов. Он содержит различные вспомогательные функции, которые можно быстро интегрировать в собственный загрузчик. Например: переразметка секций, применение релокаций, загрузка импортов, разбор ресурсов.

Он позволяет не только загружать PE-файлы, но и настраивать отдельные шаги, например, перехват IAT (путём предоставления собственных резолверов IAT) и перенаправление функций. Однако он НЕ ориентирован на инлайн-перехват и его не следует путать с такими библиотеками, как MS Detours или MinHook.

LibPeConv можно использовать для создания PE-биндеров, так как он позволяет загружать PE прямо из ресурса и интегрировать его так, как если бы это был локальный код.

Кроме того, он может помочь в дампе PE-файлов из памяти и восстановлении их IAT.

ВНИМАНИЕ: приложения, использующие MUI, не поддерживаются.

Базовый пример

Простейший вариант использования: используйте libPeConv для ручной загрузки и запуска выбранного EXE-файла.

root@kitploit:~
#include <Windows.h>
#include <iostream>

#include <peconv.h> // include libPeConv header

int main(int argc, char *argv[])
{
    if (argc < 2) {
        std::cout << "Args: <path to the exe>" << std::endl;
        return 0;
    }
    LPCSTR pe_path = argv[1];

    // manually load the PE file using libPeConv:
    size_t v_size = 0;
#ifdef LOAD_FROM_PATH
    //if the PE is dropped on the disk, you can load it from the file:
    BYTE* my_pe = peconv::load_pe_executable(pe_path, v_size);
#else
    size_t bufsize = 0;
    BYTE *buffer = peconv::load_file(pe_path, bufsize);

    // if the file is NOT dropped on the disk, you can load it directly from a memory buffer:
    BYTE* my_pe = peconv::load_pe_executable(buffer, bufsize, v_size);
#endif
    if (!my_pe) {
        return -1;
    }
	
    // if the loaded PE needs to access resources, you may need to connect it to the PEB:
    peconv::set_main_module_in_peb((HMODULE)my_pe);
    
    // load delayed imports (if present):
    const ULONGLONG load_base = (ULONGLONG)my_pe;
    peconv::load_delayed_imports(my_pe, load_base);
  
    // if needed, you can run TLS callbacks before the Entry Point:
    peconv::run_tls_callbacks(my_pe, v_size);
	
    //calculate the Entry Point of the manually loaded module
    DWORD ep_rva = peconv::get_entry_point_rva(my_pe);
    if (!ep_rva) {
        return -2;
    }
    ULONG_PTR ep_va = ep_rva + (ULONG_PTR) my_pe;
    //assuming that the payload is an EXE file (not DLL) this will be the simplest prototype of the main:
    int (*new_main)() = (int(*)())ep_va;

    //call the Entry Point of the manually loaded PE:
    return new_main();
}

См. также: https://github.com/hasherezade/libpeconv_tpl/blob/master/project_template/main.cpp

Подробнее

  • Wiki
  • Документация
  • Примеры
  • Уроки
  • Шаблон проекта
Скачать инструмент