Обновить
28.56

Отладка *

Поиск и устранение ошибок в коде

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

Как добавить кастомный аутентификатор в KeyCloak и подружить его со сторонней системой

Время на прочтение15 мин
Охват и читатели8.9K

Всем привет.

Сегодня мы покажем вам простой пример, как в Keycloak можно добавить кастомный аутентификатор.

Как вы все знаете, Keycloak – это система адаптивной аутентификации, позволяющая реализовать фактические любой процесс аутентификации (ограниченный только навыками разработки на Java) и выступать в качестве Identity Provider для клиентов по протоколам OIDC и SAML.

В стандартном наборе представлено много типовых аутентификаторов. Но что делать, когда стандартных аутентификаторов недостаточно и необходимо реализовать свою логику? Официальная документация дает ответ: разработать аутентификатор самому.

Что мы вместе с нашим системным инженером направления кибербезопасности К2Тех Егором Туркиным в итоге и сделали.

Читать далее

Реверс бинарных файлов Golang с использование GHIDRA. Часть 1

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

Язык программирования Go (так же известный как Golang) с каждым днем все больше и больше программистов хотят на нем писать программы. Для хакеров этот язык программирования становится еще более привлекательным за счет кросс-компиляции для различных платформ - Windows, Linux, MacOS. Например, хакеры могут написать загрузчик на Go, внутри может быть ВПО, созданное с использованием более распространенного языка.

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

Некоторые особенности языка программирования Go усложняют задачу реверс-инженерам при исследовании бинарных файлов Go. Инструменты обратного проектирования (например, дизассемблеры) могут отлично справляться с анализом двоичных файлов, написанных на более популярных языках (например, C, C++, .NET), но Go создает новые проблемы, которые делают анализ более громоздким.

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

Читать далее

Разбор I2S трафика в программе Logic 2

Уровень сложностиПростой
Время на прочтение1 мин
Охват и читатели6.3K

В этом тексте я написал инструкцию того как настроить логический анализатор Saleae производить автоматический синтаксический разбор трафика на шине I2S.

Читать далее

Ручная отладка мобильного фронтенда с нуля до PRO за 30 минут

Уровень сложностиПростой
Время на прочтение18 мин
Охват и читатели34K

Привет! Меня зовут Виталий, я фронтенд-тимлид в KTS.

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

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

• В responsive mode браузера на компьютере

• С помощью эмуляторов iOS и Android

• На физическом iPhone и Android-устройстве через USB

• С помощью Browserstack

Читать далее

Профилирование Python — почему и где тормозит ваш код

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

Представьте ситуацию: вы написали скрипт для обработки каких-то данных на ноутбуке, ушли попить кофе, а когда пятнадцать минут спустя вернулись, завершилось едва ли 10%.

Почему скрипт работает так медленно? Какая его часть тормозит? Дело в чтении данных, их обработке или сохранении? Как ускорить исполнение? Действительно ли скрипт вообще медленный?

Ответить на все эти вопросы поможет инструмент под названием «профилировщик» (profiler).
Читать дальше →

Проблема загрузки контроллеров Teensy

Уровень сложностиСредний
Время на прочтение4 мин
Охват и читатели1.9K

Загрузка контроллера Teensy, подключенного к компьютеру через СОМ порт при отсутствии других Teensy, не вызывает затруднений. Однако, загрузка одновременно-подключенной группы контроллеров Teensy может оказаться проблематичной [1,2,3,4]. Варианты решения этой проблемы обсуждаются ниже.

Читать далее

Исследуем защиту программ на практике

Уровень сложностиСредний
Время на прочтение4 мин
Охват и читатели5.2K

Два года назад взялся писать программу, что помогает выставлять счета за аренду ковров. Прежде бухгалтер держал текст договоров в Word, расписание в Excel, а три дня каждого месяца убивал на подсчеты. Теперь программа сама рассчитает суммы и загрузит счета в 1С.

Компания такая не одна: защищу программу - продам ключи.

Защита программы - трудное дело. Исследую защитные алгоритмы на практике: вытащу из готовых программ, а чтобы никому не вредить, исследую программы, что специально написаны для взлома - crackme или keygenme.

Жребий пал на q_keygenme_1.0 by quetz.

Читать далее

Гайд 2023 Xdebug в PHPSTORM + Virtual server + Docker для macOS с пробросом портов

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

