Всем привет, вот решил еще одну библиотеку выложить....
Инструментарий для редактирования образов исполняемых файлов с возможностью перемещения фрагментов бинарного кода.
------------------------------------------------------------------------------------------------------------------
Библиотека С++/С для редактирования файлов исполняемых образов (DLL,EXE,SYS...) для ОС WINDOWS.
Именуемая далее (не сильно оригинально) IMAGELIB, позволяет программисту создавать специальные программы
в которые им может быть заложены возможности редактировать чужие исполняемые файлы.
С помощью этой библиотеки, работая с чужими готовыми бинарными образами, программист может:
- Добавлять в неограниченном объёме свой собственный код в эти образы.
- Удалять любые выбранные программистом фрагменты кода этих образов.
- Перемещать любые выбранные программистом фрагменты чужого кода, в нужное ему место,
в том числе и в добавленные им с помощью этой библиотеки новые секции кода.
- Устанавливать хуки на любые функции чужого бинарного кода путем перемещения этих функций в новое место
с сохранением работоспособности этих функций.
- Размещать в старом месте таких функции любой свой код.
- Устанавливать хуки в произвольные точки чужого кода путем "раздвижения" этого кода,
для вписывания в него команды перехода.
Библиотека позволяет программисту работать с чужим кодом на уровне макросов исходного кода.
С помощью таких макросов программист может:
- устанавливать хуки на выбранные им точки чужого кода (как по имени функции так и по ее адресу).
- вызывать оригинальные перехваченные функции.
- вызывать любые функции чужого кода.
Библиотека имеет встроенные инструменты для анализа чужого машинного кода.
Библиотека не имеет ограничений на объём и место добавления своего кода к чужим бинарным образам.
Библиотека имеет встроенные средства для работы с так называемыми "Базами Данных Программы PDB",
содержащих отладочную информацию. Микрософт предоставляет такие базы данных для
всех (почти) исполняемых образов ОС WINDOWS и большинства своих прикладных программ.
Библиотека имеет встроенные средства для Анализа Машинного Кода.
В результате этого анализа формируются собственная база данных для бинарных образов.
В частности выделяются функции и формируются полные перекрестные ссылки.
На текущий момент библиотека умеет работать как с 32-битными, так и с 64-битными исполняемыми образами.
Анализатор кода поддерживает большинство существующих процессоров, хотя это очевидно и излишний функционал,
излишность обусловлена работой только с бинарными образами OC WINDOWS.
Библиотека IMAGELIB использует модифицированную опенсорсную библиотеку CAPSTONE,
модификация сделана для возможности РЕДАКТИРОВАНИЯ машинных команд.
Библиотека написана за 2 месяца для адаптации одного ну уж очень объёмного сетевого драйвера.
На текущий момент в ней реализован только необходимый для этой конкретной задачи функционал.
Я буду только рад если кто-то дополнит ее функционалом под свои нужды.
Естественно хотелось бы чтобы все это выкладывалось для свободного доступа. :)
=========
Документацию буду писать и выкладывать :) Но пока есть только комментарии в коде.
Чтобы собрать библиотеку и примеры запустите из "VS2015 x64 Native Tools Command Prompt" коммандный
файл "build.cmd". В результате библиотека будет собрана, и запущенны тесты. Результаты надо смотреть
в папке OutBin. В соответствующих конфигурации папках (x64 и Win32) вы найдете файлы "ImageMerge.log"
и "target.log".
Файл "ImageMerge.log" это лог работы демонстрационной программы, а в "targer.log" результаты работы
СОЗДАННОГО нового образа.
сам код тут :
https://github.com/Worobow/MakeLib