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.

Утилита весьма полезна для быстрого изменения атрибутов исполняемых и объектных модулей.