Рубрика

Кодинг

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

420 материалов · RSS

Go ломать хеши! Пишем свой хешкрекер на Golang и изучаем тонкости языка

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

Go перебирать каталоги! Пишем собственный фаззер и разбираемся с многопоточностью в Go

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

Go фаззить! Пишем свой сканер поддоменов, чтобы изучить параллелизм в Golang

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

Go парсить! Пишем парсер ARP-кеша, чтобы освоить Golang

Работа с текстовыми файлами — одна из самых распространенных задач в программировании. В этой статье мы разберемся с парсингом текста на Go, а для примера возьмем кеш ARP. Будем использовать эти данные, чтобы установить соответствие между адресами MAC…

Свой-чужой. Как работает биометрия и Secure Enclave в современных телефонах

В этой статье разберем, как современные смартфоны превратились в аппаратно защищенные сейфы для данных. Разберем техническую архитектуру Secure Enclave и TrustZone, поймем, почему сканер отпечатка не передает «изображение пальца» в приложение, увидим реальные примеры кода для iOS…

Go кодить! Начинаем учить Golang без скучных книжек

Go — один из тех языков, что не оставляют никого равнодушным: его или любят, или хейтят. Он необычен — синтаксис чем‑то напоминает C, Kotlin и Pascal одновременно. Он краток — мало ключевых слов, нет ООП, нет исключений и даже…

Посторонним В.. Защищаем приложение для iOS от реверса и модификаций

Если ты когда‑нибудь публиковал приложение в App Store и спустя пару недель находил его взломанную версию на каком‑то сомнительном ресурсе, эта статья для тебя. Здесь я разберу реальные техники защиты iOS-приложений от реверс‑инжиниринга, взлома и модификаций.

Burp и Acunetix. Реализуем передачу таргетов на Jython

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

Болевой шок. Пишем свой сетевой бациллер на Python

Стабильная сеть может погрузиться в хаос за секунды: всего несколько специально сформированных пакетов способны нарушить работу ключевых протоколов. В этой статье я покажу реализацию атак OSPF Hello Flooding, EIGRP Update Flooding, VRRP Takeover…

Ultra App Kit. Пишем программы на новом кросс-платформенном фреймворке

В этой статье посмотрим и испытаем на реальных задачах библиотеку Ultra App Kit. Это современный кросс‑платформенный фреймворк для C++, который позволяет писать оконные приложения и широко применяет последние стандарты C++14 и С++17. С ним удобно использовать интеллектуальные указатели…

КодингДля начинающих#320

Бинарь своими руками. Делаем PE-файл с оконным приложением Windows

Сегодня мы окунемся вглубь исполняемых файлов и изучим на практике, как устроены программы в Windows. Я постараюсь подробно расписать структуру PE-файлов, а затем напишем с нуля простенькую программу прямо в Hex-редакторе.

Чекеры Burp. Делаем шаблоны BChecks для быстрой разведки

BChecks — это чекеры, которыми ты можешь дополнить существующие сканеры уязвимостей Burp. Чекер — это шаблон наподобие популярных шаблонов Nuclei. В статье я покажу, как делать простые и быстрые чекеры, а заодно разберемся со скриптовым языком Burp.

Больше чем тамперы. Прокачиваем sqlmap при помощи нетипичных скриптов

Тамперы в sqlmap обычно используют, чтобы обмануть фильтры. Но зачем останавливаться на этом? В этой статье я покажу, как можно достичь гораздо большего: поднимать сессию после обрыва, атаковать second-order SQLi и даже стучаться тебе в Telegram при находке…

C++26. Как баян и кошачьи ушки помогут кодить на C++

C++26 почти утвержден — новые фичи больше не добавляются, так что пора изучить, что в итоге получилось. Мы разберем ключевые возможности стандарта и протестируем их в деле. Заодно узнаем, какие компиляторы и инструменты уже поддерживают новинку. Даже…

Автозапутыватель. Обфусцируем код при помощи LLVM

Прочитав эту статью, ты узнаешь, как работает обфусцирующий компилятор, углубишься в архитектуру LLVM и сможешь писать собственные проходы для обфускации кода. Мы сделаем обфускатор строчек, соберем LLVM из исходников и узнаем, как интегрировать obfuscator-llvm в современный Visual Studio,…

Слушай сердце. Пишем тулзу для перехвата учеток

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

Бот для Minecraft. Изучаем машинное зрение на примере игрового бота

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

Пышки и Telegram. Пишем клиент Telegram на PHP

Библиотека MadelineProto позволяет с легкостью написать собственный Telegram-клиент, который можно использовать по‑разному — от отправки сообщения всему контакт‑листу до взлома Telegram-аккаунтов. При этом библиотека не использует Bot API, что значительно упрощает разработку. В этой статье мы разберем…

Закрученный Python. Используем instld, чтобы ставить пакеты на лету

