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

Разработка под Windows *

Разработка под операционные системы от Microsoft

Сначала показывать
Порог рейтинга
Уровень сложности

Lua FFI

Уровень сложностиСредний
Время на прочтение20 мин
Количество просмотров3.6K
Под катом описание довольно примитивного FFI для Lua под x64 windows, а теперь ещё и linux (и не только, SysV ABI).

Но который, тем не менее, позволяет делать:

local ffi = require ("ffi")
local msg = ffi("user32.dll", "MessageBoxA")
msg(0, "Message", "Title", 0)

или взять, например glfw3.dll, и путём

local glfw = ffi("glfw3")

сделать все экcпортируемые библиотекой glfw3.dll функции доступными для вызова из Lua.

Размер самой ffi.dll при этом получился аж 9 Кбайт, вот она целиком на картинке размером 32х96 пикселей. Можно сохранить это изображение, сконвертировать в bmp (хабр не умеет в bmp, пришлось дополнительно упаковать в png), потом руками удалить первые 54 байта заголовка (до 'MZ') и пользоваться.


Но очень осторожно, так как в результате всё-таки получилось, что в аккуратную детскую песочницу Lua залезли грязными сапогами, притащили туда всякие небезопасные штуки из С, вроде ручного управления памятью и обращения с указателями вида *(double*) (void * ptr), и вообще использование таких вещей учит всякому нехорошему.

Тут недавно выходил ряд статей про «вредные советы» в программировании «60 антипаттернов для С++ программиста». Под катом можно найти практическое воплощение большинства из них, не всех конечно, но только потому, что не все из них применимы к С, без плюсов :)
Читать дальше →
Всего голосов 14: ↑14 и ↓0+14
Комментарии8

KivyMD на «кухне»

Уровень сложностиПростой
Время на прочтение6 мин
Количество просмотров1.9K

Доброго времени суток, всем!

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

Для тех, кто не в курсе, поясню, что KivyMD - это "фреймворк на языке Python для кроссплатформенной разработки Kivy и библиотеки виджетов в стиле Google Material Design". Или же простыми словами, вы можете собрать вполне приличное, хорошо выглядящее приложение, как для Windows, так и для Андроид, Linux and еtс.

На Хабре есть много статей посвященных отдельным частям Kivy и KivyMD. Но, полазив в том числе по Интернет, я не нашел хорошего демонстрационного примера. Все проекты либо заточены по старую версию KivyMD и сходу не работают, либо достаточно куцые. Поэтому решил "наполнить раковину" сам. ;)

Проект лежит здесь: https://github.com/longvalery/KitchenSink.KivyMD.git

Он собран под текущую на данный момент версию KivyMD - kivy.require("2.2.1")

На этом можно было бы и закончить. Потому что дальше можно просто скачивать, запускать и, если понравится, использовать куски кода.

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

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

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

«Бизнес-юнит — как семья». Незрячий сотрудник VK водит экскурсии по офису и развивает цифровую доступность

Уровень сложностиПростой
Время на прочтение8 мин
Количество просмотров3.9K

Привет! Я Артем Плаксин, незрячий специалист по цифровой доступности в VK. Я делаю наши сервисы удобными для людей с ограниченными возможностями здоровья и работаю над социальными проектами. Ещё я веду блог — как пользователь той самой доступной среды, айтишник и просто живой человек.

То, как устроена моя работа, — отличный пример, как внимание к потребностям людей помогает менять мир к лучшему.

Читать далее
Всего голосов 61: ↑58 и ↓3+55
Комментарии8

Проверка целостности исполняемых файлов

Время на прочтение9 мин
Количество просмотров5.2K

Иногда возникает необходимость удостовериться в том, что исполняемый файл приложения не был изменен (поврежден при передаче или пропатчен третьим лицом).

В деле контроля целостности нам помогут хэш-функции.

Читать далее
Всего голосов 8: ↑7 и ↓1+6
Комментарии22

Fancy Widgets — виджеты рабочего стола на AvaloniaUI

Уровень сложностиПростой
Время на прочтение5 мин
Количество просмотров3.9K

Привет, Хабр!

