Assembler / [Из песочницы] Автоматизация создания прокси-dll

в 8:43, , рубрики: autoit, dll, dll injection, метки: , , ,

Приветствую!

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

Для того, чтобы постоянно не совершать одни и те же действия, я решил автоматизировать процесс создания проекта Visual Studio на основе выбранной dll.

Сперва мной были скачаны исходники проекта из статьи. Для автоматизации взят скриптовый язык AutoIt, на нём набросан простенький GUI:

Assembler / [Из песочницы] Автоматизация создания прокси dll

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

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

Собственно, рабочий цикл программы:

  • Из библиотеки извлекается список экспорта (если есть),
  • Из секции ресурсов извлекаются файлы проекта, в них заменяется имя библиотеки и добавляется необходимый код,
  • Если отмечен экспорт в формате VS 2008, то заменяется соответствующий файл,
  • Происходит поочерёдное сохранение файлов в выбранную папку.

Для тех, кто хочет опробовать сию программу в деле:
Исполняемый файл / исходники.
Единственное, что на данный момент не удалось сделать — это создание прокси dll для библиотеки с экспортом в стиле C++.

Спасибо за внимание!

Автор: Crystall


* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js