Как внедрить dll без инжектора

Обновлено: 21.11.2024

Вот список лучших бесплатных программ для инжектора DLL для Windows. Внедрение DLL — это процесс воздействия на поведение программы путем запуска внешнего кода/кодов. Инжектор DLL обычно определяется как программное обеспечение, которое внедряет или принудительно внедряет внешние коды в различные процессы. Это действие по внедрению dll обычно не может быть выполнено, поэтому нам нужно это программное обеспечение для внедрения dll. Инъекция dll может использоваться по-разному; он варьируется от игр до расширенных приложений, таких как: Горячее исправление, ведение журнала и создание подклассов.

На что способны эти dll-инжекторы? Это программное обеспечение инжектора dll позволяет вам выбрать любой текущий процесс или службу, затем выбрать dll, которую вы хотите внедрить в этот процесс, и выполнить инъекцию. Некоторые из этих программ позволяют выполнять внедрение dll в несколько процессов одновременно. Инжектор dll командной строки также был включен в список.

Я изо всех сил старался найти лучшее бесплатное программное обеспечение для инжектора dll для Windows и перечислил их ниже вместе с их описаниями. Вы также узнаете, как внедрить dll с помощью этого программного обеспечения для внедрения dll.

Мой любимый инжектор Dll:

Я считаю DLL Injector одним из лучших и самых простых бесплатных программ для внедрения dll, поскольку он имеет довольно удобный и простой в использовании пользовательский интерфейс. Выберите DLL, выберите процесс и инициируйте внедрение. Dll Vaccine также является хорошим программным обеспечением для внедрения dll в запущенные процессы. Это дает вам ручные, а также автоматические варианты внедрения dll. Производительность ЦП, состояние памяти и информацию о компьютере также можно просмотреть с помощью этого бесплатного программного обеспечения.

Инжектор DLL

DLL Injector — бесплатный инжектор dll для Windows. Он имеет очень простой интерфейс, который делает процесс внедрения DLL очень простым. Вы можете просмотреть все запущенные процессы с именем процесса, PID и путем к процессу. Чтобы выбрать файл DLL, который вы хотите внедрить в процесс, нажмите кнопку «Выбрать DLL», чтобы просмотреть и сделать выбор. После этого выберите процесс, затем нажмите кнопку «Внедрить», чтобы внедрить выбранную dll в этот процесс. При успешном внедрении DLL появляется диалоговое окно с надписью «Готово».

Через этот инжектор dll вы можете вводить только одну dll за раз. Если dll внедряется не в тот процесс, отображается сообщение об ошибке.

Этот инжектор использует

  1. физическая память,
  2. две подписанные dll, содержащие раздел rwx
  3. SetWindowsHookEx
  4. Копировать при записи

для ручного сопоставления вашей dll с игрой, защищенной античитом.

Это хорошо объясняет идею.

Командная строка: SignedDll.dll TargetDll.dll TargetProcName.exe

Протестировано на Windows 10 1803.

SEH не поддерживается!

Нам нужны две подписанные dll, которые содержат раздел rwx.

Один для кода нашего ручного преобразователя и один для внедряемой dll.

Инжектор загружает подписанную dll с разделом rwx, который называется «ShellContainer.dll».

Вы всегда можете заменить его на то, что вам больше нравится.

Но вам нужно найти dll, которая не выполняет никаких операций записи в разделе rwx в процедуре инициализации. Потому что это вызовет COW. Тогда объем физической памяти раздела rwx не будет разделяться между разными процессами.

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

С помощью драйвера он вручную записывает код преобразователя непосредственно в физическую память раздела rwx.

После этого физическая память отключается от инжектора.

Далее, используя SetWindowsHookEx, инжектор внедряет ту же DLL в целевой процесс.

Затем наш код ручного сопоставителя загрузит библиотеку подписанной dll, которая содержит rwx, для которого указанное выше ограничение не требуется. Затем он сопоставляет целевую dll с разделом rwx dll.

По завершении инъекции инжектор отключает ее.

Затем ShellContainer.dll автоматически выгружается.

Код может быть не готов к компиляции и запуску.

Я сделал этот инжектор в январе этого года.

Если вы используете этот инжектор для читерства в играх BE или EAC, я рекомендую вам модифицировать его.

По крайней мере, измените способ доступа к физической памяти и используйте другие подписанные DLL.

