Шаг 8.
Утилиты для работы с Ассемблером

    На этом шаге мы перечислим дополнительные утилиты, используемые при программировании на Ассемблере.

    На этом шаге мы дадим краткий обзор ряда других программ, которые часто используются при программировании на Ассемблере. С некоторыми из перечисленных программ мы познакомимся в дальнейшем более подробно, а некоторые более упоминаться не будут.

Редакторы

    Обзор редакторов начнем с редактора QEDITOR.EXE, который поставляется вместе с пакетом MASM32. Сам редактор и все сопутствующие ему утилиты написаны на ассемблере. Анализ их размера и возможностей действительно впечатляет. Например, сам редактор имеет длину всего 27 Кбайт, а утилита, используемая для просмотра отчетов о трансляции, - всего 6 Кбайт. Редактор вполне годится для работы с небольшими одномодульными приложениями. Для работы с несколькими модулями он не очень удобен. Работа редактора основана на взаимодействии с различными утилитами посредством пакетных файлов. Например, трансляцию программ осуществляет пакетный файл ASSMBL.BAT, который использует ассемблер ML.EXE, а результат ассемблирования направляется в текстовый файл ASMBL.TXT. Далее для просмотра этого файла используется простая утилита THEGUN.EXE. Аналогично осуществляется редактирование связей. Для дизассемблирования исполняемого модуля используется утилита DUMPPE.EXE, результат работы этой утилиты помещается в текстовый файл DISASM.TXT. Аналогично осуществляются и другие операции. Вы легко сможете настроить эти операции, отредактировав соответствующий пакетный файл с модификацией (при необходимости) используемых утилит (заменив, например, ML.EXE на TASM32.EXE и т. п.).

    Вторая программа это EAS.EXE (Easy Assembler Shell). Редактор, а точнее оболочка, позволяет создавать и транслировать довольно сложные проекты, состоящие из ASM-, OBJ-, RC-, RES-, DEF-файлов. Программа позволяет работать как с TASM, так и MASM, а также с другими утилитами (отладчиками, редакторами ресурсов и т. д.). Непосредственно в программе можно настроить компиляторы и редакторы связей на определенный режим работы путем задания ключей этих утилит.

Отладчики

    Отладчики позволяют исполнять программу в пошаговом режиме. В дальнейшем мы более подробно будем рассматривать отладчики и дизассемблеры. Здесь же приведем несколько наиболее известных отладчиков: CodeView (Microsoft), Turbo Debugger (Borland), Ice.

Отладчики

    Дизассемблеры переводят исполняемый модуль в ассемблерный код. Примером простейшего дизассемблера является программа DUMPPE.EXE, работающая в строковом режиме. Пример работы программы DUMPPE.EXE представлен в листинге 1. Здесь дизассемблируется программа PROG2_2.ASM, приведенная на шаге 2. Ну как, узнали нашу программу? Смысл обозначений будет ясен из дальнейшего изложения.

kn1a.exe                             (hex)                   (dec)
.EXE  size   (bytes)                  490                    1168
Minimum load  size   (bytes)          450                    1104
Overlay number                          0                       0
Initial  CS:IP                      0000:0000
Initial  SS:SP                      0000:0068                 184
Minimum allocation   (para)             0                       0
Maximum allocation  (para)           FFFF                   65535
Header size   (para)                    4                       4
Relocation  table  offset              40                      64
Relocation entries                      0                       0
Portable Executable starts at          a8
Signature                        00004550   (PE)
Machine                          014C  (Intel  386)
Sections                             0001
Time Date Stamp                  3AE6D1B1 Wed Apr 25 19:31:29 2001
Symbol Table                     00000000
Number of Symbols                00000000
Optional header size                 00E0
Characteristics                      010F
Relocation information stripped
Executable Image
Line numbers stripped
Local symbols stripped
32 bit word machine
Magic                                010B
Linker Version                       5.12
Size of Code                         00000200
Size of Initialized Data             00000000
Size of Uninitialized Data           00000000
Address of Entry Point               00001000
Base of Code                         00001000
Base of Data                         00002000
Image Base                           00400000
Section Alignment                    00001000
File Alignment                       00000200
Operating System Version             4.00
Image Version                        0.00
Subsystem Version                    4.00
Reserved                             00000000
Image Size                           00002000
Header Size                          00000200
Checksum                             00000000
Subsystem                            0002 (Windows)
DLL Characteristics                  0000
Size Of Stack Reserve                00100000
Size Of Stack Commit                 00001000
Size Of Heap Reserve                 00100000
Size Of Heap Commit                  00001000
Loader Flags                         00000000
Number of Directories                00000010	
Directory Name                      VirtAddr                   VirtSize
---------------------------------  -----------                ------------
Export                              00000000                   00000000
Import                              00000000                   00000000
Resource                            00000000                   00000000
Exception                           00000000                   00000000
Security                            00000000                   00000000
Base Relocation                     00000000                   00000000
Debug                               00000000                   00000000
Decription/Architecture             00000000                   00000000
Machine Value (MIPS GP)             00000000                   00000000
Thread Storage                      00000000                   00000000
Load Configuration                  00000000                   00000000
Bound Import                        00000000                   00000000
Import Address Table                00000000                   00000000
Delay Import                        00000000                   00000000
COM Runtime Descriptor              00000000                   00000000
(reserved)                          00000000                   00000000
Section Table
------------------			
Virtual Address                     0001000		
Virtual Size                        00000E		
Raw Data Offset                     000200		
Raw Data Size                       0000200		
Relocation Offset                   000000		
Relocation Count                    000		
Line Number Offset                  0000000		
Line Number Count                   000		
Characteristics                     0000020		
Code			
Executable			
Readable			
Disassembly			
00401000     start:			
00401000     E803000000          call  fn_00401008
00401005     C3		ret	
00401006     CC		int    3	
00401007     CC		int    3	
00401008     fn_00401008:		
00401008     B8E8030000          mov eax,3E8h
0040100D     СЗ                  ret	

    Отметим также дизассемблер W32Dasm и дизассемблер Ida Pro. В дальнейших шагах мы будем подробно рассматривать и сами дизассемблеры, и методику их использования.

HEX-редакторы

    Hex-редакторы позволяют просматривать и редактировать загружаемые модули в шестнадцатеричном виде. Их великое множество, к тому же отладчики и дизассемблеры, как правило, имеют встроенные НЕХ-редакторы. Отметим только весьма популярную в хакерских кругах программу HIEW.EXE. Эта программа позволяет просматривать загружаемые модули как в шестнадцатеричном виде, так и в виде ассемблерного кода. И не только просматривать, но и редактировать.

Компиляторы ресурсов

    В пакетах MASM32 и TASM32 есть компиляторы ресурсов, которые будут описаны далее. Это программы RC.EXE и BRC32.EXE соответственно.

Редакторы ресурсов

    Обычно мы пользуемся редактором ресурсов из пакета Borland C++ 4.5. Простые ресурсы можно создавать в обычном текстовом редакторе. Язык описания ресурсов будет подробно рассмотрен далее.

    Со следующего шага мы начнем рассматривать основы программирования в операционной системе Windows.




Предыдущий шаг Содержание Следующий шаг