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

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

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

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

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

Категории

Все категории
Loading categories
lazy_importer — библиотека для импорта функций из DLL скрытым, недружественным к реверс-инжинирингу способом | Kitploit
Инструменты/GitHubGitHub/justasmasiulis/lazy_importer
Статический анализЭксплуатацияОбратная инженерияАнализ вредоносных программУтилиты и фреймворкиАнализ Бинарных ФайловRed TeamingРазработка Полезной НагрузкиАнти-Бот
GitHubjustasmasiulis/lazy_importer

lazy_importer

библиотека для импорта функций из DLL скрытым, недружественным к реверс-инжинирингу способом

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

Популярное

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

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

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

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

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

lazy importer

Простая и удобная в использовании header-only библиотека, призванная значительно усложнить жизнь реверс-инженеру.

небольшой пример

LI_FN(OutputDebugStringA)("hello world");
LI_FN(VirtualProtect).in(LI_MODULE("kernel32.dll").cached());

Вывод IDA при компиляции первой строки

возможности

  • Не оставляет строк в памяти.
  • Не выделяет память.
  • Легко встраивается (inlined).
  • Не оставляет импортов в исполняемом файле.
  • Генерирует чрезвычайно компактный ассемблерный код.
  • Не кэширующие функции ничего не оставляют в секциях данных.
  • Хэши рандомизируются при каждой компиляции для противодействия базовым атакам по базам хэшей.

документация

  • LI_FN(function_pointer) -> lazy_function
  • LI_FN_DEF(function_type) -> lazy_function
  • LI_MODULE(module_name) -> lazy_module

  • safe означает, что если функция не может успешно выполнить свою задачу, возвращается 0 вместо проявления неопределённого поведения.
  • cached означает, что результат вычисляется только при первом вызове и впоследствии переиспользуется.
  • forwarded означает, что переадресованные экспорты (export forwarding) будут корректно разрешены.

lazy_module

функция safe cached
Пытается найти заданный модуль и возвращает его адрес
get<T = void*>() -> T :x: :x:
safe<T = void*>() -> T :white_check_mark: :x:
cached<T = void*>() -> T :x: :white_check_mark:
safe_cached<T = void*>() -> T :white_check_mark: :white_check_mark:
Пытается найти заданный модуль, используя заданный указатель LDR_DATA_TABLE_ENTRY
in<T = void*, Ldr>(Ldr ldr_entry) -> T :white_check_mark: :x:
in_cached<T = void*, Ldr>(Ldr ldr_entry) -> T :white_check_mark: :white_check_mark:

lazy_function<F>

функция safe cached forwarded
вызывает разрешённый экспорт с заданными аргументами
operator()(...) -> result_of<F, ...> :x: :x: :x:
пытается разрешить экспорт во всех загруженных модулях и возвращает адрес функции
get<T = F>() -> T :x: :x: :x:
safe<T = F>() -> T :white_check_mark: :x: :x:
cached<T = F>() -> T :x: :white_check_mark: :x:
safe_cached<T = F>() -> T :white_check_mark: :white_check_mark: :x:
forwarded<T = F>() -> T :x: :x: :white_check_mark:
forwarded_safe<T = F>() -> T :white_check_mark: :x: :white_check_mark:
forwarded_cached<T = F>() -> T :x: :white_check_mark: :white_check_mark:
forwarded_safe_cached<T = F>() -> T :white_check_mark: :white_check_mark: :white_check_mark:
пытается разрешить экспорт в заданном модуле и возвращает адрес функции
in<T = F, A>(A module_address) -> T :x: :x: :x:
in_safe<T = F, A>(A module_address) -> T :white_check_mark: :x: :x:
in_cached<T = F, A>(A module_address) -> T :x: :white_check_mark: :x:
in_safe_cached<T = F, A>(A module_address) -> T :white_check_mark: :white_check_mark: :x:
пытается разрешить экспорт в ntdll и возвращает адрес функции
nt<T = F>() -> T :x: :x: :x:
nt_safe<T = F>() -> T :white_check_mark: :x: :x:
nt_cached<T = F>() -> T :x: :white_check_mark: :x:
nt_safe_cached<T = F>() -> T :white_check_mark: :white_check_mark: :x:

дополнительная конфигурация

#defineэффекты
LAZY_IMPORTER_NO_FORCEINLINEотключает принудительное встраивание (force inlining)
LAZY_IMPORTER_CASE_INSENSITIVEвключает сравнение без учёта регистра. Может потребоваться для разрешения переадресованных экспортов.
LAZY_IMPORTER_CACHE_OPERATOR_PARENSиспользует cached() вместо get() в operator() у lazy_function
LAZY_IMPORTER_RESOLVE_FORWARDED_EXPORTSиспользует forwarded() в get(). ВНИМАНИЕ: не применяется к nt() и in().
LAZY_IMPORTER_HARDENED_MODULE_CHECKSдобавляет дополнительные проверки корректности при перечислении модулей.
LAZY_IMPORTER_NO_CPP_FORWARDУбирает зависимость от заголовка C++ <utility>.

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

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