Как насчет подойдя к ней с : "привет, как дела? Я просто хотел бы узнать ваши мысли по моему проекту документа, который я планирую в ближайшее время представить* ". @Даниил Азуэлос это -ПН, необходимых для работы Nmap? А какая разница? Другой вопрос, что специалисты здесь могли бы посоветовать вам: если вы поворачиваете на границе с визой на 8 дней, но вылет обратно в 9-й день, они позволят тебе в? Спасибо я установил Айронхайд, как я могу убедиться, что он работает? Единство 3D теперь ок, но я хочу убедиться, что Айронхайд-это активный, как я могу это сделать? У меня такая же проблема с новой установки операционной системы Ubuntu 12.04. Я установил хром деб с веб-сайта Google. Это, кажется, нормально установить (запущен программный центр получает), но хром не где можно нашли. На самом деле спешил домой', кажется, не найти ничего, неважно, какая вкладка и условия поиска я использую. Единственный намек на Хром в настройках системы, информация, где я могу сделать хром по умолчанию для веб - но это не дает мне какой-либо способ, чтобы на самом деле запустить хром.

Я пытаюсь получить содержимое дополнительного раздела в бинарных эльф. На данный момент, я использую следующий код, чтобы получить имя каждого раздела:

#включить заголовочный файл <stdio.ч>
#включить <запустите.ч>
код #include <stdint.ч>
#включить <stdlib.ч>

#ПРАГМА пакет(пуш,1)
#ПРАГМА пакет(поп)

#определить EI_NIDENT 16

/* 32-разрядный эльф базовых типов. */
тип беззнаковый инт Elf32_Addr;
оператор typedef unsigned краткое Elf32_Half;
тип беззнаковый инт Elf32_Off;
оператор typedef подписал инт Elf32_Sword;
тип беззнаковый инт Elf32_Word;

/* 64-разрядный эльф базовых типов. */
определение типа неподписанные долго долго Elf64_Addr;
оператор typedef unsigned краткое Elf64_Half;
оператор typedef подписал короткое Elf64_SHalf;
определение типа неподписанные долго долго Elf64_Off;
оператор typedef подписал инт Elf64_Sword;
тип беззнаковый инт Elf64_Word;
определение типа неподписанные долго долго Elf64_Xword;
оператор typedef подписал длинный Elf64_Sxword;

typedef структуры elf32_hdr{
 неподписанные символ e_ident[EI_NIDENT];
 Elf32_Half e_type;
 Elf32_Half e_machine;
 Elf32_Word e_version;
 Elf32_Addr e_entry; /* точка входа */
 Elf32_Off e_phoff;
 Elf32_Off e_shoff;
 Заносит Elf32_Word;
 Elf32_Half e_ehsize;
 Elf32_Half e_phentsize;
 Elf32_Half e_phnum;
 Elf32_Half e_shentsize;
 Elf32_Half e_shnum;
 Elf32_Half e_shstrndx;
} Elf32_Ehdr;

typedef структуры elf32_shdr {
 Elf32_Word sh_name;
 Elf32_Word sh_type;
 Elf32_Word sh_flags;
 Elf32_Addr sh_addr;
 Elf32_Off sh_offset;
 Elf32_Word sh_size;
 Sh_link Elf32_Word;
 Elf32_Word sh_info;
 Sh_addralign Elf32_Word;
 Elf32_Word sh_entsize;
} Elf32_Shdr;

typedef структуры elf64_hdr {
 неподписанные символ e_ident[EI_NIDENT]; /* эльфа "магическое число" */
 Elf64_Half e_type;
 Elf64_Half e_machine;
 Elf64_Word e_version;
 Elf64_Addr e_entry; /* точка входа виртуальный адрес */
 Elf64_Off e_phoff; /* заголовочный файл программы Таблица смещение */
 Elf64_Off e_shoff; /* заголовок файла таблицы смещение */
 Elf64_Word заносит;
 Elf64_Half e_ehsize;
 Elf64_Half e_phentsize;
 Elf64_Half e_phnum;
 Elf64_Half e_shentsize;
 Elf64_Half e_shnum;
 Elf64_Half e_shstrndx;
} Elf64_Ehdr;

typedef структуры elf64_shdr {
 Elf64_Word sh_name; /* имя секции, показатель в строке ТБЛ */
 Elf64_Word sh_type; /* тип секции */
 Elf64_Xword sh_flags; /* атрибуты разное раздел */
 Elf64_Addr sh_addr; /* раздел виртуальных адресов на выполнение */
 Elf64_Off sh_offset; /* файл раздел смещение */
 Elf64_Xword sh_size; /* размер секции в байтах */
 Elf64_Word sh_link; /* указатель на другой раздел */
 Elf64_Word sh_info; /* дополнительная информация */
 Elf64_Xword sh_addralign; /* выравнивание раздела */
 Elf64_Xword sh_entsize; /* размер записи, если раздел содержит таблицы */
} Elf64_Shdr;



