The module was created as a part of my master thesis in the 2010 year. The master thesis theme is Keylogging in Linux kernel. The main idea was to find out a way to intercept system calls for x64 arch Linux kernel, especially for kernel 2.6.34.7-61.fc13.x86_64.
Рубрика «Разработка под Linux» - 31
System call interception in Linux-kernel module
2019-01-23 в 5:23, admin, рубрики: C, hooking, kernel, linux, rootkit, x86-64, Настройка Linux, Разработка под LinuxLinux API. Управление буферизацией файлового ввода-вывода, осуществляемой в ядре
2019-01-21 в 16:11, admin, рубрики: Блог компании Издательский дом «Питер», книги, Профессиональная литература, Разработка под Linux, системное программированиеПривет, Хаброжители! Мы уже писали о книге Майкла Керриска «Linux API. Исчерпывающее руководство». Сейчас решили опубликовать отрывок из книги «Управление буферизацией файлового ввода-вывода, осуществляемой в ядре»
Сброс буферной памяти ядра для файлов вывода можно сделать принудительным. Иногда это необходимо, если приложение, прежде чем продолжить работу (например, процесс, журналирущий изменения базы данных), должно гарантировать фактическую запись вывода на диск (или как минимум в аппаратный кэш диска).
Перед тем как рассматривать системные вызовы, используемые для управления буферизацией в ядре, будет нелишним рассмотреть несколько относящихся к этому вопросу определений из SUSv3.
Читать полностью »
Трехмерная визуализация в тренажерах подвижного состава на базе движка OpenSceneGraph
2019-01-16 в 22:04, admin, рубрики: c++, openscenegraph, qt, высокоскоростной электропоезд, железная дорога, Программирование, Работа с 3D-графикой, Разработка под Linux, сапсан, симуляция, тренажеры подвижного состава, ЭВС2Чуть меньше года назад увидела свет публикация, где мы рассказывали об учебно-лабораторном комплексе (УЛК) электропоезда ЭС1 «Ласточка», разработанном нашем университете. Тогда я обещал, что это будет не последняя публикация на данную тему, в частности грозился рассказать о проблемах создания трехмерной визуализации для подобного рода симуляторов и очертить основные подходы к их решению.
Прошедший год порадовал нас очередным релизом — УЛК высокоскоростного электропоезда ЭВС2 «Сапсан», который состоялся ещё в августе прошлого года. Сам по себе учебно-лабораторный комплекс данного электропоезда заслуживает отдельного рассказа, но в контексте этой публикации речь пойдет о наболевшем — проблеме создания адекватной подсистемы трехмерной визуализации, к решению которой наша команда подступалась с разных сторон около двух лет. Релиз симулятора «Сапсана» знаменателен (среди прочего) и тем, что определил вектор развития наших разработок в этой области.
Читать полностью »
ld -z separate-code
2019-01-14 в 6:49, admin, рубрики: compiler, exploit mitigation, linker, linux, security, Блог компании «Digital Security», информационная безопасность, Разработка под Linux
Речь в этой статье пойдёт о небольшой security-фиче, добавленной в GNU ld к релизу 2.30 в декабре 2018 года. На русском языке это улучшение упоминалось на opennet с такой аннотацией:
режим "-z separate-code", повышающий защищённость исполняемых файлов ценой небольшого увеличения размера и потребления памяти
Давайте разберёмся. Чтобы объяснить, о какой проблеме безопасности идёт речь и в чём состоит решение, начнём с общих черт эксплойтов бинарных уязвимостей.
Как и зачем мы оптимизировали алгоритм очистки SLAB-кэшей в ядре Linux
2019-01-10 в 20:29, admin, рубрики: openvz, Блог компании Virtuozzo, виртуализация, коммьюнити, контейнеры, оптимизация ядра, Программирование, Разработка под Linux, хостинг, ядро LinuxРост популярности контейнеров и их использование в совокупности с контрольными группами выявили серьезную проблему масштабируемости, которая приводит к значительному падению производительности на больших машинах. Проблема в том, что время обхода SLAB-кэшей зависит квадратично от количества контейнеров, а активное потребление больших объемов памяти за короткий период может стать причиной ухода системы в busy loop, потребляющий 100% процессорного времени. Сегодня мне хотелось бы рассказать, как мы решили эту проблему, изменив алгоритм учета использования контрольной группой memcg объектов SLAB-кэшей и оптимизировав функцию shrink_slab().
Использование GtkApplication. Особенности отрисовки librsvg
2019-01-09 в 16:24, admin, рубрики: C, GTK+, GtkDrawingArea, GtkImage, librsvg, makefile, отрисовка ui компонентов, Программирование, Разработка под LinuxАннотация статьи.
- Использование GtkApplication. Каркас приложения. Makefile.
- Отрисовка библиотекой librsvg.
- Экспорт изображения в GtkImage и его масшабирование.
- Масштабирование SVG самописными функциями.
- Получение полного пути в приложениях.
- Тесты быстродействия GtkDrawingArea vs GtkImage.
Реализация горячей перезагрузки С++ кода в Linux
2019-01-06 в 14:11, admin, рубрики: c++, c++11, linux, MacOS, Разработка под Linux, Разработка под MacOS
* Ссылка на библиотеку в конце статьи. В самой статье изложены механизмы, реализованные в библиотеке, со средней детализацией. Реализация для macOS еще не закончена, но она мало чем отличается от реализации для Linux. Здесь в основном рассматривается реализация для Linux.
Гуляя по гитхабу одним субботним днем, я наткнулся на библиотеку, реализующую обновление c++ кода налету для windows. Сам я слез с windows несколько лет назад, ни капли не пожалел, и сейчас все программирование происходит либо на Linux (дома), либо на macOS (на работе). Немного погуглив, я обнаружил, что подход из библиотеки выше достаточно популярен, и msvc использует ту же технику для функции "Edit and continue" в Visual Studio. Проблема лишь в том, что я не нашел ни одной реализации под не-windows (плохо искал?). На вопрос автору библиотеки выше, будет ли он делать порт под другие платформы, ответ был отрицательный.
Сразу скажу, что меня интересовал только вариант, в котором не пришлось бы менять существующий код проекта (как, например, в случае с RCCPP или cr, где весь потенциально перезагружаемый код должен быть в отдельной динамически загружаемой библиотеке).
"Как так?" — подумал я, и принялся раскуривать фимиам.
Изучаем трассировку с помощью eBPF: Руководство и примеры
2019-01-04 в 15:32, admin, рубрики: bcc, bpftrace, eBPF, Настройка Linux, Разработка под LinuxПривет! Предлагаю вашему вниманию перевод статьи Брендана Грегга, посвящённой изучению eBPF
На конференции Linux Plumbers было как минимум 24 выступления по eBPF. Он быстро стал не просто бесценной технологией, но и востребованным навыком. Возможно, вам хотелось бы поставить какую-то цель на новый год — изучите eBPF!
Термин eBPF должен означать что-то существенное, как например Virtual Kernel Instruction Set (VKIS), но по своему происхождению это расширенный Berkeley Packet Filter. Он применим во многих областях, таких как производительность сети, фаерволлы, безопасность, трассировка и драйвера устройств. По некоторым из них есть много свободно доступной информации в интернете — например, по трассировке, а по другим ещё нет. Термин трассировка относится к инструментам анализа производительности и наблюдения, которые могут генерировать информацию по каждому событию. Возможно, вы уже использовали трассировщик — tcpdump и strace являются специализированными трассировщиками.
Этим постом я собираюсь описать процесс изучения использования eBPF в целях трассировки, сгруппированный в разделы для начинающих, опытных и продвинутых пользователей. В итоге: