Защита от хакеров корпоративных сетей. Коллектив авторов. Читать онлайн. Newlib. NEWLIB.NET

Автор: Коллектив авторов
Издательство:
Серия:
Жанр произведения: Компьютеры: прочее
Год издания: 2005
isbn: 5-98453-015-5
Скачать книгу
в большей части сгенерированного декомпилятором ассемблерного кода отсутствуют имена.

      Оценочную версию IDA Pro, пригодную для первоначального знакомства с программой, можно загрузить с www.datarescue.com/idabase/ida.htm. SoftICE компании Numega – другой популярный отладчик. Дополнительные сведения о нем можно найти по адресу www.compuware.com/products/numega/drivercentral/.

      Для сравнения была написана небольшая программа на языке C (классическая небольшая программа, выводящая строку «Hello World»). Для отладки использовался отладчик GNU (GDB). Код программы представлен ниже:

      #include <stdio.h>

      int main ()

      {

      printf (“Hello World\n”);

      return (0);

      }

      Программа была скомпилирована с включением отладочной информации (был включен переключатель —g):

      [elliptic@]$ gcc -g hello.c -o hello

      [elliptic@ellipse]$ ./hello

      Hello World

      Пример протокола отладки под управлением GDB показан ниже:

      [elliptic@ellipse]$ gdb hello

      GNU gdb 19991004

      Copyright 1998 Free Software Foundation, Inc.

      GDB is free software, covered by the GNU General Public

      License, and you are welcome to change it and/or

      distribute copies of it under certain conditions.

      Type “show copying” to see the conditions.

      There is absolutely no warranty for GDB. Type “show

      warranty” for details.

      This GDB was configured as “i386-redhat-linux”...

      (gdb) break main

      Была установлена точка прерывания при входе в функцию main. При ее достижении выполнение программы было приостановлено для выполнения программистом действий по отладке программы. Контрольная точка была установлена до выдачи команды run.

      Breakpoint 1 at 0x80483d3: file hello.c, line 5.

      (gdb) run

      Команда run начинает выполнение программы под управлением отладчика.

      Starting program: /home/ryan/hello

      Breakpoint 1, main () at hello.c:5

      5 printf (“Hello World\n”);

      (gdb) disassemble

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

      Dump of assembler code for function main:

      0x80483d0 <main>: push %ebp

      0x80483d1 <main+1>: mov %esp,%ebp

      0x80483d3 <main+3>: push $0x8048440

      0x80483d8 <main+8>: call 0x8048308 <printf>

      0x80483dd <main+13>: add $0x4,%esp

      0x80483e0 <main+16>: xor %eax,%eax

      0x80483e2 <main+18>: jmp 0x80483e4 <main+20>

      0x80483e4 <main+20>: leave

      0x80483e5 <main+21>: ret

      End of assembler dump.

      Протокол отображает ассемблерный код программы «hello world», соответствующий ассемблеру x86 Linux. Исследование собственных программ в отладчике – хороший способ изучения листингов ассемблерного кода.

      (gdb) s

      printf (format=0x8048440 “Hello World\n”) at printf.c:30

      printf.c: No such file or directory.

      После задания командой s («step») режима пошагового выполнения программы в отладчике выполняется переход к вызову функции printf. GDB сообщает о невозможности дальнейшей детализации функции printf из-за отсутствия в распоряжении отладчика исходного кода функции printf.

      (gdb) s

      31 in printf.c

      (gdb) s

      Hello World

      35 in printf.c

      (gdb) c

      Continuing.

      Далее