130 likes | 271 Views
Курсовая работа. Тема : Разработка метода сбора информации о ходе исполнения программы, который использует возможность модификации памяти процесса. Булычев И. Д. 445 группа Научный руководитель : М. В. Баклановский. Цель.
E N D
Курсовая работа Тема: Разработка метода сбора информации о ходе исполнения программы, который использует возможность модификации памяти процесса Булычев И. Д. 445 группа Научный руководитель: М.В. Баклановский
Цель Используемая мера: общее количество исполненных на процессоре команд • Создать инструмент для автоматической оценки эффективности реализации алгоритма
Тривиальный пример измерения Добавление счетчиковв программу while (x > 0) { counter++; y = y + x; x = x / 2; }
Задача • Внедрить собственные счетчики в исполняемый код, который будет анализироваться
Проблема добавления собственных инструкций • Статический и динамический анализ • Проблема дизассемблирования • Из-за увеличения объема кода ломаются переходы по относительным адресам
Общая схемаметода Адресное пространство процесса Исполняемый модуль Вспомогательная DLL Вызов функции subscribe_me Модифицирован Вызов системной API LoadLibrary
Схема метода Адресное пространство процесса Kernel Исполняемый модуль Вспомогательная DLL Доступ запрещен Системная библиотека NTDLL subscribe_me Exception KiUserExceptionDispatcher Exception
Схема генерации кода JMP +0x45 … JMP ???? ……… Jxx +0x56 … ……… Jxx ???? CALL +0x67 … PUSH JMP ???? ……… … LOOP -0x78 … LOOP +0x02 JMP JMP CALL EAX PUSH JMP EAX Без изменений JMP [EBX] RET
Схема генерации кода 1: CALL RET 2: CALL JNZ RET 3: RET PUSH JMP PUSH JMP RET JNZ RET RET
Ограничения наисполняемый код • Ограничениясистемы: • аппаратная платформа x86 • ОС Windows NT • PE файл (Portable Executable) • Ограничения на исполняемый код: • код скомпилирован нами; • не является самомодифицирующимся; • данные и исполняемый код хранятся в собственных секциях.
Аналоги • Intel VTune • AMD CodeAnalyst • DynInst • Valgrind
Итоги • Разработан метод динамического анализа и модификации исполняемого кода программы • Реализован один из возможных способов применения метода: внедрение счетчиков для оценки эффективности алгоритма
Дальнейшая работа • Исследование метода • Устранение ограничений на исполняемый код