Приветствую!
Сегодня на хабре появилась статья, повествующая о том, как можно перехватывать вызовы DLL из программы и обрабатывать их нужным образом — в законных, а может быть, и не совсем, целях. Так или иначе, данная техника может пригодиться в разных случаях.
Для того, чтобы постоянно не совершать одни и те же действия, я решил автоматизировать процесс создания проекта Visual Studio на основе выбранной dll.
Сперва мной были скачаны исходники проекта из статьи. Для автоматизации взят скриптовый язык AutoIt, на нём набросан простенький GUI:
Чтобы не зависеть от утилиты dumpbin, было решено получать список экспорта напрямую из программы, благо что необходимый функционал уже был написан одним из пользователей форума AutoIt.
Затем в исходниках были вырезаны участки кода, такие как список экспорта, ассемблерные вставки и название выходной библиотеки — они будут генерироваться при экспортировании проекта. При компилировании программы эти исходники добавляются в секцию ресурсов.
Собственно, рабочий цикл программы:
- Из библиотеки извлекается список экспорта (если есть),
- Из секции ресурсов извлекаются файлы проекта, в них заменяется имя библиотеки и добавляется необходимый код,
- Если отмечен экспорт в формате VS 2008, то заменяется соответствующий файл,
- Происходит поочерёдное сохранение файлов в выбранную папку.
Для тех, кто хочет опробовать сию программу в деле:
Исполняемый файл / исходники.
Единственное, что на данный момент не удалось сделать — это создание прокси dll для библиотеки с экспортом в стиле C++.
Спасибо за внимание!
Автор: Crystall