Предварительно необходимо убедиться, чтобы в контейнере под php-fpm у вас был пакет Xdebug. Нужно либо установить в ручную, либо зашить в Dockerfile - конечно же второе будет лучше, т.к не придется при перезапуске делать одно и то же действие с установкой.

Мой DockerFile пример с командами установщика

Читать далее

Пишем и отлаживаем код для ARM64 на голом железе

Уровень сложностиСложный
Время на прочтение7 мин
Охват и читатели8.8K
Я немного изучил arm64 (aarch64) и решил: попробую написать для него код на голом железе.
Я хотел понять, проанализировать и тщательно рассмотреть машинный код, который выдают на моём MacBook Air M1 такие среды исполнения WebAssembly, как v8 или wasmtime. Для этого я (немного) изучил ассемблер arm64. Коллега Саул Кабрера порекомендовал мне почитать книгу Стивена Смита «Programming with 64-Bit ARM Assembly Language», и я могу только поддержать эту рекомендацию.

image

«Programming with 64-Bit ARM Assembly Language» by Stephen Smith, APress 2020

В книге отлично объясняется набор инструкций, приёмы оптимизации, а также действующие соглашения и интерфейсы ABI. Но с ней вы научитесь писать программы только под операционную систему. Я же люблю загружать с нуля мой собственный BBC Microbit или Rasperry Pi. В этом посте я набросал пару шагов, которые успел сделать в этом направлении.
Читать дальше →

Использование IDA+IDAPython+Xdbg при восстановлении обфусцированного семпла

Время на прочтение6 мин
Охват и читатели4.3K

При изучении вредоносных программ динамического анализа в изолированных системах-песочницах в большинстве случаев достаточно для того, чтобы выявить природу той или иной угрозы и на основе полученной информации пополнить вирусную базу антивируса. Однако иногда в вирусную лабораторию попадают образцы, требующие глубокого понимания непосредственного алгоритма их работы. И тогда без статического анализа уже не обойтись. Например, для бэкдоров может понадобиться разбор протокола общения с C&C-сервером или алгоритма генерации доменных имен. А при анализе шифровальщиков необходимо выяснять, каким алгоритмом и какими ключами шифровались файлы. При этом часто такие троянские приложения запакованы или обфусцированы, и потому статический анализ может быть осложнен. Пример разбора такой сложной угрозы мы сегодня и рассмотрим. 

Итак, перед нами некая вредоносная программа для платформы Windows. Первым делом загрузим ее в IDA Pro Disassembler и попытаемся выполнить автоанализ. Как ни странно, это нам не удается, поскольку тот спотыкается уже в самом начале — на функции Main. Это значит, что для разбора образца нам потребуется приложить определенные усилия.

Читать далее

Python: Построение графиков по данным из файла

Уровень сложностиПростой
Время на прочтение3 мин
Охват и читатели78K

В разных областях деятельности приходится строить графики. Построить график на компьютере можно десятками если не сотнями способов. В этот тексте я показал как строить графики при помощи интерпретируемого языка программирования Python.

Читать далее

Полезные iOS-инструменты для дебаггинга

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

Привет! Меня зовут Альберт, я занимаюсь iOS-разработкой в компании SimbirSoft! Хочу поделиться инструментами для дебаггинга iOS-приложений, которые юзаю лично сам. Любой разработчик наверняка знает, что создание высококачественного приложения требует не только написания кода. Одна из важнейших составляющих достижения успеха в этом деле — эффективная отладка. К счастью, существует множество инструментов, которые помогут быстро и эффективно диагностировать, а также устранять проблемы. В этой статье мы подробно рассмотрим нативные и сторонние инструменты, доступные для отладки iOS-приложений, как использовать эти инструменты для диагностики и устранения распространенных проблем. Если интересно, тогда ныряйте под кат.

Читать далее

Отладка приложений на Perl в Docker-контейнере

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

Я Марсель Ардуанов, руководитель команды разработки VK и по совместительству Go-разработчик. После перехода в другое бизнес-подразделение я столкнулся с сервисами на языке Perl. Если вы посмотрите рейтинг языков программирования в 2023 году на Хабре, то увидите, что он не входит в этот список.