тап_п(АГДС, типа char **argv в) 
{
 Файл* ElfFile = нуль;
 голец* SectNames = нуль;
 Elf64_Ehdr elfHdr;
 Elf64_Shdr sectHdr;
 uint32_t в IDx;

 если(argc != 2) {
 функции printf("использование: %s <ELF_FILE>\П", и argv[0]);
выход(1);
}

 если((ElfFile = с помощью функции fopen(массива argv[1], "р")) == нуль) {
 perror("[е] ошибка при открытии файла:");
выход(1);
}

 заголовок эльф // читаем, первым делом в файл
 fread операционной(&elfHdr, 1, оператор sizeof(Elf64_Ehdr), ElfFile);

 // разделе прочитать название строки таблицы
 // во-первых, прочитайте его заголовок. 
 /* 
 e_shoff этот элемент содержит файл заголовка таблицы смещения
 в байтах. Если файл не имеет заголовка раздела таблицы, это
 член держит ноль.

 e_shstrndx этот элемент содержит раздела индекс заголовок таблицы
 записи, связанные с раздел имя строки таблицы. Если
 файл не содержит раздел название строки таблицы, то этот член
 держит SHN_UNDEF значение.

 Если индекс секции название строки таблицы
 больше или равен SHN_LORESERVE (0xff00), это
 член держит SHN_XINDEX (0xFFFF) и реальный показатель
 раздел раздел наименование строки таблицы проводится в
 член sh_link начального элемента в заголовке раздела 
 таблица. В противном случае, член sh_link первоначального
 запись в таблице заголовков разделов содержит значение ноль.

 SHN_UNDEF это значение является неопределенным, отсутствует
 не имеет значения, или иначе бессмысленно
 ссылка на раздел. Например, символ
 "определенные" относительно раздела количество
 SHN_UNDEF-это неопределенный символ.

 SHN_LORESERVE это значение определяет нижнюю границу
 диапазон зарезервированных индексов.

 SHN_LOPROC значения, больше чем или равный SHN_HIPROC
 зарезервированы для конкретного процессора
семантика.

 SHN_HIPROC значения меньше или равны SHN_LOPROC являются
 зарезервированы для процессорно-ориентированной семантики.

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

 Символы SHN_COMMON определенными относительно этого раздела
 общие символы, такие как Fortran общего
 или нераспределенные с внешними переменными.

 SHN_HIRESERVE это значение определяет верхнюю границу
 диапазон зарезервированных индексов между
 SHN_LORESERVE и SHN_HIRESERVE включительно;
 значения не ссылаться на раздел
 заголовок таблицы. То есть, заголовок раздела 
 таблица не содержит записей для
 зарезервированных индексов.
*/
 функции fseek(ElfFile, elfHdr.e_shoff + elfHdr.e_shstrndx * оператор sizeof(sectHdr), SEEK_SET);
 fread операционной(&sectHdr, 1, оператор sizeof(sectHdr), ElfFile);
/*
 sh_size этот член имеет размер раздела в байтах. Если
 тип раздела SHT_NOBITS, секция занимает sh_size
 байт в файле. Раздел SHT_NOBITS тип может иметь
 ненулевой размер, но не занимает места в файле.

 значение sh_offset этот член имеет байтовое смещение от
 начала файла до первого байта в разделе.
 Один тип раздела, SHT_NOBITS, не занимает места в
 файл, и его член sh_offset находит концептуальное
 размещение в файл.

 e_shnum это поле содержит количество записей в разделе
 заголовок таблицы. Таким образом, продукт e_shentsize и
 e_shnum дает размер заголовка таблицы в байтах.
 Если файл не имеет заголовка раздела таблицы, e_shnum держит
 значение ноль.

 Если количество записей в заголовке раздела таблица
 больше или равен SHN_LORESERVE (0xff00), e_shnum
 имеет значение ноль и реальное количество элементов в
 в таблице заголовков разделов проводится в поле sh_size
 начальные записи в таблице заголовков разделов. В противном случае,
 поле sh_size начального входа в раздел
 заголовок таблицы содержит значение ноль. 

 sh_name этот элемент указывает имя раздела. Его значение
 является индексом в раздел строку заголовка таблицы,
 выдавая местоположение null-завершенной строку.
*/
 // далее читаем раздел строковые данные
 // функции printf("sh_size = %ЛПУ\Н", sectHdr.sh_size);
 SectNames = функция malloc(sectHdr.sh_size);
 функции fseek(ElfFile, sectHdr.sh_offset, SEEK_SET);
 fread операционной(SectNames, 1, sectHdr.sh_size, ElfFile);

 // чтение всех заголовков разделов 
 Для (в IDx = 0; IDx по < elfHdr.e_shnum; в IDx++)
{
 константный тип char* имя = "";

 функции fseek(ElfFile, elfHdr.e_shoff + индекс * оператор sizeof(sectHdr), SEEK_SET);
 fread операционной(&sectHdr, 1, оператор sizeof(sectHdr), ElfFile);

 // выводим название раздела 
 если (sectHdr.sh_name);
 имя = SectNames + sectHdr.sh_name;
 функции printf("%2У %з\п", индекс, имя);
}

 возврат 0;
}