Просмотр кода приветствуется!

Особенно часть определения размера физической памяти PhysicalMemory.cpp.

намазсо - мем rwx

can1357 - идеальный источник инжектора

Тормунд - его идея инъектора

харакиринокс - Physmem

< /цитата>

О нас

Инжектор, который может внедрить dll в игровой процесс, защищенный античитом с помощью SetWindowsHookEx.

Дата регистрации Январь 2013 г. Пол Местоположение Германия Сообщения 109 Репутация 10 Спасибо 14 --> Спасибо 104 My Mood

Как внедрить .dll без инжектора [SA]

Угадайте, что вам не нужен какой-либо инжектор, чтобы внедрить вашу .dll, ваша игра сделает это за вас.

Итак, вот как это сделать:

<р>1. Скопируйте вашу .dll

<р>2. Вставьте его в \Program Files (x86)\Steam\steamapps\common\DayZ\dll

<р>
4. Теперь переименуйте "tbb4malloc_bi.dll" в "tbb4.dll"


5. Теперь переименуйте вашу "cheat".dll в "tbb4malloc_bi.dll"


6. Отлично, теперь вы можете запускать игру и наслаждаться хаком

Если это помогло вам, просто оставьте "Спасибо"

Следующие 7 пользователей поблагодарили haens12 за это полезное сообщение:

Дата регистрации Сентябрь 2011 Пол Сообщения 1086 Репутация 29 Спасибо 150 --> Спасибо 2768 Мое настроение

Дата регистрации Январь 2013 г. Пол Местоположение Германия Сообщения 109 Репутация 10 Спасибо 14 --> Спасибо 104 My Mood

Первоначальное сообщение от darkwrath505

Хорошее руководство, вы нашли это?

Хорошее руководство, вы нашли это?

Хорошее руководство, вы нашли это?

Дата регистрации Сентябрь 2014 г. Пол Сообщения 88 Репутация 10 Спасибо 9 --> Спасибо 5 Мое настроение

Первоначальное сообщение от haens12

Угадайте, что вам не нужен какой-либо инжектор, чтобы внедрить вашу .dll, ваша игра сделает это за вас.

Итак, вот как это сделать:

<р>1. Скопируйте вашу .dll

<р>2. Вставьте его в \Program Files (x86)\Steam\steamapps\common\DayZ\dll

<р>
4. Теперь переименуйте "tbb4malloc_bi.dll" в "tbb4.dll"


5. Теперь переименуйте вашу "cheat".dll в "tbb4malloc_bi.dll"


6. Отлично, теперь вы можете запускать игру и наслаждаться хаком

Если это помогло вам, просто оставьте "Спасибо"

Хорошо, спасибо

Следующий пользователь поблагодарил TheM-Theory за это полезное сообщение:

Дата регистрации ноябрь 2012 г. Пол Местоположение Камчатка Сообщений 1,702 Репутация 74 Спасибо 141 --> Спасибо 657 Мое настроение

Дата регистрации Сентябрь 2011 Пол Сообщения 1086 Репутация 29 Спасибо 150 --> Спасибо 2768 Мое настроение

Первоначальное сообщение от haens12


Ага. Вы нашли это где-то еще?

Дата регистрации март 2013 г. Пол Местоположение Interwebs Сообщения 81 Репутация 10 Спасибо 20 --> Спасибо 520 Мое настроение

На 20 % холоднее

Дата регистрации Сентябрь 2011 г. Пол Местоположение Кантерлот, Эквестрия Сообщений 12 458 Репутация 1090 Спасибо 1 403 --> Спасибо 3 334

Текущие разделы:
DayZ Mod и автономные хаки и читы
BattleOn Games хаки, читы и трейнеры
Minecraft хаки
Другие полупопулярные шутеры от первого лица
Взломы и читы Blackshot
Взломы Need For Speed ​​World
Другие хаки для шутеров от первого лица
Взломы CounterStrike: Global Offensive
Взломы и читы Garry's Mod

Пожертвование:
Если вы хотите пожертвовать мне деньги, я принимаю Биткойн и Paypal, напишите мне в личку, если вы заинтересованы, и спасибо.
Лучшие жертвователи: (отличные люди)
FanticSteal $75,00
smurf_master $58,00 Fujiyama $25,00
[MPGH]Black $10,00
[MPGH]Hova $10,00
xJudgez $4,54 < br />[MPGH]Normen's Sheep $3,50
eminemlover $1,50

