Курсовая работа
DESCRIPTION
Курсовая работа. Тема : Разработка метода сбора информации о ходе исполнения программы, который использует возможность модификации памяти процесса. Булычев И. Д. 445 группа Научный руководитель : М. В. Баклановский. Цель. - PowerPoint PPT PresentationTRANSCRIPT
Курсовая работа
Булычев И. Д.445 группаНаучный руководитель:М. В. Баклановский
Тема: Разработка метода сбора информации о ходе исполнения программы, который использует возможность модификации
памяти процесса
Цель
Создать инструмент для автоматической оценки эффективности реализации алгоритма
Используемая мера: общее количество исполненных на процессоре команд
Тривиальный пример измерения
Добавление счетчиков в программу
while (x > 0) {
counter++;
y = y + x;
x = x / 2;
}
ЗадачаЗадача
Внедрить собственные счетчики в
исполняемый код, который будет
анализироваться
Проблема добавления собственных инструкций
Статический и динамический анализ
Проблема дизассемблирования
Из-за увеличения объема кода ломаются переходы
по относительным адресам
Адресное пространство процесса
Исполняемый модуль Вспомогатель
ная DLL
Вызов системной APILoadLibrary
Модифицирован
Вызов функции
subscribe_me
Общая схема метода
Адресное пространство процесса
Исполняемый модуль
Вспомогательная DLL
Системная библиотека
NTDLLKiUserExceptionDispatc
her
Kernelsubscribe_me
ExceptionException
Доступ запрещен
Схема метода
Схема генерации кода
JMP +0x45 …
Jxx +0x56 …
CALL +0x67 …
… LOOP -0x78
JMP ???? ………
Jxx ????………
JMP ???? ………PUSH
… LOOP +0x02 JMP JMP
CALL EAX
RETJMP [EBX] Без изменений
JMP EAXPUSH
CALL RET
CALL JNZ RET
RET
PUSH JMP PUSH JMP RET
JNZ RET RET
Схема генерации кода
1:
2:
3:
Ограничения наОграничения на исполняемый кодисполняемый код
Ограничения на исполняемый код:o код скомпилирован нами;o не является самомодифицирующимся;o данные и исполняемый код хранятся в собственных секциях.
PE файл (Portable Executable)
Ограничения системы:o аппаратная платформа x86o ОС Windows NT
Аналоги
Intel VTune AMD CodeAnalyst DynInst Valgrind
Итоги
Разработан метод динамического анализа и модификации исполняемого кода программы
Реализован один из возможных способов применения метода: внедрение счетчиков для оценки эффективности алгоритма
Дальнейшая работа
Исследование метода Устранение ограничений на
исполняемый код