Pull to refresh

Автоматизация создания прокси-dll

Reading time 1 min
Views 6.2K
Приветствую!

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

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

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



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

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

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

Спасибо за внимание!
Tags:
Hubs:
+21
Comments 7
Comments Comments 7

Articles