Nano Hash - криптовалюты, майнинг, программирование

элегантный способ внедрить dll в процессы ДО их запуска

Я делаю dll «мод», который изменяет поведение целевого процесса. Мне удалось внедрить свою dll и перехватить некоторые функции цели.

Но это требует дополнительной работы, когда мне нужно подключить некоторые API ДО запуска основного модуля (точнее, до точки входа). Мне нужно запустить целевую программу вручную с атрибутом CREATE_SUSPENDED, ввести, а затем возобновить. Но некоторые приложения запускаются со своей собственной программой запуска, некоторые часто запускаются с процессов x64... такая разнообразная среда затрудняет автоматизацию.

Похоже, что лучший способ внедрить dll-подключение во все процессы и обработать CreateProcess. Но иногда требуется разработка UAC, x64.

Любой совет будет принят во внимание.


Ответы:


1

Вы можете злоупотреблять параметрами выполнения файла изображения и зарегистрировать DLL модификации как отладчик (см. Как: автоматически запускать отладчик для подробностей).

Процедура проста:

  1. Добавьте ключ с именем целевого процесса (например, жертва.exe) в разделе HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Image File Execution Options.
  2. Под этим ключом добавьте новое строковое значение с именем debugger.
  3. Установите значение пути к вашему бинарному файлу модификации. Это должен быть либо полный путь, либо местоположение образа должно быть указано в переменной среды PATH.

Всякий раз, когда запускается файлжертва.exe, двоичный файл модификации запускается после того, как жертва.exe (и его зависимости) были загружены, но до начала выполнения. Это произойдет независимо от того, как запущен файлжертва.exe.

Также обратите внимание, что в 64-битной ОС ключ также отражается в Wow6432Node, поэтому ваш бинарный файл модификации будет запускаться как для 32-битной, так и для 64-битной версии жертвы.exe.

Еще один способ загрузить вашу DLL в каждый исполняемый файл (по крайней мере, те, которые ссылаются на user32.dll) — злоупотребить разделом реестра AppInit_DLLs. (которое также называется Deadlock_Or_Crash_Randomly_DLLs). Это даже сложнее, чем регистрация случайного исполняемого файла в качестве отладчика, но все же это один из способов взлома, с которым обязательно должен быть знаком любой уважающий себя автор вредоносных программ. Обратите также внимание, что эта функция может стать недоступной в будущих версиях Windows. Windows Vista, Windows 7 и Windows Server 2008 R2 должны быть подготовлены для работы AppInit_DLL.

29.07.2014
  • Уловка AppInit не работает для моей машины, использующей параметры безопасной загрузки. Однако для параметров выполнения файла образа это очень помогло. 07.08.2014
  • я пытался добавить mydebugger.exe в calc.exe, отладчик печатает только привет, когда я запускаю calc в cmd, я вижу привет, но calc не открывается..., также можно ли использовать параметры выполнения файла изображения для подключения dll или только исполняемый файл? 16.08.2016

  • 2

    То, чего вы хотите добиться, называется перехватом DLL, библиотеки для этого можно легко найти.

    Вы можете попробовать Microsoft Detours для этого, но его необходимо приобрести в зависимости от вашего использования. (Detours Express бесплатен для 32-битного и некоммерческого использования). Альтернативы включают EasyHook, madCodeHook, ...

    30.07.2014
    Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..