Как стать автором
Обновить

Выпуск Rust 1.44.0: cargo tree, async/await в no_std, Unicode 13 и vec![] в const-контексте

Время на прочтение 3 мин
Количество просмотров 3.3K
Open source *Программирование *Системное программирование *Компиляторы *Rust *

Данный анонс является компиляцией черновика анонса и подробных примечаний к выпуску. Официальный анонс короче, чем обычно:


This is a shorter blog post than usual: in acknowledgement that taking a stand against the police brutality currently happening in the US and the world at large is more important than sharing tech knowledge, we decided to significantly scale back the amount of promotion we're doing for this release.

The Rust Core Team

Команда Rust выпустила новую версию, 1.44.0. Rust — это язык программирования, позволяющий каждому создавать надёжное и эффективное программное обеспечение.


Если вы установили предыдущую версию Rust средствами rustup, то для обновления до версии 1.44.0 вам достаточно выполнить следующую команду:


rustup update stable

Если у вас ещё не установлен rustup, вы можете установить его с соответствующей страницы нашего веб-сайта, а также посмотреть подробные примечания к выпуску на GitHub.

Читать дальше →
Всего голосов 24: ↑24 и ↓0 +24
Комментарии 4

All-Hardware: стартовал конкурс прошивок для отладок STM и NXP

Время на прочтение 2 мин
Количество просмотров 1.3K
Я пиарюсь

Организаторы предлагают разработать прошивку для отладочных плат STM и NXP, размещенных в сервисе. Конкурс продлится до 24 апреля, победители получают в качестве призов эти самые отладочные платы и указание авторства на сайте сервиса.

Как наверно уже понятно из некоторых моих статей, я имею непосредственное отношение к разработке сервиса All-Hardware, поэтому есть немного инсайдерской информации. Сервис этот международный, но корни его российские, и вся разработка ведется здесь. Текущий конкурс анонсирован только в России, и только после его завершения будет запущен worldwide. И хоть и никто не запрещает участвовать в конкурсе из любой точки мира, прямо сейчас есть все шансы не только поучаствовать, но и победить - вряд ли конкуренция будет большой.

Читать далее
Всего голосов 6: ↑6 и ↓0 +6
Комментарии 11

Создатель SourceHut представил язык программирования Hare, умещающийся на трехдюймовой дискете

Время на прочтение 2 мин
Количество просмотров 6K
Программирование *C *

Разработчик Дрю ДеВолт (Drew DeVault) представил язык программирования Hare. Отмечается, что по синтаксису язык схож с C, но при этом проще. Также Hare полностью доверяет программисту и выполняет то, что указано в коде, без дополнительных манипуляций.

Читать далее
Всего голосов 5: ↑4 и ↓1 +3
Комментарии 20

Основы работы с IOKit. Тонкости программирования драйверов

Время на прочтение 8 мин
Количество просмотров 19K
Разработка под iOS *

В рамках поддержки блога разработки под Mac OS X, я представляю свою статью о низкоуровневой разработке под Mac OS X. Обычно тема разработки драйверов не столь популярна, однако и здесь Mac OS X выгодно выделяется из ряда прочих операционных систем. Да, писать драйвера для Mac O S X – просто! Проще чем когда-либо ранее!
Поехали
Всего голосов 48: ↑40 и ↓8 +32
Комментарии 23

DMA для новичков или то, что вам нужно знать

Время на прочтение 5 мин
Количество просмотров 119K
Системное программирование *
Всем привет, сегодня мы с вами поговорим о DMA: именно о той технологии, которая помогает вашему компьютеру воспроизводить для вас музыку, выводить изображение на экран, записывать информацию на жесткий диск, и при этом оказывать на центральный процессор просто мизерную нагрузку.
Если вам интересно, добро пожаловать под кат...
Всего голосов 85: ↑80 и ↓5 +75
Комментарии 29

На шаг ближе. Работа с регистрами PCI устройства в IOKit

Время на прочтение 4 мин
Количество просмотров 4.5K
Разработка под iOS *
Настало время продолжить наше путешествие в дебри системного программирования. Сегодня мы опустимся еще глубже и поговорим о реализации работы с регистрами устройства и другими базовыми IO операциями в IOKit.

Далее
Всего голосов 4: ↑2 и ↓2 0
Комментарии 0

Программирование в ring0 для Windows: вводная статья

Время на прочтение 3 мин
Количество просмотров 30K
Системное программирование *