Читерство в играх — отвратительное дело. Это не только разрушает баланс игры, что противоречит цели, но и выявляет недостаток характера, который преступники обычно не замечают, анализируя себя. Это ЕСЛИ они когда-либо автоматически анализируют. В любом случае, если мошенничество в настольных играх может быть совершено добровольно путем неправильного направления и ловкости рук, то в цифровой сфере все становится более компрометирующим. Например, вы не можете запустить тренажёр по ошибке.

В отличие от замены файлов или перехвата и изменения шестнадцатеричной статистики (посмотрите Cheat Engine),
"внедрение dll" – это метод мошенничества, предполагающий запуск "специального" кода в законном приложении, таком как онлайн-шутер или РПГ. Это достигается путем «внедрения» вредоносного DLL-файла во время работы игры, что, по сути, заставляет его работать с новыми дополнениями (например, с автоматическим прицеливанием).

DLL Injector сделает всю работу за вас. Во время работы dll Injector обнаруживает текущие процессы и может внедрять нужные dll-файлы в любой процесс, который он видит. Конечно, вы должны иметь доступный файл dll и убедиться, что он правильный. В противном случае вы можете просто сломать все это.

Использование этих методов в онлайн-играх может иметь плохие последствия. Поскольку разработчики работают против этих читов, их библиотека обнаружения растет, в то время как они всегда сканируют онлайн-среду. Таким образом, вы никогда не знаете, скомпрометирована ли ваша dll или нет. Бан за такое нарушение почти гарантирован, если его обнаружат. Так что будьте осторожны.

Возможности

  • внедрение кода DLL
  • шанс быть забаненным в сети

Заключение

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

Возможность контролировать и управлять поведением системы и вызовами API — полезный навык для любого разработчика Windows. Он позволяет исследовать внутренние процессы и обнаруживать подозрительный и вредоносный код. Ранее мы описали простой способ установить глобальную перехватчик API, манипулируя разделом реестра AppInit_DLLs и делая процесс calc.exe невидимым в списке запущенных процессов.

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

Команда восстановления данных

Основы подключения API

Прежде чем мы углубимся в манипуляции с кодом, давайте рассмотрим некоторые основы перехвата API.

Что такое перехват API? Перехват API — это метод, который разработчики используют для управления поведением системы или приложения.С помощью перехвата API вы можете перехватывать вызовы в приложении Windows или собирать информацию, связанную с вызовами API. Кроме того, перехват API — это один из методов, которые антивирусы и решения Endpoint Detection and Response используют для выявления вредоносного кода.

  • Внедрение DLL: позволяет запускать код внутри процесса Windows для выполнения различных задач.
  • Внедрение кода — реализуется с помощью API WriteProcessMemory, используемого для вставки пользовательского кода в другой набор инструментов процесса. Предоставляет вам полный контроль над отлаживаемым приложением, упрощая манипулирование памятью отлаживаемого процесса.

В этой статье мы сосредоточимся на методе внедрения DLL, поскольку это наиболее гибкий, известный и наиболее изученный подход к управлению поведением системы с помощью вызовов API. Но что такое внедрение DLL для начала? Короче говоря, это процесс запуска пользовательского кода в адресном пространстве другого процесса. Внедрение DLL также является наиболее универсальным методом перехвата API и имеет меньше ограничений, чем другие методы перехвата API.

Существует три широко используемых метода внедрения DLL, основанных на использовании:

  • функция SetWindowsHookEx. Этот метод применим только к приложениям, использующим графический интерфейс пользователя (GUI).
  • функция CreateRemoteThread. Этот метод можно использовать для перехвата любого процесса, но он требует много кода.
  • исправление контекста удаленного потока. Этот метод эффективен, но довольно сложен, поэтому его лучше использовать только в том случае, если два других метода по каким-то причинам не работают.

Далее в этой статье мы объясним, как реализовать каждый из этих методов, и предоставим практический пример установки перехватчиков API с помощью одного из них. Наше путешествие начинается с обзора первой техники в этом списке — использования функции SetWindowsHookEx.

Внедрение DLL с помощью функции SetWindowsHookEx