Как думаешь, можно ли прямо в рантайме установить пакет Python и воспользоваться им? Меня этот вопрос заинтересовал, так как он потенциально связан с обходом детекта вредоносного кода. Как оказалось, можно! На основе своих экспериментов я создал…

Замок «под ключ». Пишем свою программу для шифрования файлов

Сегодня мы с тобой разработаем собственную программу для шифрования файлов. Писать будем на C++ и используем криптоалгоритмы из библиотеки Botan. Давай посмотрим, какие подводные камни есть при разработке подобных программ и как ненароком не помочь атакующему.

Разгадайка. Пишем собственный деобфускатор для JavaScript

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

КодингХардкор#304

Асинхронная рансомварь. Разбираем механизм самых быстрых криптолокеров

Что самое главное в любом вирусе‑шифровальщике? Конечно же, его скорость! Наиболее эффективных показателей возможно достичь с помощью механизма IOCP, и его используют все популярные локеры: LockBit, Conti, Babuk. Давай посмотрим, как работает этот механизм,…

Замена для WinAPI. Пишем раннер для шелл-кода на чистом .NET

Зачастую атакующие используют стандартные функции WinAPI для исполнения шелл‑кода. Все эти методы давным‑давно известны любому защитному средству. В статье мы отойдем от проторенного пути и будем использовать иную парадигму — полный отказ от использования WinAPI.

JSFuck. Разбираем уникальный метод обфускации JS-кода

Давай отложим в сторону сухую техническую прагматику и поговорим о прекрасном. Ты спросишь: что может прекрасного в обфускации кода? Я отвечу: некоторые решения в этой области обладают прямо‑таки эстетически чарующей красотой, доступной только истинным ценителям.…

WinAPI днем и ночью. Ищем способы обращения к нативному коду из C#

Одним из немногих минусов C# считается некоторая сложность при вызове методов WinAPI. Многие возможности уже перекочевали в сборки, но до сих пор приходится часто сталкиваться с задачей вызова функций Win32 напрямую. В таком случае используются PInvoke, DInvoke…

EIGRP Scam. Отравляем таблицу маршрутизации на Python

В этой статье я покажу, как на Python можно сделать инъекцию ложных маршрутов в домен EIGRP. При некотором везении такая инъекция позволит злоумышленнику провести атаку типа MITM или на некоторое время устроить хаос в домене…

Под капотом у PassMark. Исследуем популярный бенчмарк и пишем свои тесты

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

Спайварь на C#. Как устроены средства слежения за пользователями

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

Ты не пройдешь! Изучаем методы предотвращения подгрузки DLL

Злые вирусы так и норовят подгрузить в нашу легитимную программу свои библиотеки! Возможно ли избавиться от чужих модулей? Как предотвратить загрузку библиотек или хотя бы своевременно о ней узнать? Давай разбираться.

Шелл-код для ARM. Пишем на ассемблере свой реверс-шелл для устройств на ARM

Многие знают, как создать шелл‑код для обычных машин с архитектурой x86. Про это написана куча мануалов, статей и книг, но многие современные девайсы, включая смартфоны и роутеры, используют процессоры ARM. Я собрал всю необходимую информацию для подготовки стенда,…

Веселые хеши. Реализуем технику API Hashing, чтобы обдурить антивирус

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

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

Зачем вообще выбирать базу данных? Почему нельзя просто взять ту, с которой уже работал, и использовать ее? Часто это оправданный выбор, но для чего же тогда создано почти 500 разных СУБД? Давай попробуем разобраться вместе, чем…

КодингХардкор#293

Врата ада. Переписываем Hell’s Gate и обходим антивирус

Хочешь узнать, как обойти антивирусные программы с помощью системных вызовов? Мы раскроем секреты этой захватывающей техники, перепишем известный инструмент, попрограммируем на ассемблере и поищем паттерны в памяти, чтобы получить FUD-пейлоад!

Зоркий глаз. Собираем и программируем на Python устройство для видеонаблюдения

Для многих разработчиков Python — это язык, на котором были написаны их первые программы: «Hello, world!» или калькулятор. Сейчас начинающие программисты во время обучения часто пишут телеграм-ботов, благо на Python…

КодингДля начинающих#290

Безопасный питон. Осваиваем приемы защищенного кодинга на Python

Сегодня мы поговорим о том, что должно волновать каждого крутого программиста, — о безопасном коде. Ты думаешь, это скучно и сложно? Ничуть! Я поделюсь с тобой своим опытом и покажу,…

КодингХардкор#290

Дерем три шкуры. Как дампить тикеты Kerberos на C++

Kerberos предоставляет множество функций для аутентификации пользователей. Основным «кирпичиком» считаются тикеты, которые в ходе тестирования на проникновение атакующий хотя бы раз дампит из памяти процесса LSASS. Давай разберемся, как можно…