EDITBIN.EXE
Утилиты фирмы Microsoft
I
Лекция 12: «Дизассемблирование машинного кода».
Разработка интерфейса пользователя
Разработка процедуры визуализации трехмерной сцены
За прорисовку самого грузового автомобиля отсвечает метод void CLR1View::usr_RenderScene(). Вся модель состоит из довольно большого числа примитивов, таких как прямоугольный паралелипипед, конус, линия, простой многоугольник.
Первым нарисованы паралелипипеды для разных частей модели: дна Корабльа и кармы. После этого – цилиндры – тоже для разных частей модели: парусных матчт и некоторых частей штурвала. Но перед этим фигуры совмещены нужным образом.
Затем нарисованы выпуклые многоугольники – паруса . Все эти фигуры нарисованы с помощью команд: glBegin, glEnd, glVertex3d, где первые две команды – операторные скобки, а третий – точка в трехмерном пространстве.
Все необходимые операции производились теми же функциями: glTranslated, glRotated.
Так же в сцене присутствуют источники света, их восемь, и расположены они по вершинам воображаемого куба. Можно включать/выключать эффект тумана.
Через интерфейс, пользователь может изменять работу программы. Имеются следующие возможности:
- включать/выключать источники света;
- включать/выключать эффект тумана;
- разворачивать объект относительно трех осей;
- Перемещать объект относительно одной оси.
Для добавления этих возможностей в приложении отредактировано панель элементов, добавлены следующие пункты (и обработчики их выбора):
- К+ – Вывод объекта в виде каркаса;
- К- – Вывод сплошного объекта;
- Т+ – включает эффект тумана;
- Т- – выключает эффект тумана;
Вызов каждого пункта меню можно заменить нажатием на клавиши, таблица соответствия приведена ниже.
Таблица 1 – "Горячие" клавиши
№ | Пункт меню | "Горячая" клавиша |
К+ | ||
К- | ||
Т+ | ||
Т- | ||
Вращение относительно оси Х | ←→ | |
Вращение относительно оси Y | ¯ | |
Вращение относительно оси Z | < > | |
Перемещение объекта вперед | Z | |
Перемещение объекта назад | X | |
Включение освещения | ||
Выключение освещения |
Глава 2. Обзор отладчиков и дизассемблеров
В этой главе мы рассмотрим отладочные и дизассемблирующие программы, кроме трех наиболее известных, о которых пойдет речь в последующих двух главах.
Название программы многообещающе, но в действительности программу нельзя назвать редактором. Основное ее предназначение - конвертировать OMF-формат объектных файлов в COFF-формат. Кроме того, данная утилита позволяет менять некоторые другие атрибуты исполняемых и объектных модулей. Если в командной строке данной программы указать имя объектного модуля, то, в случае если модуль будет в OMF-формате, он будет преобразован в COFF-формат. Рассмотрим ключи данной программы, которые можно применять как к исполняемым, так и к объектным модулям.
/BIND - позволяет указать пути к динамическим библиотекам, которые используют данный исполняемый модуль. Например,
EDITBIN /BIND:PATH=c:\edit;d:\dll EDIT.EXE.
/HEAP - изменяет размер кучи в байтах. Например,
EDITBIN /HEAP:100000,100000 (см. Опции программы LINK.EXE).
/LARGEADDRESSAWARE - указывает, что приложение оперирует адресами, большими 2 гигабайт.
/NOLOGO - подавляет вывод информации о программе.
/REBASE - устанавливает базовый адрес модуля. По умолчанию для исполняемого модуля базовый адрес равен 400000Н, для динамической библиотеки - 10000000H.
/RELEASE - устанавливает контрольную сумму в заголовке исполняемого модуля.
/SECTION - изменяет атрибуты секций исполняемого модуля. Полный формат опции /SECTION:name[=newname][,attributes][,alignment]
Значение атрибутов
Атрибут | Значение |
c | code |
d | discardable |
е | executable |
i | initialized data |
k | cached virtual memory |
m | link remove |
o | link info |
p | paged virtual memory |
r | read |
s | shared |
u | uninitialized data |
w | write |
Значение опции выравнивания
p | |
t | |
s | |
x | no alignment |
/STACK - изменяет значение требуемого для загружаемого модуля стека.
Например: EDITBIN /STACK:10000,10000 EDIT.EXE
/SUBSYSTEM - переопределяет подсистему, в которой работает данная программа.
Например, если программа оттранслирована с опцией /SUBSYSTEM:WINDOWS, можно изменить установку, не перекомпилируя ее. EDITBIN /SUBSYSTEM:CONSOLE EDIT.EXE.
/SWAPRUN - устанавливает для исполняемого модуля атрибут "помещать модуль в SWAP-файл".
/VERSION - устанавливает версию для исполняемого модуля.
/WS (/WS:AGGRESSIVE) - ycтaнaвливает атрибут AGGRESSIVE, который используется операционной системой Windows NT и Windows 2000.
Утилита весьма полезна для быстрого изменения атрибутов исполняемых и объектных модулей.