Pull to refresh

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

Reading time 3 min
Views 3.2K
Open source *Programming *System Programming *Compilers *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.

Читать дальше →
Total votes 24: ↑24 and ↓0 +24
Comments 4

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

Reading time 2 min
Views 1.2K
Self Promo

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

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

Читать далее
Total votes 6: ↑6 and ↓0 +6
Comments 11

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

Reading time 2 min
Views 5.8K
Programming *C *

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

Читать далее
Total votes 5: ↑4 and ↓1 +3
Comments 20

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

Reading time 8 min
Views 18K
Development for iOS *

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

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

Reading time 5 min
Views 116K
System Programming *
Всем привет, сегодня мы с вами поговорим о DMA: именно о той технологии, которая помогает вашему компьютеру воспроизводить для вас музыку, выводить изображение на экран, записывать информацию на жесткий диск, и при этом оказывать на центральный процессор просто мизерную нагрузку.
Если вам интересно, добро пожаловать под кат...
Total votes 85: ↑80 and ↓5 +75
Comments 29

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

Reading time 4 min
Views 3.9K
Development for iOS *
Настало время продолжить наше путешествие в дебри системного программирования. Сегодня мы опустимся еще глубже и поговорим о реализации работы с регистрами устройства и другими базовыми IO операциями в IOKit.

Далее
Total votes 4: ↑2 and ↓2 0
Comments 0

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

Reading time 3 min
Views 30K
System Programming *

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

Читать дальше →
Total votes 123: ↑113.5 and ↓9.5 +104
Comments 32

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

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

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

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

Читать дальше
Total votes 99: ↑95 and ↓4 +91
Comments 35

Crash dump'ы и KeCapturePersistentThreadState

Reading time 2 min
Views 1.8K
System Programming *
Я тут обнаружил очень занятную недокументированную функцию, экспортируемую ядром, на которую нет ссылок внутри ядра, но которая делает весьма занятную вещь. А именно, записывает в переданный кусок памяти полноценный 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/) с использованием этой функции.
Total votes 17: ↑11 and ↓6 +5
Comments 3

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

Reading time 2 min
Views 24K
Development for Windows *

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


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

Читать дальше →
Total votes 64: ↑53 and ↓11 +42
Comments 111

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

Reading time 19 min
Views 13K
System Programming *

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

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

Reading time 13 min
Views 2.7K
System Programming *

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

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

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

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

Reading time 2 min
Views 8.8K
Hewlett Packard Enterprise corporate blog

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

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

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

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



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

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

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





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

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

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


Читать дальше →
Total votes 12: ↑12 and ↓0 +12
Comments 23

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

Reading time 2 min
Views 7.9K
Hewlett Packard Enterprise corporate blog

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

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

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

Reading time 5 min
Views 15K
Positive Technologies corporate blog Information Security *
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).


Читать дальше →
Total votes 42: ↑42 and ↓0 +42
Comments 1

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

Reading time 11 min
Views 68K
System Programming *
В данной статье описан процесс написания простейшего драйвера, который выводит скан-коды нажатых клавиш.
Также в данной статье описан процесс настройки рабочего места для написания драйверов.
Если Вам интересно, прошу под кат.
Читать дальше →
Total votes 59: ↑57 and ↓2 +55
Comments 25

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

Reading time 15 min
Views 730
Website development *Programming *C *
Этот пост, для тех, кто пишет на C[/C++]. Остальные могут не читать.

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

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

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

Перейдём, непосредственно, к решению.
Total votes 23: ↑12 and ↓11 +1
Comments 20

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

Reading time 13 min
Views 38K
.NET *System Programming *C# *
Translation

Предисловие



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