По долгу службы мне пришлось столкнуться с программированием драйверов под Windows. Люди, которые никогда не сталкивались с этой задачей могут предположить, что драйвера — это что-то очень сложное и непосредственно взаимодействующее с железом. Отчасти они правы, а отчасти нет. В этой статье я постараюсь рассказать о том, что же из себя представляют Windows драйвера изнутри и с чем мне пришлось столкнуться. Статья является некоторым введением и не содержит «кусков кода».

Читать дальше →
Всего голосов 123: ↑113.5 и ↓9.5 +104
Комментарии 32

Процессы и потоки in-depth. Обзор различных потоковых моделей

Время на прочтение 10 мин
Количество просмотров 101K
Системное программирование *
Здравствуйте дорогие читатели. В данной статье мы рассмотрим различные потоковые модели, которые реализованы в современных ОС (preemptive, cooperative threads). Также кратко рассмотрим как потоки и средства синхронизации реализованы в Win32 API и Posix Threads. Хотя на Хабре больше популярны скриптовые языки, однако основы — должны знать все ;)
Далее
Всего голосов 64: ↑62 и ↓2 +60
Комментарии 45

Пишем свой первый Windows-драйвер

Время на прочтение 5 мин
Количество просмотров 128K
Системное программирование *
Итак, после моей предыдущей статьи я понял что тема про программирование драйверов Windows интересна хабровчанам, поэтому продолжу. В этой статье я решил разобрать простую программу-драйвер, которая делает только то, что пишет отладочное сообщение «Hello world!» при старте драйвера и «Goodbye!» при завершении, а также опишу те средства разработки, которые нам понадобятся для того, чтобы собрать и запустить драйвер.

Читать дальше
Всего голосов 99: ↑95 и ↓4 +91
Комментарии 35

Crash dump'ы и KeCapturePersistentThreadState

Время на прочтение 2 мин
Количество просмотров 1.8K
Системное программирование *
Я тут обнаружил очень занятную недокументированную функцию, экспортируемую ядром, на которую нет ссылок внутри ядра, но которая делает весьма занятную вещь. А именно, записывает в переданный кусок памяти полноценный minidump на данный момент времени.
Весьма полезно с учетом того, что там (в дампе) есть оффсеты неэкспортируемых структур типа PsLoadedModuleList, которые могут пригодиться.
Спасибо Freeman за помощь)

ULONG
NTAPI
KeCapturePersistentThreadState(
PCONTEXT Context,
PKTHREAD Thread,
ULONG BugCheckCode,
ULONG BugCheckParameter1,
ULONG BugCheckParameter2,
ULONG BugCheckParameter3,
ULONG BugCheckParameter4,
PVOID VirtualAddress
);


Входные параметры:
Context — текущий контекст (можно от балды, нужно лишь заполнить EIP & ESP)
Thread — текущий поток. можно указать NULL, тогда она сама возьмет текущий
BugCheckCode, ParametersX — багчек код и аргументы, которые она запишет в дамп.
VirtualAddress — адрес выделенных 16 страниц памяти (64кб), куда она положит аккуратно готовенький крешдамп.

Пример:

Заголовок дампа:
typedef struct _DUMP_HEADER {
/* 00 */ ULONG Signature;
/* 04 */ ULONG ValidDump;
/* 08 */ ULONG MajorVersion;
/* 0c */ ULONG MinorVersion;
/* 10 */ ULONG DirectoryTableBase;
/* 14 */ PULONG PfnDataBase;
/* 18 */ PLIST_ENTRY PsLoadedModuleList;
/* 1c */ PLIST_ENTRY PsActiveProcessHead;
/* 20 */ ULONG MachineImageType;
/* 24 */ ULONG NumberProcessors;
/* 28 */ ULONG BugCheckCode;
/* 2c */ ULONG BugCheckParameter1;
/* 30 */ ULONG BugCheckParameter2;
/* 34 */ ULONG BugCheckParameter3;
/* 38 */ ULONG BugCheckParameter4;
/* 3c */ CHAR VersionUser[32];
/* 5c */ UCHAR PaeEnabled;
UCHAR NotUsed[3];
/* 60 */ PVOID KdDebuggerDataBlock;
} DUMP_HEADER, *PDUMP_HEADER;


Использование функции: www.everfall.com/paste/id.php?mkgmkfg1a057

Кодес получает дамп, показывает адерса MmPfnDatabase, PsActiveProcessHead, PsLoadedModuleList и сбрасывает дамп на диск. Дамп можно спокойно запихать в WinDbg и изучать

Вообщем, весьма занятная штуковина…