Около трёх месяцев назад, я и мой друг - начинающие .NET разработчики, решили разработать свои виджеты на рабочий стол Windows, так как официальных нормальных виджетов нет (те что в Windows 11 не считаются). Недавно мы выпустили наш проект в релиз, пока что есть 2 виджета (Погода и Заметки), но вскоре их может быть больше! Проект называется Fancy Widgets и мы хотим поделиться им с вами. Вы можете попробовать наши виджеты, скачав их с нашего сайта https://fancy-widgets.onrender.com. Это наш pet-проект и поэтому он ни на что не претендует, мы просто делали его для себя и для удовольствия. Но мы будем рады услышать ваше мнение и предложения по улучшению нашего продукта. Вы можете оставить свои комментарии под этой статьей или написать нам на нашу почту fancy.widgets.help@gmail.com. Цель этой статьи - вкратце рассказать о нашем проекте и о сложностях, которые возникли у нас при разработке. Мы надеемся, что вы найдете нашу статью интересной и полезной. Приятного чтения! 😊

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

«Пиратим» Google Chrome для Microsoft Windows 7

Уровень сложностиСредний
Время на прочтение6 мин
Количество просмотров47K

Привет, Хабр!
Возможно, здесь стоило написать какое-то длинное лирическое вступление или порассуждать о морально-этической части «пиратства» продукции крупнейших корпораций, ну или хотя бы просто сказать что это моя первая статья в Вашем сообществе. Но, к сожалению, даже не задумывался над всем этим и поэтому переедем сразу к делу и по существу.

На абордаж!

Читать далее
Всего голосов 131: ↑119 и ↓12+107
Комментарии123

Сказ о том, как я гугловского динозаврика в стиле игр Nokia 3310 делал (C#, Windows Forms)

Время на прочтение2 мин
Количество просмотров1.9K

В данной статье я поведаю вам о том, как я делал известную и встроенную в браузере Google Chrome игру “Dino Runner” в стиле игр Nokia 3310 с использованием Windows Forms API на языке C#. Я расскажу, с какими трудностями столкнулся, как решал те или иные проблемы и так далее…

Читать далее
Всего голосов 2: ↑1 и ↓10
Комментарии13

Идеальная OS — что взять в ReactOS из Windows (и что не брать)

Уровень сложностиПростой
Время на прочтение11 мин
Количество просмотров4K

16 лет назад / 04 июля 2007 10:43

Какой хотелось бы видеть «идеальную» ОС? Чего такого хотелось бы иметь в «идеальной» операционной системе, чего нет или сильно ограничено в нынешних ОС?Например:

1.Хотелось бы чтобы ОС быстро реагировала на клавиатурные действия пользователя.

2. Хотелось бы чтобы перерисовка окон происходила независимо от прочих действий программы (то есть без подвисаний).

3. Хотелось бы чтобы переключение с программ вроде DirectX'овских происходило бысто и с первого раза; и чтобы переключение программ (например по Alt+Tab) вообще не зависело от желания текущей программы, что иногда наблюдается.

4. ...

Какой хотелось бы видеть «идеальную» ОС?

Другими словами, чтобы ничего не глючило и не тормозило!

Данная статья является дискуссионным вбросом, набором надерганных из интернета фактов и моих собственных соображений и нуждается в дополнении, улучшении и упоря́дочивании, с тем, чтобы сформулировать требования к к операционной системе ReactOS, которая вот‑вот выйдет в стадию беты.

Статья может вызвать неоднозначные впечатления, поэтому просьба сразу писать, в чем автор ошибся, и как надо сделать правильно!

Читать далее
Всего голосов 8: ↑5 и ↓3+2
Комментарии19

Сказ о том, как мы игру в команде делали

Время на прочтение2 мин
Количество просмотров2.8K

Сказ о том, как мы игру в команде делали

Меня зовут Юрий, недавно мне исполнилось 17 лет, и я программист. В основном делаю Windows Forms приложения (C#). С марта 2022 года я активно начал заниматься программированием, сначала на PascalABC.NET, а затем перешёл на C# в августе того же года...

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

Четыре способа написать Hello world, или инструменты для создания GUI на Python

Уровень сложностиПростой
Время на прочтение5 мин
Количество просмотров30K

После написания программы ее можно модифицировать и добавить графический интерфейс — с Python это проще, чем кажется. Для программирования красивого и функционального GUI иногда достаточно простого знания html и css.

Под катом — подборка некоторых инструментов для создания интерфейсов на Python. Сохраняйте статью в закладки и предлагайте свои варианты в комментариях!
Читать дальше →
Всего голосов 56: ↑53 и ↓3+50
Комментарии61

Тайная жизнь COM: погружение в методы Hijacking

Уровень сложностиСредний
Время на прочтение10 мин
Количество просмотров3K

Привет, хабр!


Сегодня я продолжу рассказывать о Component Object Model (COM). В прошлой статье мы разобрали различные аспекты хранения COM-объектов в реестре, а также изучили стратегии, которыми может пользоваться злоумышленник для выбора объекта с целью последующей атаки COM Hijacking.

COM Hijacking - это атака, позволяющая атакующему перехватить выполнение легитимного COM-объекта и заменить его на свой вредоносный, например на шелл, который будет устанавливать связь с C2 сервером. Атакующий выбирает, как правило, часто выполняющийся COM-объект, таким образом, осуществляется закрепление в системе.

Сегодня мы рассмотрим основной этап атаки - это способы перехвата и подмены COM-объекта на вредоносный.

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

Аудит событий безопасности ОС Windows. Часть 1. Настройки аудита

Уровень сложностиСредний
Время на прочтение5 мин
Количество просмотров10K

Журналирование событий информационной безопасности является важным элементом системы защиты информации. Нам необходимо знать какое событие когда произошло, когда какой пользователь пытался зайти в систему, с какого узла, удачно или нет, и так далее. Конечно, некоторые события ИБ сохраняются в журналах ОС при использовании настроек по умолчанию, например, не/удачные входы в систему, изменения прав доступа и т. д. Однако, настроек по умолчанию и локального хранения логов недостаточно для эффективного мониторинга и реагирования на события ИБ.

В этой статье мы посмотрим, как можно организовать эффективный аудит узлов под управлением ОС Windows, а в следующей статье настроим централизованный сбор событий с нескольких узлов и попробуем с помощью Powershell автоматизировать обработку собранных событий.

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

Аудит пользователей AD с помощью Powershell

Время на прочтение4 мин
Количество просмотров8.2K

Домен Active Directory может содержать в себе сотни и даже тысячи учетных записей и для управления всеми этими аккаунтами администратору требуется значительное количество времени. Даже, если у нас уже все аккаунты разнесены по группам, ко всем группам применены политики и настроены права доступа, все равно могут возникнуть ситуации, когда по тем или иным причинам нам необходимо найти полную информацию о пользователе.

Для решения этих задач нам может помочь PowerShell, инструмент, который помимо прочего, позволяет легко проводить аудит учетных записей пользователей Active Directory.  Для этих целей мы будем использовать один из самых популярных командлетов Active Directory PowerShell - Get-ADUser. С помощью этого командлета мы можем получить как указанный пользовательский объект, так и выполнить настраиваемый поиск для получения нескольких пользовательских объектов.

Читать далее
Всего голосов 19: ↑13 и ↓6+7
Комментарии3

Ближайшие события

Тайная жизнь COM: как устроен Component Object Model в Windows и стратегии выбора объекта для атаки

Уровень сложностиСредний
Время на прочтение12 мин
Количество просмотров7.2K

Анализируя отчеты по разбору вредоносного ПО приходишь к выводу, что одним из популярных методов для закрепления в системе является COM Hijacking (T1546.015). Примером такого вредоносного ПО является Fancy Bear или Jumplump. Таким образом, становится очень важно команде Blue Team уметь детектировать данный вид атаки. Поэтому было принято решение выпустить серию статей, посвященных технологии Component Object Model, разбору атаки COM Hijacking и ее детектированию.

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

Как Visual Basic.NET отлично помогает решать инженерные задачи, связанные с Word и Excel

Уровень сложностиПростой
Время на прочтение5 мин
Количество просмотров4.9K

Как язык Visual Basic .NET отлично помогает решать рутинные инженерные задачи, связанные с Word и Excel.

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

ProxiFyre: Open Source SOCKS5 Проксификатор для Windows

Уровень сложностиСредний
Время на прочтение3 мин
Количество просмотров9.3K

Один из проверенных временем и надёжных методов, не требующий сложной специализированной инфраструктуры, — это туннелирование TCP-соединений с использованием SSH. Этот протокол является критически важным для стабильности работы интернета, и вероятность его массовой блокировки выглядит крайне малой. Вероятно, наибольшими трудностями, с которыми мы можем столкнуться, являются ограничения на скорость соединения. Уникальной особенностью SSH является встроенный SOCKS5 прокси-сервер, который предоставляет функционал аналогичный VPN с возможностью реализации split tunneling на уровне отдельных приложений.

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

Что в имени тебе моём? Часть 2

Уровень сложностиПростой
Время на прочтение7 мин
Количество просмотров906

Как известно, интерпретируемые и компилируемые языки имеют преимущества и недостатки относительно друг друга. Одним из таких преимуществ/недостатков является сохранение связи имени переменной из исходного текста с соответствующим объектом программы во время выполнения.

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

В случае же компилируемых языков, имена переменных из исходного текста уже были использованы на этапе компиляции и обычно на этапе выполнения недоступны и кажутся ненужными.

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

Читать далее
Всего голосов 2: ↑1 и ↓10
Комментарии1

Спустя 28 лет: Windows 11 добавляет поддержку WinRAR. Почему именно сейчас и что будет дальше?

Время на прочтение3 мин
Количество просмотров27K
2bb9062555f5b2bf7e5a5f8d92dfb841ec6919e8-kopiya-1684908523-3

На днях корпорация Microsoft заявила о том, что в скором времени в Windows 11 будет добавлена нативная поддержка архивов RAR, 7-Zip и ряда других популярных форматов. По словам представителей компании, это нововведение позволит пользователям ОС не использовать «сторонние утилиты», включая тот же WinRAR. Но, как всегда, есть нюансы — работа с некоторыми форматами не будет полноценной. Да и внедрение новой функции будет реализовано не так быстро, как хотелось бы. Подробности — под катом.
Читать дальше →
Всего голосов 67: ↑55 и ↓12+43
Комментарии97

Поиск аномалий при запусках процессов Windows с помощью рекомендательных систем

Уровень сложностиПростой
Время на прочтение7 мин
Количество просмотров3.5K

В SIEM-системах есть множество написанных экспертами правил, которые помогут отследить подозрительное поведение. Однако существует много сценариев атак, которые нельзя описать строгими правилами, а значит, эффективно отслеживать.

Учитывая объем данных, обрабатываемый SIEM-системой ежедневно, а также специфические задачи анализа этих данных (целью которого является поиск действий злоумышленников), применять машинное обучение сегодня необходимо и чрезвычайно эффективно.

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

Далее
Всего голосов 7: ↑7 и ↓0+7
Комментарии3

Приручение WinAPI

Уровень сложностиПростой
Время на прочтение8 мин
Количество просмотров3.3K

Позапрошлую заметку я начинал словами «вот уже 10 лет прошло…», а эту можно было бы начать «вот уже 20 лет прошло…». Хотя там речь шла лишь о выравнивании стека, а здесь – о целой организации взаимодействия программы с WinAPI. Помнится, здесь недавно в комментариях кто-то наивно удивлялся: зачем вы приводите устаревший и никому не интересный способ программирования через WinAPI? А как же иначе программа вообще может взаимодействовать со средой Windows, как не через вызовы ее стандартных функций? Через имеющиеся надстройки над WinAPI не все можно сделать.

Конечно, было бы прекрасно все время оставаться в рамках парадигмы используемого языка программирования и чтобы «на фотографии не торчали уши фотографа», т.е. чтобы в исходных текстах никак не проявлялись бы особенности взаимодействия со средой. Например, в большинстве языков есть понятие файла. Чтобы открыть файл не обязательно явно описывать стандартную функцию из WinAPI CreateFile или OpenFile, поскольку компилятор переведет встроенный в язык оператор открытия или прямо к обращению к этой функции или к вызову системной библиотеки, которая где-то внутри себя и вызовет требуемую функцию. В любом случае программист не обязан знать, как именно это реализовано в Windows.

В системной библиотеке языка PL/1-KT, который я использую, имеется обращение лишь к 28 функциям WinAPI и это вполне покрывает «обычные» возможности языка и можно было бы не заботиться о явных вызовах. Но увы, часто этого мало. И хотя нормальные люди ходят в двери, а не в окна (ах, какая свежая, искрометная шутка!), приходится в программах явно обращаться к функциям типа CreateWindow или CloseWindow. А это уже ну никак не входит в понятия языка.

Читать далее
Всего голосов 12: ↑11 и ↓1+10
Комментарии2

Вклад авторов

Работа