П О Р Т А Л                            
С Е Т Е В Ы Х                          
П Р О Е К Т О В                        
  
Поиск по сайту:
                                                 
Главная

О проекте

Web-мастеру
     HTML & JavaScript
     SSI
     Perl
     PHP
     XML & XSLT
     Unix Shell

MySQL

Безопасность

Хостинг

Другое








Самое читаемое:

Учебник PHP - "Для Чайника".
Просмотров 186370 раз(а).

Иллюстрированный самоучитель по созданию сайтов.
Просмотров 87917 раз(а).

Учебник HTML.
Просмотров 79812 раз(а).

Руководство по PHP5.
Просмотров 50306 раз(а).

Хостинг через призму DNS.
Просмотров 58023 раз(а).

Подборка текстов стандартных документов.
Просмотров 49282 раз(а).

Учебник PHP - Самоучитель
Просмотров 56116 раз(а).

Документация на MySQL (учебник & справочное руководство)
Просмотров 57521 раз(а).

Внешние атаки...
Просмотров 46892 раз(а).

Учебник PHP.
Просмотров 41161 раз(а).

SSI в примерах.
Просмотров 31498 раз(а).






 
 
| Добавить в избранное | Сделать стартовой Project.Net.Ru | Помощь





Вариации на заданную тему

Примеры, приведенные ранее, приводятся из программы, скомпилированной при помощи egcs-2.91.66 и glibc-2.1.3-22. Однако, вы возможно не получите те же результаты в вашей системе. Конечно же, функции типа *printf() изменяются в соответствии с версией glibc и компиляторы разных версий вовсе не выполняют те же самые инструкции.

Программа stuff подчеркивает эти различия:

/* stuff.c */
#include <stdio.h>

main(int argc, char **argv) {

  char aaa[] = "AAA";
  char buffer[64];
  char bbb[] = "BBB";

  if (argc < 2) {
    printf("Usage : %s <format>\n",argv[0]);
    exit (-1);
  }

  memset(buffer, 0, sizeof buffer);
  snprintf(buffer, sizeof buffer, argv[1]);
  printf("buffer = [%s] (%d)\n", buffer, strlen(buffer));
}

Массивы aaa и bbb используются как разделители при нашем путешествии по стеку. Поэтому мы знаем, что когда встретим 424242, следующими байтами будет buffer. Таблица 1 показывает различия в зависимости от версий glibc и компилятора.

Таблица 1 : Вариации по отношению к glibc  
Компилятор
glibc
Вывод
gcc-2.95.32.1.3-16buffer = [8048178 8049618 804828e 133ca0 bffff454 424242 38343038 2038373] (63)
egcs-2.91.662.1.3-22buffer = [424242 32343234 33203234 33343332 20343332 30323333 34333233 33] (63)
gcc-2.962.1.92-14buffer = [120c67 124730 7 11a78e 42424263303231 31203736 33373432 203720] (63)
gcc-2.962.2-12buffer = [120c67 124730 7 11a78e 42424263303231 31203736 33373432 203720] (63)

Далее в этой статье мы продолжим использовать egcs-2.91.66 и glibc-2.1.3-22, но не удивляйтесь, если заметите отличие на своей машине.

Назад | Содержание | Вперед



Если Вы не нашли что искали, то рекомендую воспользоваться поиском по сайту:
 





Copyright © 2005-2016 Project.Net.Ru