Первый метод внедрения DLL, который мы рассмотрим в этом посте, основан на функции SetWindowsHookEx. Используя хук WH_GETMESSAGE, мы устанавливаем процесс, который будет следить за сообщениями, обрабатываемыми системными окнами. Чтобы установить хук, мы вызываем функцию SetWindowsHookEx:

Аргумент WH_GETMESSAGE определяет тип ловушки, а параметр functionAddress определяет адрес функции (в адресном пространстве вашего процесса), которую система должна вызывать всякий раз, когда окно собирается обработать сообщение.

Параметр dllToBeInjected определяет библиотеку DLL, содержащую функцию functionAddress. Последний аргумент, 0, указывает поток, для которого предназначен крючок. Передавая 0, мы сообщаем системе, что устанавливаем ловушку для всех существующих в ней потоков графического интерфейса. Таким образом, этот метод можно применять для подключения определенного процесса или всех процессов в системе.

Давайте посмотрим, как все это работает:

  1. Поток Some_application.exe собирается отправить сообщение какому-то окну.
    1. Система проверяет, установлен ли хук WH_GETMESSAGE для этого потока.
      1. Затем система выясняет, сопоставляется ли Inject.dll, библиотека DLL, содержащая обратный вызов для сообщения, с адресным пространством процесса Some_application.exe.
        1. Если Inject.dll еще не сопоставлена, система сопоставляет ее с адресным пространством процесса Some_application.exe и увеличивает счетчик блокировок DLL в этом процессе.
          1. Функция DllMain Inject.dll вызывается с параметром DLL_PROCESS_ATTACH.
            1. Затем вызывается обратный вызов в адресном пространстве процесса Some_application.exe.
              1. После возврата из обратного вызова счетчик блокировки DLL в адресном пространстве процесса уменьшается на 1.

              Теперь давайте посмотрим, как мы можем внедрить DLL вторым методом — с помощью функции CreateRemoteThread.

              Внедрение DLL с помощью функции CreateRemoteThread

              Теперь мы рассмотрим наиболее гибкий способ внедрения DLL — использование функции CreateRemoteThread. Общий поток выглядит следующим образом:

              Внедрение библиотеки DLL включает вызов функции LoadLibrary в потоке целевого процесса для загрузки нужной библиотеки DLL. Поскольку управлять потоками другого процесса крайне сложно, лучше создать в нем свой собственный поток. К счастью, функция CreateRemoteThread упрощает эту задачу:

              Эта функция очень похожа на функцию CreateThread, но имеет дополнительный параметр hProcess, определяющий процесс, которому будет принадлежать новый поток.

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

              Затем мы должны выделить часть памяти в целевом процессе, чтобы передать путь DLL, поскольку целевой процесс может получить доступ только к своей частной памяти:

              С помощью функции WriteProcessMemory мы можем поместить путь DLL в адресное пространство нашего целевого процесса:

              Тогда мы можем начать новую тему. С помощью этого потока наша DLL будет загружена в целевой процесс.

              Наконец, мы можем перейти к третьему методу внедрения DLL, основанному на исправлении контекста потока.

              Внедрение DLL с исправлением контекста удаленного потока

              Этот метод внедрения DLL нелегко обнаружить, так как в основном он выглядит как обычная активность потока. Чтобы добиться успеха, нам нужно манипулировать контекстом существующего удаленного потока и убедиться, что поток не знает об этих манипуляциях. Указатель инструкций целевого потока сначала устанавливается на пользовательский фрагмент кода. Когда код выполняется, указатель перенаправляется в исходное положение.

              Вот как выглядит весь процесс:

              Давайте посмотрим, как мы можем реализовать этот метод внедрения DLL в системе x64.

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

              Сначала мы используем функцию OpenThread, чтобы открыть дескриптор удаленного потока:

              Затем нам нужно выделить память в удаленном процессе для хранения внедренного кода и пути к DLL:

              Затем мы записываем путь к DLL в середине удаленного выделенного буфера:

              Затем мы приостанавливаем удаленный поток и получаем его контекст:

              Теперь компилируем ассемблерный код и сохраняем его в буфере:

              Мы устанавливаем регистр удаленного IP (RIP) нашего удаленного потока в буфер:

              Наконец, мы устанавливаем новый контекст и возобновляем поток:

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

              Настройка перехватчиков API с внедрением DLL на практике

              Хотя использование функции CreateRemoteThread является наиболее универсальным способом установки обработчиков API с внедрением DLL, этот метод требует большого объема предварительного кодирования. Вот почему мы проиллюстрируем, как устанавливать перехватчики API с помощью внедрения DLL, используя функцию SetWindowsHookEx, которая требует меньше времени.

              Этот пример основан на базовой DLL пользовательского режима, написанной на C++. Чтобы иметь возможность отслеживать ваши действия, убедитесь, что в ваш проект добавлена ​​последняя версия исходного кода Mhook.

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

              1. Мы внедряем нашу DLL с помощью функции SetWindowsHookEx:
              1. Чтобы убедиться, что мы можем восстановить исходную функцию после удаления нашего хука, нам нужно сохранить его адрес.

              Чтобы завершить процесс, нам нужно вызвать функцию TerminateProcess из kernel32.dll. Благодаря созданию и инициализации глобальной переменной теперь мы можем хранить исходный адрес функции:

              1. Мы подключили функцию HookedTerminateProcess вместо оригинальной функции TerminateProcess. Подключенная функция сначала вызывает функцию QueryFullProcessImageNameW из kernel32.dll и получает полное имя исполняемого образа для процесса.

              Теперь нам нужно проверить имя процесса. Если у него есть суффикс «_immortal», мы не должны допускать завершения этого процесса.

              Примечание. Обе функции, исходная и перехваченная, должны иметь одинаковые подписи.

              1. Здесь мы наконец можем внедрить нашу DLL в код целевого процесса, чтобы установить ловушку.

              После загрузки в целевой процесс функция DllMain получит параметр DLL_PROCESS_ATTACH. Теперь мы можем манипулировать этим процессом и перехватывать выбранную функцию с помощью библиотеки Mhook:

              1. После выгрузки библиотеки DLL из адресного пространства целевого процесса функция DllMain получает параметр DLL_PROCESS_DETACH. После этого мы удаляем хук и восстанавливаем исходную функцию.

              Теперь у нас есть весь код, необходимый для установки перехватчиков API с внедрением Windows DLL. Пришло время проверить, действительно ли этот код работает.

              Выполнение нашего примера кода перехвата API

              Для практической иллюстрации мы использовали утилиту просмотра структурированных хранилищ и превратили ее в бессмертный процесс, внедрив DLL с функцией SetWindowsHookEx. В результате этого процесса мы получили исполняемый файл с именем SSView_immortal.exe.Давайте запустим этот исполняемый файл и посмотрим на него в диспетчере задач. Нам также понадобится установленная утилита Process Explorer, чтобы проверить, действительно ли наша DLL внедрена в процесс Taskmgr.exe:

              В диспетчере задач мы видим процесс SSView_immortal.exe. Попробуем завершить его:

              Когда мы нажимаем Завершить задачу , мы получаем окно сообщения с ошибкой (та же ошибка, которую мы показываем в нашей перехваченной функции):

              Затем мы также получаем сообщение «Отказано в доступе». Это ответ ERROR_ACCESS_DENIED, который мы установили ранее с помощью функции SetLastError при реализации нашей перехваченной функции:

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

              Заключение

              Существует множество способов перехватить вызов API. Внедрение DLL — один из самых гибких, эффективных и хорошо изученных методов внедрения пользовательского кода в системный процесс. При внедрении DLL важно вставлять код в работающий процесс, поскольку библиотеки DLL должны загружаться по мере необходимости во время выполнения.

              Существует множество способов перехвата функции с помощью внедрения DLL — путем установки перехватчиков в определенных функциях или манипулирования контекстом удаленного потока. Исходя из нашего опыта, мы можем сказать, что установка хуков с помощью функции CreateRemoteThread является наиболее эффективным подходом. Поскольку эта функция поддерживается операционной системой Windows, при работе с ней не нужно использовать какие-то дополнительные хитрости, сложные структуры исполняемых файлов или внутренности операционной системы. Однако, если вы работаете с приложением с графическим интерфейсом, вы можете использовать самый простой вариант — функцию SetWindowsHookEx.

              Мы в Apriorit уже установили тысячи крючков и знаем, как ориентироваться в различных операционных системах и процессах. Станьте на шаг ближе к реализации проекта своей мечты — свяжитесь с нами и расскажите об этом!

              Читайте также: