Библиотека для редактирования бинарников.
От: Andrew.W Worobow https://github.com/Worobow
Дата: 29.01.17 17:09
Оценка: 41 (6)
Всем привет, вот решил еще одну библиотеку выложить....

Инструментарий для редактирования образов исполняемых файлов с возможностью перемещения фрагментов бинарного кода.
------------------------------------------------------------------------------------------------------------------

Библиотека С++/С для редактирования файлов исполняемых образов (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
Не все кто уехал, предал Россию.
Отредактировано 29.01.2017 17:39 Andrew.W Worobow . Предыдущая версия . Еще …
Отредактировано 29.01.2017 17:35 Andrew.W Worobow . Предыдущая версия .
Отредактировано 29.01.2017 17:09 Andrew.W Worobow . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.