Книга: Недокументированные и малоизвестные возможности Windows XP
Простой пример
Простой пример
Конечно, приведенный выше пример довольно сложен — ведь он написан на машинном языке и в шестнадцатиричном виде. Но его можно упростить, ведь отладчик в 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:rr.bin
r cx
400
w
Согласитесь, уже проще — ведь теперь не нужно вводить текстовую информацию в шестнадцатиричном виде. А если учесть еще одну возможность командной строки, то станет совершенно просто. Все дело в том, что совсем не обязательно вводить данный текст в отладчике, ведь можно воспользоваться Блокнотом, а потом просто скопировать введенный текст в буфер обмена, запустить debug.exe и нажать правую кнопку мыши в области его окна, чтобы отладчик начал обработку команд из буфера обмена. При этом только следует убедиться, что режим быстрой вставки в командной строке включен (DWORD-параметр Quick Edit, расположенный в ветви реестра HKEY_CURRENT_USERConsole, должен быть равен 1).
- СТРУКТУРА ПРОСТОЙ ПРОГРАММЫ
- ПРИМЕР ПРОСТОЙ ПРОГРАММЫ НА ЯЗЫКЕ СИ
- 1.2.5. Пример программы
- 19.5.1. Простой пример
- Комментарии к примеру простой системы "производитель
- Пример 25-1. Простой массив
- Простой пример использования сигнала SIGURG
- Простой пример использования функции select
- Простой пример, иллюстрирующий применение модели XML DOM и однонаправленного чтения-записи XML-документов
- Простой пример с текстом
- Листинг 14.1. Простой пример создания и использования объекта ADO.NET DataSet
- 5.3.1. Учебный пример: SMTP, простой протокол передачи почты