DLib Attacher


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
- Релиз программы

2 комментария: