Кодинг

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

Машинное зрение на Python. Учим нейросеть отличать медведей от слонов

Ты наверняка слышал, что нейросети в последнее время стали чертовски хорошо справляться с распознаванием объектов на картинках. Наша же задача…

Машинный слух. Как работает идентификация человека по его голосу

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

Машинное зрение на Python. Обучаем нейросеть распознавать цифры

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

Twitch Extensions. Пишем свое расширение для взаимодействия со зрителями

Два года назад разработчики стриминговой платформы Twitch представили новый способ взаимодействия стримеров и зрителей — Twitch Extensions. Эта система позволяет…

Потрошим Carbanak. Как изнутри устроен известный банковский троян

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

Hey Julia! Новый язык, который выглядит, как Python, а летает, как C

Julia — молодой язык программирования, предназначенный преимущественно для научных вычислений. Его создатели хотели, чтобы он занял нишу, которую прежде занимали…

Загадочный Forth. Знакомимся с одним из важнейших языков программирования, о котором мало кто знает

Forth применяют в самых разных областях, включая чипсеты PCI и космические аппараты, а Павел Дуров будет использовать схожий язык в…

Криптуем по-крупному. Разбираемся с режимом гаммирования из ГОСТ 34.13—2015

Режим гаммирования, в отличие от режима простой замены, позволяет шифровать сообщения произвольной длины без применения операции дополнения (паддинга). Сегодня мы…

Фаззинг глазами программиста. Как в Google автоматизируют поиск багов

Когда количество строчек кода в твоих программах исчисляется миллионами, поиск ошибок осложняется тысячекратно. К счастью, сегодня есть возможность автоматизировать тестирование…

Внутри x86-64 SystemV ABI. Как говорить с ядром Linux на его языке

Абстракция — основа программирования. Многие вещи мы используем, не задумываясь об их внутреннем устройстве, и они отлично работают. Всем известно,…

Это читерство! Изучаем принципы борьбы с читами и пишем простую защиту

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

Погружение в Dokan. Как сделать свою файловую систему для Windows без FUSE

В Linux, как известно, многие вещи реализованы как файлы в файловой системе. А если и не реализованы, то их можно…

Секретные запросы. Как спрятать данные веб-приложения от троянов

Самая привлекательная цель для злоумышленника — онлайновый банкинг, и решающую роль в успехе вирусных атак на него играют ботнеты. Но…

Это читерство! Учимся взламывать игры и писать читы на простом примере

Компьютерные игры хороши тем, что вознаграждение за успех приносит реальное удовольствие, а цена провала невелика. Но иногда, чтобы открыть новые…

Кейлоггер по-домашнему. Пишем на C# кейлоггер, который не палится антивирусами

Боевые кейлоггеры с кучей функций и защитой от детекта могут стоить десятки, если не сотни долларов. Но кейлоггер не такая…

Магия C++. Как выжить без динамической идентификации типов и не сойти с ума

В C++ существует такое понятие, как динамическая идентификация типа данных (RTTI). Это механизм, который позволяет определить тип переменной или объекта…

Сила OCaml. Разбираемся с типизацией и пишем скрипты

Статически типизированные языки обычно вынуждают писать типы переменных по любому поводу. Но уже далеко не всегда: теория и практика языков…

Виртуалка своими руками. Как обфусцировать код при помощи виртуализации и что делать с такой защитой

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

На что способна ада. Делаем утилиту для детекта гипервизора на полузабытом языке

Лучше всего познавать язык на реальном проекте, поэтому, когда я решил поэкспериментировать с адой, я поставил себе реальную и интересную…

Протокол своими руками. Создаем с нуля TCP-протокол и пишем сервер на C#

Ты в жизни не раз сталкивался с разными протоколами — одни использовал, другие, возможно, реверсил. Одни были легко читаемы, в…

Python по всем правилам. Делаем свою структуру данных совместимой с фичами Python

Если ты пишешь на Python, то наверняка видел в стандартных библиотеках определения методов, обернутых в двойные подчеркивания. Эти «магические» методы…

Убить Билла. Изучаем способы принудительного завершения процессов в Windows

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

Мифы об аде. Как и зачем программировать на аде в современном мире

Язык, разработанный по заказу Министерства обороны США и названный в честь первой в мире программистки Ады Лавлейс, активно используется для…

Пишем эмулятор игровой консоли. Как устроена легендарная приставка Nintendo и как ее воссоздать самому

Ты наверняка сталкивался с эмуляторами игровых приставок и, возможно, даже просиживал за ними не один час. Но задавался ли ты…

Пишем стилер. Как вытащить пароли Chrome и Firefox своими руками

Ты наверняка слышал о таком классе зловредных приложений, как стилеры. Их задача — вытащить из системы жертвы ценные данные, в…

Задачи на собеседованиях. Задачи от компании Abbyy

Вопросы на собеседовании в стиле «почему крышка от канализационного люка круглая?» — это странно. Простыни с сишным кодом, который нужно…

Тайный WinAPI. Как обфусцировать вызовы WinAPI в своем приложении

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

Кодим в консоли. Как отказаться от IDE и стать более продуктивным и уверенным в себе

Зачем в XXI веке разработчику нужны навыки программирования в «голой» консоли? Да затем же, зачем солдату навыки рукопашного и штыкового…

Стоп-спам для «Телеграма». Как написать и задеплоить бота на TypeScript за полчаса

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

Идеальная форма. Обрабатываем сложные формы на Python с помощью WTForms

Обработка HTML-форм в веб-приложениях — несложная задача. Проблемы начинаются, когда форма разрастается: нужно следить за полями, их ID, атрибутами name,…

Олимпиады по программированию. Куда податься, если ты молод, умен и хочешь выиграть несколько тысяч долларов

Олимпиады бывают школьными и скучными, а бывают всемирными и уважаемыми. Участие в них интересно, познавательно, помогает завести полезные знакомства в…

[Без]опасный JavaScript. Изучаем проблемы кода на JS и выбираем средства борьбы с ними

Разработка безопасных приложений на JavaScript — весьма непростое занятие. Но выполнимое. В этой статье рассмотрим особенности JavaScript, из-за которых возникает…

Советы Android-разработчику. Что я узнал за год поддержки приложения в Google Play

Вот уже год я занимаюсь поддержкой приложения в Google Play. За это время приложение установили сотни тысяч раз, а пользовательская…

Пишем майнер на Java. Кодим добытчик криптовалюты Electroneum

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

Задачи на собеседованиях. Задания для хардкорщиков от компании Acronis

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

Давай напишем ядро! Создаем простейшее рабочее ядро операционной системы

Разработка ядра по праву считается задачей не из легких, но написать простейшее ядро может каждый. Чтобы прикоснуться к магии кернел-хакинга,…

Дао хеша. Познаем дзен методически правильного хеширования паролей

Наверняка тебе известно, что хорошая система контроля доступа, основанная на вводе и проверке правильности пароля, никогда и нигде не сохраняет…

Многофакторная аутентификация по-взрослому. Куем серьезный софт с помощью бесплатного инструментария

В этой статье мы рассмотрим, как добавить в мобильное приложение возможность еще одного подтверждения аутентификации в дополнение к имени пользователя…

Русский народный блокчейн. Пишем простой локальный блокчейн с использованием «Стрибога»

Блокчейн и все, что с ним связано, нынче у всех на слуху, и на сегодняшний день вряд ли можно найти…

Криптуем по-крупному. Разбираемся с режимами работы российских блочных шифров

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