Работает readelf выступает на "Привет мир" двоичный код генерирует следующий вывод:

$ readelf выступает -с именем HelloWorld
Есть 30 заголовков разделов, начиная со смещения 0x1170:

Заголовки Разделов:
 [Шп] Название Адрес Тип Смещения
 Размер EntSize Флаги Ссылке Информация Выровнять
 [ 0] нуль 0000000000000000 00000000
 0000000000000000 0000000000000000 0 0 0
 [ 1] .истол PROGBITS 0000000000400238 00000238
 000000000000001c 0000000000000000 с 0 0 1
 [ 2] .Примечание.Аби-метки Примечание 0000000000400254 00000254
 0000000000000020 0000000000000000 с 0 0 4
 [ 3] .Примечание.гну.строить-замечу 0000000000400274 00000274
 0000000000000024 0000000000000000 с 0 0 4
 [ 4] .гну.хэш GNU_HASH 0000000000400298 00000298
 000000000000001c 0000000000000000 в 5 0 8
 [ 5] .dynsym DYNSYM 00000000004002b8 000002b8
 0000000000000060 0000000000000018 в 6 1 8
 [ 6] .dynstr STRTAB 0000000000400318 00000318
 000000000000003d 0000000000000000 с 0 0 1
 [ 7] .гну.версия VERSYM 0000000000400356 00000356
 0000000000000008 0000000000000002 в 5 0 2
 [ 8] .гну.version_r VERNEED 0000000000400360 00000360
 0000000000000020 0000000000000000 в 6 1 8
 [ 9] .Рела.Дин Рела 0000000000400380 00000380
 0000000000000018 0000000000000018 в 5 0 8
 [10] .Рела.ПЛТ Рела 0000000000400398 00000398
 0000000000000048 0000000000000018 в 5 12 8
 [11] .инит PROGBITS 00000000004003e0 000003e0
 000000000000001a 0000000000000000 топор 0 0 4
 [12] .ПЛТ PROGBITS 0000000000400400 00000400
 0000000000000040 0000000000000010 топор 0 0 16
 [13] .текст PROGBITS 0000000000400440 00000440
 0000000000000182 0000000000000000 топор 0 0 16
 [14] .Фини PROGBITS 00000000004005c4 000005c4
 0000000000000009 0000000000000000 топор 0 0 4
 [15] .rodata PROGBITS 00000000004005d0 000005d0
 0000000000000013 0000000000000000 с 0 0 4
 [16] .eh_frame_hdr PROGBITS 00000000004005e4 000005e4
 0000000000000034 0000000000000000 с 0 0 4
 [17] .eh_frame PROGBITS 0000000000400618 00000618
 00000000000000f4 0000000000000000 на 0 0 8
 [18] .init_array INIT_ARRAY 0000000000600e10 00000e10
 0000000000000008 0000000000000000 УА 0 0 8
 [19] .fini_array FINI_ARRAY 0000000000600e18 00000e18
 0000000000000008 0000000000000000 УА 0 0 8
 [20] .СКВ PROGBITS 0000000000600e20 об 00000e20
 0000000000000008 0000000000000000 УА 0 0 8
 [21] .динамического 0000000000600e28 00000e28
 00000000000001d0 0000000000000010 ва 6 0 8
 [22] .у PROGBITS 0000000000600ff8 00000ff8
 0000000000000008 0000000000000008 УА 0 0 8
 [23] .получил.ПЛТ PROGBITS 0000000000601000 00001000
 0000000000000030 0000000000000008 УА 0 0 8
 [24] .PROGBITS данные 0000000000601030 00001030
 0000000000000010 0000000000000000 УА 0 0 8
 [25] .БСС NOBITS 0000000000601040 00001040
 0000000000000008 0000000000000000 УА 0 0 1
 [26] .комментарий PROGBITS 0000000000000000 00001040
 0000000000000024 0000000000000001 МС 0 0 1
 [27] .shstrtab STRTAB 0000000000000000 00001064
 0000000000000108 0000000000000000 0 0 1
 [28] .SYMTAB 000018f0 symtab 0000000000000000 
 0000000000000618 0000000000000018 29 45 8
 [29] .strtab STRTAB 0000000000000000 00001f08
 000000000000023c 0000000000000000 0 0 1
Ключ к флагам:
 W (запись), а (запас), х (выполнить), м (слияние), с (строк), L (большой)
 Я (информация), л (порядок связи), G (Группа), Т (СС), е (исключить), х (неизвестно)
 О (дополнительной обработки ОС требуется) о (конкретной ОС), п (конкретного процессора)

Рассматривая следующую запись:

[13] .текст PROGBITS 0000000000400440 00000440
 0000000000000182 0000000000000000 топор 0 0 16

для того, чтобы получить .текст раздела целиком из двоичного достаточно прочитать 0x182 в байт с адреса 0x400440 + 0x440 из файла, где 0x182 раздел размер и 0x400440 адрес и 0x440 это смещение? Кроме того, какова роль выравнивания(0x16) здесь?