DLib Attacher - небольшая программка, позволяющая выполнить статическое внедрение(хук) динамических библиотек в исполняемые файлы. Под статическим внедрением понимается что загрузка библиотеки прописывается в сам исполняемый файл. Это полезно например при пропатчивании исполняемых файлов, когда модуль патчится динамически.
Особенности:
- Простой и доступный интерфейс :)
- Поддерживается внедрение .dll в .exe и .dll в .dll
- Опциональный запуск библиотек из EntryPoint\TLS Callback
- Опциональная возможность вызова экспортируемых функций с проверкой их значений
- Кол-во внедряемых библиотек неограничено
- После внедрения возможно повторное редактирование параметров
- Возможность полного удаления хука
- Поддержка стандартов исполняемого файла
Пока что внедрятся можно в исполняемые PE файлы архитектуры x86, но x64 comming soon.
Внимание:
Учитывайте что инжект может наломатся, в случае если исполниямые файлы чем-либо накрыты, в особенности протектором.
Скачать:
DLib Attacher v1.3a (ссылка может не работать в Опере)
Source Code
Руководство:
Внедрение библиотеки (для особо нубоватых)
1. Открываем программу(кн. ...) и выбираем исполняемый модуль
2. Добавляем названия библиотек(кн. Add) которые будут внедрены в исполняемый модуль, если библиотеки имеют функцию для вызова, то устанавливаем галочку и вводим имя функции
3. Тыкаем кн. Attach и проверяем, библиотеки которые вы хукнули должны находится в одной папке с исполняемым модулем и иметь соответствующие имена
Экспортируемые функции
Экспортируемая функция может иметь сигнатуру:
void __stdcall ExampleProc(void);
Причём допустимо если тип возвращаемого значения будет не void, а любое 32 битное значение. Однако можно фиксировать возвращаемое значение, установив галочку на 'Checking return value'. В таком режиме функция будет иметь следующую сигнатуру:
int __stdcall ExampleProc(void);
В случае удачного запуска экспортируемая функция должна вернуть 0. В противном случае, любое не нулевое значение, которое будет считатся кодом ошибки.
Диагностические ошибки
В версии 1.1 добавлена поддержка диагностических ошибок, теперь название библиотеки для которой произошел сбой и код ошибки, можно вставлять в текст сообщение об ошибке. Причем для 'Load library error message' и 'Load procedure error message' возвращается код ошибки полученный через GetLastError(для вызовов LoadLibraryEx\GetProcAddress). Для ошибки 'Call procedure error message' возвращается код ошибки полученные при вызове экспортируемой функции.
Важно отметить что в шаблоне сообщения об ошибке, первым должен идти спецификатор %s который будет подменён на имя библиотеки, а вторым %d который будет подменён на код ошибки. Либо можно не использовать вообще эти спецификаторы.
Changelog:
v1.3a
- Исправлена причина ошибки 87
v1.3
- Добавлена поддержка внедрения .dll to .dll
- Некоторые мелкие исправления
v1.2
- Добавлена поддержка хука через классический EntryPoint
- Мелкие исправления
v1.1a
- Исправлен критический баг с настройкой TLS Callback
v1.1
- Исправлена некорректная работа с рандомизацией
- Исправлены баги при работе с реллоками
- Добавлена поддержка диагностических сообщений
- Добавлена возможность выборочно включать проверку возвращаемого значения экспортируемой функции
- Мелкие исправления
v1.0
- Релиз программы
thanks!!! waitting for x64 support
ОтветитьУдалитьТы еще жив?
ОтветитьУдалитьНа гите чет все сдохло (
Есть вопросы,можно обратиться? )