Чтение онлайн

на главную

Жанры

Недокументированные и малоизвестные возможности Windows XP

Клименко Роман

Шрифт:

Теперь посмотрим на сам код простенькой программы Win32, вызывающей стандартное окно приветствия.

ПРИМЕЧАНИЕ

Данный код был взят из статьи журнала «Ваш компьютер» за 2003 год. 

Листинг 13.1. Программа Win32 типа Hello, World!

f 0 400 0

f1000 1200 0

a0

db4d,5a

а 3с db40

а 40

db 50,45,0,0

dw 14c,1

а 54

dw e0,10f,10b

а 68 dw 10d0

a 74

dw 0,40,1000,0,200,0

dw 4,0,0,0,4

a 90

dw 2000,0,200,0,0,0,2

a b4 dw 10

a c0

dw 1090,0,3c

a 140

dw 1000,0,1000,0,200,0,200,0

a 15c

dw 20,e000

a 1010

db 54,68,69,73,20,54,69,74,6c,65,3f

a 1020

db 54,68,69,73,20,4d,65,73,73,61,67,65,3f

a 1040

db 55,53,45,52,33,32,2e,64,6c,6c

a 1050

db 4b,45,52,4e,45,4c,33,32,2e,64,6c,6c

a 1060

db 0,0,4d,65,73,73,61,67,65,42,6f,78,41

а 1070

db 0,0,45,78,69,74,50,72,6f,63,65,73,73

а 1080

dw 1060,0,0,0,1070,0,0,0

а 1000

dw 1060,0,0,0,1070,0,0,0

а 1090

dw 1080,0,0,0,0,0,1040,0,1000,0

dw 1088,0,0,0,0,0,1050,0,1008,0

a 10d0

db 6a,24

db 68,10,10,40,0

db 68,20,10,40,0

db 6a,0

db ff,15,0,10,40,0

db 6a,0

db ff,15,8,10,40,0

m 1000 1200 200

m 0 400 100

n
«путь и имя создаваемого файла.bin»

r cx 400 w

q

Вот и весь код программы, написанной на машинном языке и вызывающей окно, отображенное на рис. 13.1. 

Рис. 13.1 Результат выполнения программы 

Команды программы

Теперь попробуем разобраться в этом коде. Для начала опишем команды отладчика, применяемые в нем.

F «начальный адрес» «конечный адрес» «заполнитель»

Данная команда заполняет «заполнителем» диапазон памяти, начиная с «начального адреса» и заканчивая «конечным адресом».

A «адрес»

Команда говорит отладчику о том, что вы хотите изменить содержимое, записанное в памяти, начиная с указанного «адреса». После ее ввода перед вами появится приглашение, указывающее, какой участок памяти в данный момент редактируется. Чтобы сказать отладчику, что вы уже отредактировали необходимый вам участок памяти, нужно в пустой строке нажать клавишу Enter.

Можно также ввести данную команду без значения адреса — в этом случае вы будете редактировать значение адреса памяти, применяемого при последней операции останова.

m «начальный адрес» «конечный адрес» «адрес назначения»

Эта команда копирует содержимое диапазона памяти, начиная с «начального адреса» и заканчивая «конечным адресом», в область памяти, начинающуюся с адреса назначения.

N «путь и имя файла»

Данная команда указывает, как будет называться создаваемый отладчиком файл (и в каком каталоге он будет находиться). Следует учитывать, что отладчик создавался для приложений MS-DOS, поэтому он не может создавать ЕХЕ-файлы — именно поэтому в коде и создается BIN-файл (после его создания нужно будет переименовать расширение BIN в расширение EXE).

Команда применяется также для загрузки файла и указания параметров запуска файла (в этом случае после команды n должны идти аргументы программы).

R «регистр»

Эта команда говорит отладчику о том, что вы хотите изменить содержимое конкретного регистра процессора. В контексте приведенного кода изменяется содержимое регистра СХ. После ввода команды появится приглашение (в виде двоеточия) для ввода нового содержимого регистра.

Если ввести команду без указания конкретного регистра, то перед вами отобразится содержимое всех регистров процессора, всех флагов (определяют, было ли зарегистрировано переполнение при выполнении операции с числами, является ли число четным и т.д.) и содержимое данной области памяти.

Можно также отредактировать установки флагов. Для этого нужно ввести такую разновидность команды: r f, после чего перед вами отобразится установка флагов в текущий момент и приглашение для редактирования флагов. Чтобы отредактировать один из флагов, нужно ввести в приглашении противоположный ему флаг. Например, для флага cy (перенос) нужно указать флаг nc (нет переноса).

W «адрес»

И наконец, с помощью этой команды записывается содержимое памяти на диск в виде программы Win32. Без аргумента данная команда начинает запись файла из адреса памяти CS:100, но можно самому указать адрес памяти, из которого будет начинаться запись.

Q

Эта команда закрывает окно отладчика.

Описание кода

Теперь, когда вы знаете описание необходимых команд, можно заняться описанием самого кода программы. И описывать его будем так: сначала указывается адрес памяти (или команда), а потом кратко говорится о том, для чего мы записываем по этому адресу памяти данные.

ПРИМЕЧАНИЕ

Еще перед описанием кода стоит сказать о командах db и dw, с которых начинается запись значений в адреса памяти — эти команды указывают на размер одной записываемой ячейки (ячейки отделяются запятыми). Если указана первая команда, то одна ячейка будет занимать в памяти 1 байт, а если указана вторая команда, то одна ячейка будет занимать 2 байта.

И еще одно — все значения в коде приведены в шестнадцатиричном виде и пишутся в обратном порядке.

Поделиться:
Популярные книги

Случайная жена для лорда Дракона

Волконская Оксана
Фантастика:
юмористическая фантастика
попаданцы
5.00
рейтинг книги
Случайная жена для лорда Дракона

Идеальный мир для Лекаря 7

Сапфир Олег
7. Лекарь
Фантастика:
юмористическая фантастика
попаданцы
аниме
5.00
рейтинг книги
Идеальный мир для Лекаря 7

Релокант. Вестник

Ascold Flow
2. Релокант в другой мир
Фантастика:
фэнтези
попаданцы
рпг
5.00
рейтинг книги
Релокант. Вестник

По дороге пряностей

Распопов Дмитрий Викторович
2. Венецианский купец
Фантастика:
фэнтези
героическая фантастика
альтернативная история
5.50
рейтинг книги
По дороге пряностей

Искушение генерала драконов

Лунёва Мария
2. Генералы драконов
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Искушение генерала драконов

Царь Федор. Трилогия

Злотников Роман Валерьевич
Царь Федор
Фантастика:
альтернативная история
8.68
рейтинг книги
Царь Федор. Трилогия

Идеальный мир для Социопата 4

Сапфир Олег
4. Социопат
Фантастика:
боевая фантастика
6.82
рейтинг книги
Идеальный мир для Социопата 4

Охота на попаданку. Бракованная жена

Герр Ольга
Любовные романы:
любовно-фантастические романы
5.60
рейтинг книги
Охота на попаданку. Бракованная жена

Решала

Иванов Дмитрий
10. Девяностые
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Решала

Приручитель женщин-монстров. Том 7

Дорничев Дмитрий
7. Покемоны? Какие покемоны?
Фантастика:
юмористическое фэнтези
аниме
5.00
рейтинг книги
Приручитель женщин-монстров. Том 7

Месть за измену

Кофф Натализа
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Месть за измену

Медиум

Злобин Михаил
1. О чем молчат могилы
Фантастика:
фэнтези
7.90
рейтинг книги
Медиум

Вернуть невесту. Ловушка для попаданки 2

Ардова Алиса
2. Вернуть невесту
Любовные романы:
любовно-фантастические романы
7.88
рейтинг книги
Вернуть невесту. Ловушка для попаданки 2

Партиец

Семин Никита
2. Переломный век
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Партиец