войти зарегистрироваться

AssemblerМинималистичная программа в формате ELF из песочницы

Вдохновившись статьёй Привет из свободного от libc мира, я так же решил проделать нечто подобное. Чтобы не заниматься этим бесцельно, я решил поставить перед собой следующую задачу. Сделать программу, выводящую какую-нибудь простую строку, вроде «ELF, hello!». Разобраться с тем, как именно она будет представлена в исполняемом файле. Ну и попутно, постараться уложиться в 100 байт.

Linux для всехНесколько подробностей о функции main из песочницы

Однажды заинтересовался, содержимым стека функции main процесса в linux. Провел некоторые изыскания и теперь представляю вам результат.

Варианты описания функции main:
1. int main()
2. int main(int argc, char **argv)
3. int main(int argc, char **argv, char **env)
4. int main(int argc, char **argv, char **env, ElfW(auxv_t) auxv[])
5. int main(int argc, char **argv, char **env, char **apple)

argc — число параметров
argv — нуль-терминальный массив указателей на строки параметров командной строки
env — нуль-терминальный массив указателей на строки переменных окружения. Каждая строка в формате ИМЯ=ЗНАЧЕНИЕ
auxv — массив вспомогательных значение (доступно только для PowerPC [1])
apple — путь к исполняемому файлу (в MacOS и Darwin [2])
Вспомогательный вектор — массив с различной дополнительной информацией, такой как эффективный идентификатор пользователя, признак setuid бита, размер страницы памяти и т.п.

Далее о том как получить массив вспомогательных значений для i386 и x86_64, а также об остальном содержимом «сегмента» стека.

РазработкаПеренаправление функций в разделяемых ELF-библиотеках

Все мы пользуемся динамически-компонуемыми билиотеками. Их возможности поистине великолепны. Во-первых, такая библиотека загружается в физическое адресное пространство только один раз для всех процессов. Во-вторых, можно расширять функционал своей программы, подгружая дополнительную библиотеку, которая и будет этот функционал обеспечивать. И все это без перезапуска самой программы. А еще решается проблема обновлений. Для динамически компонуемой библиотеки можно определить стандартный интерфейс и влиять на функционал и качество своей основной программы, просто меняя версию библиотеки. Такие методы повторного использования кода даже получили название «архитектура plug-in’ов». Но топик не об этом.

Кстати, нетерпеливые могут все скачать и попробовать прямо сейчас.

ПрограммированиеКомпиляция. 10: компиляция в ELF

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

Далее в посте:

  1. Оптимизация «в глазок»
  2. Стандартные функции
  3. Вывод в ELF
  4. Как это работает?
  5. Что получилось?

ПрограммированиеПривет из свободного от libc мира! (Часть 1)

В качестве упражнения я хочу написать программу на С. Достаточно простую для того, чтобы дизассемблировать ее и объяснить весь код самой себе.

Звучит несложно, правильно?

У читателя предполагается наличие опыта компиляции программ и работы в Линуксе. Небольшое умение читать ассемблерный код тоже пригодится.

ЖелезоЗамена сенсорного экрана на HTC Touch P3450 (HTC Elf)

Предыстория


В сентябре прошлого года заметил на своем эльфе странное пятно на экране, как будто от сладкого кофе. Протерев экран, увидел, что под сенсорным экраном образовалась какая-то лужа. Попытки сместить ее к краю экрана оказались наполовину успешными — визуально пузыря было не видно, но по работе сенсора стало понятно, что помогло это не сильно. Сенсор то работал точно, то с приличным сдвигом (я даже сначала предположил, что это не аппаратная проблема), само собой никакие калибровки мне не помогли. Хард ресет откинул версию о программной ошибке.
Горевал я не сильно, ибо давно хотел обновить свое средство связи и тут подвернулся такой повод.
Проблема решилась покупкой HTC Diamond P4700, а эльф был перемещен в ящик (выкидывать его все-таки жалко!)).

Персональные блоги Частоты, способные взорвать атомную бомбу, зомбировать людей и помочь нам познать тайну души

В радиолюбительстве есть особое направление – мониторинг ведомственных радиостанций: правительственного радио, раций спецслужб, военных передатчиков. Особым шиком считается перехват сеансов связи между базой и атомными субмаринами в диапазоне сверхдлинных волн – СДВ. В англоязычной литературе СДВ получили прекрасное название ELF (Extreme Low Frequency – «предельно низкая частота»). Так что ELF’ы – под этой аббревиатурой мы будем подразумевать СДВ-передатчики – встречаются не только в сказках.