Простой пример

Простой пример

Конечно, приведенный выше пример довольно сложен — ведь он написан на машинном языке и в шестнадцатиричном виде. Но его можно упростить, ведь отладчик в Windows XP поддерживает как ASCII-символы, так и язык «Ассемблера».

Вот упрощением мы сейчас и займемся. Например, напишем программу, которая будет открывать созданный нами ранее файл (если он будет называться hello.exe и находиться на диске D:).

Листинг 13.2. Создание простого файла, открывающего другой файл

Очистка памяти и описание заголовка файла аналогично приведенному выше примеру, поэтому эту часть кода мы пропустим.

а 1010

db "D:HELLO.EXE"

а 1040

db "SHELL32.DLL"

а 1050

db "KERNEL32.DLL"

а 1060

db 0,0,"ShellExecuteA"

а 1070

db 0,0,"ExitProcess"

а 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

xor bx,bx

push bx

push bx

push bx

db 68,10,10,40,0

push bx

push bx

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

push bx

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

m 1000 1200 200

m 0 400 100

n d: r.bin

r cx

400

w

Согласитесь, уже проще — ведь теперь не нужно вводить текстовую информацию в шестнадцатиричном виде. А если учесть еще одну возможность командной строки, то станет совершенно просто. Все дело в том, что совсем не обязательно вводить данный текст в отладчике, ведь можно воспользоваться Блокнотом, а потом просто скопировать введенный текст в буфер обмена, запустить debug.exe и нажать правую кнопку мыши в области его окна, чтобы отладчик начал обработку команд из буфера обмена. При этом только следует убедиться, что режим быстрой вставки в командной строке включен (DWORD-параметр Quick Edit, расположенный в ветви реестра HKEY_CURRENT_USERConsole, должен быть равен 1).

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг:

Простой пример

Из книги автора

Простой пример Начнем с простого примера: наложим переход на изменение фона ссылки. Когда пользователь будет наводить на ссылку, цвет ее фона будет меняться, и мы применим переход, чтобы сделать это изменение плавным. Такого эффекта раньше можно было добиться


Простой пример функции io_read()

Из книги автора

Простой пример функции io_read() Чтобы проиллюстрировать, как ваш администратор ресурса мог бы возвращать клиенту данные, рассмотрим простейший администратор ресурса, который всегда возвращает одну и ту же строковую константу «Здравствуй, мир! ». Даже в таком простом случае


Простой пример функции io_write()

Из книги автора

Простой пример функции io_write() Это был простой пример функции io_read(); давайте теперь перейдем к функции io_write(). Основной камень преткновения, связанный с io_write(), — получить доступ к данным. Поскольку библиотека администратора ресурсов считывает лишь незначительную часть


Простой пример функции io_devctl()

Из книги автора

Простой пример функции io_devctl() Клиентский вызов devctl() формально определен так:#include <sys/types.h>#include <unistd.h>#include <devctl.h>int devctl(int fd, int dcmd, void *dev_data_ptr, size_t nbytes, int *dev_info_ptr);Прежде чем рассматривать эту функцию с позиций администратора ресурсов, надо сначала понять, что это за


11.3.2. Простой пример stat()

Из книги автора

11.3.2. Простой пример stat() Рассмотрим простую программу, которая отображает информацию из lstat() для каждого имени файла, переданного в аргументе. Она иллюстрирует, как использовать значения, возвращенные семейством функций stat(). 1: /* statsamp.с */ 2: 3: /* Для каждого имени файла,


Простой пример использования сигнала SIGURG

Из книги автора

Простой пример использования сигнала SIGURG Теперь мы рассмотрим тривиальный пример отправки и получения внеполосных данных. В листинге 24.1[1] показана программа отправки этих данных.Листинг 24.1. Простая программа отправки внеполосных данных//oob/tcpsend01.c 1 #include "unp.h" 2 int 3 main(int


Простой пример использования функции select

Из книги автора

Простой пример использования функции select Теперь мы переделаем код нашего получателя внеполосных данных и вместо сигнала SIGURG будем использовать функцию select. В листинге 24.3 показана принимающая программа.Листинг 24.3. Принимающая программа, в которой (ошибочно)


Простой пример

Из книги автора

Простой пример Конечно, приведенный выше пример довольно сложен — ведь он написан на машинном языке и в шестнадцатиричном виде. Но его можно упростить, ведь отладчик в Windows XP поддерживает как ASCII-символы, так и язык «Ассемблера».Вот упрощением мы сейчас и займемся.


1.5.1. Простой поиск

Из книги автора

1.5.1. Простой поиск Начинающие пользователи обычно используют самый простой вариант поиска — поиск "в лоб", при котором в поисковой строке набирается исходное выражение или слово и запускается процесс. Как мы уже видели при разборе языка запросов, в этом случае поиск


Пример простой хранимой процедуры

Из книги автора

Пример простой хранимой процедуры Настало время создать первую хранимую процедуру и на ее примере изучить процесс создания хранимых процедур. Но для начала следует сказать несколько слов о том, как работать с хранимыми процедурами Дело в том, что своей славой


5.3.1. Учебный пример: SMTP, простой протокол передачи почты

Из книги автора

5.3.1. Учебный пример: SMTP, простой протокол передачи почты В примере 5.7. иллюстрируется транзакция SMTP (Simple Mail Transfer Protocol — простой протокол передачи почты), который описан в спецификации RFC 2821. В данном примере строки, начинающиеся с С:, отправляются почтовым транспортным


5.3.1. Учебный пример: SMTP, простой протокол передачи почты

Из книги автора

5.3.1. Учебный пример: SMTP, простой протокол передачи почты В примере 5.7. иллюстрируется транзакция SMTP (Simple Mail Transfer Protocol — простой протокол передачи почты), который описан в спецификации RFC 2821. В данном примере строки, начинающиеся с C:, отправляются почтовым транспортным


ПРИМЕР ПРОСТОЙ ПРОГРАММЫ НА ЯЗЫКЕ СИ

Из книги автора

ПРИМЕР ПРОСТОЙ ПРОГРАММЫ НА ЯЗЫКЕ СИ Давайте рассмотрим простую программу на языке Си. Следует сразу сказать, что такой пример нужен нам лишь для выявления некоторых основных черт любой программы, написанной на языке Си. Далее мы дадим пояснения к каждой строке, но, перед


Пример 10-14. Простой цикл while

Из книги автора

Пример 10-14. Простой цикл while #!/bin/bashvar0=0LIMIT=10while [ "$var0" -lt "$LIMIT" ]do echo -n "$var0 " # -n подавляет перевод строки. var0=`expr $var0 + 1` # допускается var0=$(($var0+1)).doneechoexit


Пример 25-1. Простой массив

Из книги автора

Пример 25-1. Простой массив #!/bin/basharea[11]=23area[13]=37area[51]=UFOs# Массивы не требуют, чтобы последовательность элементов в массиве была непрерывной.# Некоторые элементы массива могут оставаться неинициализированными.# "Дыркм" в массиве не являются ошибкой.echo -n "area[11] = "echo ${area[11]} #