Надо будет переписать свой gr8lkd (http://gr8lkd.googlecode.com/) с использованием этой функции.
Всего голосов 17: ↑11 и ↓6 +5
Комментарии 3

Исходники Windows Research Kernel в свободном доступе

Время на прочтение 2 мин
Количество просмотров 24K
Разработка под Windows *

Что же такое Windows Research Kernel?


Windows Research Kernel содержит исходные коды основной части ядра Windows (NTOS).
NTOS реализует базовые функции операционной системы для:
  • процессов;
  • потоков;
  • виртуальной памяти и менеджеров кэшей;
  • управления вводом/выводом;
  • реестра;
  • исполнительных функций, таких как куча (heap) ядра и синхронизация;
  • менеджера объектов;
  • механизма локального вызова процедур;
  • низкоуровневого управления CPU (планирование потоков, асинхронные и отложенные вызовы процедур, обработка прерываний/ловушек, исключения).

Читать дальше →
Всего голосов 64: ↑53 и ↓11 +42
Комментарии 111

Пишем viewer почтовой базы MS Exchange (часть 1)

Время на прочтение 19 мин
Количество просмотров 13K
Системное программирование *

В одной большой-пребольшой стране жили маленькие-премаленькие люди. И все было прекрасно пока не появилась глубокая-преглубокая яма прямо в центре этой большой, а точнее пребольшой страны. Ну, надо сказать, появилась она не одна и, конечно, не сразу, но никто об этом уже не вспомнит и никому это уже не важно.
Читать дальше →
Всего голосов 38: ↑29 и ↓9 +20
Комментарии 17

Пишем viewer почтовой базы MS Exchange (часть 2)

Время на прочтение 13 мин
Количество просмотров 2.7K
Системное программирование *

Здравствуйте, читатели Хабрахабр!

Это завершение поста начатого вот здесь.

В принципе, мы почти все уже сделали, осталось небольшое окончание. Напомню, мы взяли EDB базу, открыли ее, воспользовавшись технологией ESE, перечислили имеющиеся таблицы и начали перечислять колонки внутри этих таблиц. Нам осталось дополучить колонки, получить значения столбцов и вуаля, база прочитана.
Читать дальше →
Всего голосов 21: ↑16 и ↓5 +11
Комментарии 3

Комментарий дня: Как предсказал Oracle

Время на прочтение 2 мин
Количество просмотров 8.8K
Блог компании Hewlett Packard Enterprise

UPDATE: Итак, подводим итоги!

В результате голосования и естественного отбора, победителем объявляется zak2k! Его история, наполненная юмором и свежестью, заслуживает всяческих похвал. Следом за zak2k-ом идет Labinskiy, поражающий краткостью (истину говорит пословица!) и лаконичностью! Ну и 3,4,5 места, по голосованию присваиваются zboris, Smasher и Turansky.

Победителей просим предоставить свои адреса для доставки призов в личку автора поста Morow.

Всем спасибо за участие!



Приветствуем тебя, Хабражитель!

В блоге HP продолжается традиционный конкурс «комментарий дня». На этот раз темой конкурса станет компания Oracle, ее харизматичный лидер Ларри Эллисон, многогранные и многослойные продукты, а также серверы и процессоры Itanium, «заточенные» под них. Известно, что они частенько бывают неосторожны в высказываниях, капризны, сложны в настройке, прожорливы (догадайтесь, какой эпитет к чему относится), но в общем и целом делают лучше жизнь отдельных людей, компаний и огромных корпораций.

Как обычно, мы попросим вас рассказать о первом знакомстве, интересном опыте или любопытном случае из жизни, связанном со всем вышеперечисленным. Не стесняйтесь комментировать, даже если отношение весьма отдаленное – чем шире выбор, тем больше возможность привлечь внимание именно своей историей. Авторы наиболее популярных (или наоборот, тут уж как поведется, бывает всякое) получат от нас замечательные призы. В этот раз их много, что просто не может не радовать.





Историкам и рассказчикам предстоит побороться за HP Microserver (лучший сервер из тех, что можно представить дома), специальный брэндированный рюкзак HP (специально разработан для ношения ноутбуков,) и модные молескины с символикой HP-UX (можно записывать истории для будущих конкурсов).
Читать дальше →
Всего голосов 37: ↑23 и ↓14 +9
Комментарии 78

Новые серверы HP DL980

Время на прочтение 3 мин
Количество просмотров 16K
Блог компании Hewlett Packard Enterprise
Возможно, вы удивитесь, но на фоне победных реляций обо все новых рубежах и планках, взятых блейд-системами, старые добрые серверы, монтируемые в стойку, никуда не делись, и по-прежнему способны на очень многое. Более того, эти продукты активно развиваются всеми крупными вендорами, с HP во главе, конечно. В конце концов, отнюдь не каждая организация или провайдер услуг может или желает приобретать или эффективно использовать блейд-серверы, а вот свой парк «обычных» серверов рано или поздно обновят на новое поколение систем. И, возможно, одним из этих серверов окажется недавно появившийся на свет восьмиюнитовый DL980 G7.


Читать дальше →
Всего голосов 12: ↑12 и ↓0 +12
Комментарии 23

Сетевое оборудование HP в инфраструктуре Cisco

Время на прочтение 2 мин
Количество просмотров 7.9K
Блог компании Hewlett Packard Enterprise

Для ИТ-департаментов многих компаний оборудование Cisco давно стало корпоративным стандартом их сетевой инфраструктуры и они при выборе новых продуктов ориентируется исключительно на возможности, которые может предложить им этот вендор. Главное, что останавливает их от приобретения сетевого оборудования других вендоров – это риск несовместимости и необходимость освоения системными администраторами новых инструментов управления сетью.

Тем не менее, как показывает проведенное независимой тестовой лабораторий Networktest исследование, оборудование HP может совместно использоваться с оборудованием Cisco. По результатам тестирования, в котором использовались коммутаторы HP 9505, 5406zl и 5800 и Cisco Catalyst 6509, Catalyst 4506 иd Catalyst 3750-E, Networktest подготовила 60-страничное руководство, в котором приведены конфигурации для совместного использования коммутаторов HP Networking и Cisco Catalyst.
Читать дальше →
Всего голосов 8: ↑5 и ↓3 +2
Комментарии 28

Пишем модуль безопасности Linux

Время на прочтение 5 мин
Количество просмотров 15K
Блог компании Positive Technologies Информационная безопасность *
Linux Security Modules (LSM) — фреймворк, добавляющий в Linux поддержку различных моделей безопасности. LSM является частью ядра начиная с Linux версии 2.6. На данный момент в официальном ядре «обитают» модули безопасности SELinux, AppArmor, Tomoyo и Smack.

Работают модули параллельно с «родной» моделью безопасности Linux — избирательным управлением доступом (Discretionary Access Control, DAC). Проверки LSM вызываются на действия, разрешенные DAC.

Применять механизм LSM можно по-разному. В большинстве случаев это добавление мандатного управления доступом (как, например, в случае с SELinux). Кроме того, можно придумать собственную модель безопасности, реализовать ее в виде модуля и легко внедрить, используя фреймворк. Рассмотрим для примера реализацию модуля, который будет давать права на действия в системе при наличии особого USB-устройства.

Поглядим на схему и попытаемся разобраться, как работает хук LSM (на примере системного вызова open).


Читать дальше →
Всего голосов 42: ↑42 и ↓0 +42
Комментарии 1

Простейший WDM-драйвер

Время на прочтение 11 мин
Количество просмотров 69K
Системное программирование *
В данной статье описан процесс написания простейшего драйвера, который выводит скан-коды нажатых клавиш.
Также в данной статье описан процесс настройки рабочего места для написания драйверов.
Если Вам интересно, прошу под кат.
Читать дальше →
Всего голосов 59: ↑57 и ↓2 +55
Комментарии 25

Простые вещи. Файл настроек и небольшой прицеп утилит

Время на прочтение 15 мин
Количество просмотров 757
Разработка веб-сайтов *Программирование *C *
Этот пост, для тех, кто пишет на C[/C++]. Остальные могут не читать.

Как всегда, работая над проектами хочу поделится очередной технологией. Наверное, громко сказано. Скорее, простым решением в области создания и работы с файлом настройки программ.

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

Я, просто, делюсь быстрым решением, как читать параметры и значения, разделённые знаками «равно» из файла настроек формата, похожего на, скажем, php.ini

Перейдём, непосредственно, к решению.
Всего голосов 23: ↑12 и ↓11 +1
Комментарии 20

Инъекция кода в .NET CLR: изменение IL-кода во время выполнения программы

Время на прочтение 13 мин
Количество просмотров 39K
.NET *Системное программирование *C# *
Перевод

Предисловие



Изменение .NET метода MSIL кода во время выполнения приложения – это очень круто. Это настолько круто, что можно перехватывать вызовы функций (hooking), сделать защиту своего ПО и другие удивительные вещи. Именно поэтому мне уже давно хотелось это осуществить, но была одна проблема – MSIL код компилируется в машинный код с помощью JIT перед тем, как мы сможем что-либо с этим кодом сделать. А так как .NET CLR не документирована и изменяется от версии к версии, то мы и будем искать стабильный и надёжный путь, независимый от точного расположения адресов в памяти.
Читать дальше →
Всего голосов 92: ↑90 и ↓2 +88
Комментарии 7