В компаниях до сих пор существуют сервисы на Perl, логику работы которых нужно понять и перенести на другой язык. Обычно в этом очень помогает отладчик. Но походив по интернету, я понял, что лёгкого решения для запуска отладчика нет, нужно разбираться. В этой статье я расскажу, как работать с зависимостями и отлаживать Perl-приложения с использованием современных технологий.

Читать далее

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

Мониторинг — это боль

Уровень сложностиСредний
Время на прочтение13 мин
Охват и читатели18K

И все мы выполняем его неправильно (в том числе и я).

Я должен признаться. Несмотря на то, что меня много раз нанимали в том числе и благодаря моему опыту работы с платформами мониторинга, я начал его ненавидеть. Инструменты мониторинга и наблюдаемости (observability) совершают тяжкий грех: обманом заставляют людей думать, что это простая задача. Очень легко мониторить маленькое приложение или сервис. Но почти ни одно из таких решений не масштабируется.

Вместо этого мониторинг превращается в бесконечную последовательность маленьких неудач. Метрики на какое-то время исчезают, логи перестают записываться на несколько часов, веб-UI для трассировок больше не работает. Мы настраиваем эти инструменты, готовясь, что сможем о них после этого забыть, но на самом деле они требуют постоянно растущих усилий по обслуживанию. Некоторые инструменты ломаются, и их больше никто не чинит. Я слишком часто приходил в новую компанию и видел, что в ней развёрнут нелюбимый мной поломанный Jaeger.

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

В статье я расскажу о том, что, по моему мнению, нужно делать, а также поделюсь своими надеждами и мечтами. Прошу вас убедить меня, что я не прав и что есть более качественные решения.
Читать дальше →

Самодельная отладочная плата на базе STM32G431CB — STM32G431 DevBoard V1.1

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

Ищите дешёвую и удобную в использовании отладочную плату на базе STM32G431CB? Предлагаю вам следующее решение... (К статье прилагаются: схема электрическая принципиальная, перечень элементов, сборочный чертёж печатной платы, производтсвенные файлы).

Перейти к статье

Безопасная разработка и уязвимости кода. Часть1. Уязвимость

Время на прочтение4 мин
Охват и читатели5.1K

Понятие DevSecOps (как, впрочем, и DevOps) до сих пор трактуют весьма широко, кто-то считает, что направление в разработке ПО, кто-то считает, что такой специалист «на все руки». Но, пожалуй, наиболее подходящим в контексте этой статьи будет следующее определение DevSecOps — это практика интеграции тестирования безопасности в каждый этап процесса разработки программного обеспечения. Отсюда можно сделать вывод, что и разработчики и тестировщики должны быть знакомы с базовыми уязвимостями, которые можно встретить в коде.

Читать далее

Обзор контроллера SSD1306 для OLED экранов

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

В этом тексте я представил обзор контроллера графических монохромных OLED экранов SSD1306. В этом тексте я напишу с какой стороны следует подходить к этому ASIC(у). Перечислю достоинства и недостатки дисплея SSD1306.

Читать далее

Всё хорошо, но нужно переписать или почему ваш код не попадает в прод

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

Разберу простую задачу, получение rss-ленты, и то, чем будет отличаться код, который просто получает ленту, от того, который собственно используется в производстве. 

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

Читать далее

Когда отладочных символов стало слишком много

Время на прочтение4 мин
Охват и читатели4.8K

Смерть, налоги и безудержно разрастающиеся браузерные движки — вот три вещи, в которых можно быть твёрдо уверенным. Актуально это было и на начало 2020 года, когда я осознал, что из-за безжалостного роста Chromium рано или поздно мы будем создавать файлы PDB (отладочных символов Windows), превосходящие предел формата PDB в 4 ГиБ.

В феврале 2020 года я зарегистрировал баг Visual Studio с просьбой увеличения этого предела, и спустя три года и три дня мы дёрнули рубильник, и теперь Chromium может создавать PDB большего размера. На тот момент PDB для Chrome занимал 95% от 4 ГиБ, а многие тестовые двоичные файлы уже преодолели этот порог, так что это было сделано вовремя.
Читать дальше →

Как проводить кодревью?

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

На работе предложили прочитать доклад. Вуаля! Далее расскажу:

✓ Что такое кодревью?
✓ Зачем нужен?
✓ Что проверяем?
✓ Типовые проблемы & решения
БОНУС!!! Результаты опроса: «Как вы делаете кодревью?»

Читать далее