Это второй обзор из цикла статей о проверке открытых программ для работы с протоколом RDP. В ней мы рассмотрим клиент rdesktop и сервер xrdp.
Читать полностью »
Рубрика «C» - 33
Проверка rdesktop и xrdp с помощью анализатора PVS-Studio
2019-04-12 в 12:07, admin, рубрики: C, c++, open source, pvs-studio, rdesktop, rdp, static code analysis, xrdp, Блог компании PVS-StudioChecking rdesktop and xrdp with PVS-Studio
2019-04-12 в 12:05, admin, рубрики: C, c++, open source, pvs-studio, rdesktop, rdp, static code analysis, xrdp, Блог компании PVS-Studio
This is the second post in our series of articles about the results of checking open-source software working with the RDP protocol. Today we are going to take a look at the rdesktop client and xrdp server.
Читать полностью »
Ломаем простую «крякми» при помощи Ghidra — Часть 2
2019-04-10 в 3:44, admin, рубрики: C, c++, crackme, crackmes.de, Ghidra, hacking, nsa, reverse engineering, Reversing, анб, декомпиляция, дизассемблирование, крякинг, крякми, реверс-инжинирингВ первой части статьи мы при помощи Ghidra провели автоматический анализ простой программы-крякми (которую мы скачали с сайта crackmes.one). Мы разобрались с тем, как переименовывать «непонятные» функции прямо в листинге декомпилятора, а также поняли алгоритм программы «верхнего уровня», т.е. что выполняется функцией main().
В этой части мы, как я и обещал, возьмемся за анализ функции _construct_key(), которая, как мы выяснили, как раз и отвечает за чтение переданного в программу двоичного файла и проверку прочитанных данных.
Читать полностью »
Ломаем простую «крякми» при помощи Ghidra — Часть 1
2019-04-09 в 16:01, admin, рубрики: C, c++, crackme, crackmes.de, Ghidra, hacking, nsa, reverse engineering, Reversing, анб, декомпиляция, дизассемблирование, крякинг, крякми, реверс-инжинирингО том, что это за зверь такой — Ghidra («Гидра») — и с чем его едят она ест программки, многие уже, наверняка, знают не понаслышке, хотя в открытый доступ сей инструмент попал совсем недавно — в марте этого года. Не буду докучать читателям описанием Гидры, ее функциональности и т.д. Те, кто в теме, уже, уверен, всё это сами изучили, а кто еще не в теме — могут это сделать в любое время, благо на просторах веба сейчас найти подробную информацию не составит труда. Я же дам только основные ссылки:
- Официальная страница на сайте АНБ США
- Проект на Github
- Первый обзор в журнале «Хакер»
- Отличный канал на YouTube с разбором программ в Ghidra
Итак, Гидра — это бесплатный кроссплатформенный интерактивный дизассемблер и декомпилятор с модульной структурой, с поддержкой почти всех основных архитектур ЦПУ и гибким графическим интерфейсом для работы с дизассемблированным кодом, памятью, восстановленным (декомпилированным) кодом, отладочными символами и многое-многое другое.
Давайте попробуем уже что-нибудь сломать этой Гидрой!
Читать полностью »
Wireshark 3.x: анализ кода под macOS и обзор ошибок
2019-04-08 в 6:35, admin, рубрики: C, c++, open source, pvs-studio, static code analysis, wireshark, Блог компании PVS-Studio, информационная безопасностьWireshark Foundation выпустила финальную stable-версию популярного сетевого анализатора трафика — Wireshark 3.0.0. В новом релизе устранено несколько багов, реализована возможность анализа новых протоколов и заменен драйвер WinPcap на Npcap. Здесь заканчивается цитирование анонса и начинается наша заметка о багах в проекте. Перед релизом их было исправлено явно недостаточно. Давайте насобираем исправлений, чтобы был повод делать новый релиз :).
Введение
Wireshark — это достаточно известный инструмент для захвата и анализа сетевого трафика. Программа работает с подавляющим большинством известных протоколов, имеет понятный и логичный графический интерфейс, мощнейшую систему фильтров. Wireshark — кроссплатформенный, работает в таких ОС, как: Windows, Linux, macOS, Solaris, FreeBSD, NetBSD и многих других.
Для поиска ошибок использовался статический анализатор PVS-Studio. Для анализа исходного кода необходимо предварительно скомпилировать проект в какой-нибудь операционной системе. Выбор был большой не только из-за кроссплатформенности проекта, но и из-за кроссплатформенности анализатора. Для анализа проекта я выбрал macOS. Также запуск анализатора возможен в Windows и Linux.
Про качество кода хочется рассказать отдельно. К сожалению, я не могу назвать его хорошим. Это субъективная оценка, но поскольку мы регулярно проверяем множество проектов, у меня есть с чем сравнивать. В данном случае в глаза бросается большое количество предупреждений PVS-Studio на небольшом объёме кода. Суммарно на этот проект выдано более 3500 предупреждений всех уровней. Это характерно для проектов, в которых вообще не используются инструменты статического анализа, даже бесплатные. Другим фактором, указывающим на качество проекта, являются повторяющиеся ошибки, выявленные анализатором. В статье однотипные примеры кода не будут приводиться, но некоторые одинаковые ошибки присутствуют в коде в сотне мест.
Читать полностью »
Wireshark 3.x: code analysis under macOS and errors review
2019-04-08 в 6:32, admin, рубрики: C, c++, open source, pvs-studio, static code analysis, wireshark, Блог компании PVS-Studio, информационная безопасность
Wireshark Foundation released the final stable-version of the popular network traffic analyzer — Wireshark 3.0.0. The new release fixes several bugs, it is now possible to analyze the new protocols, apart from that the driver on Npcap WinPcap is replaced. Here is where quoting of the announcement ends and our note about bugs in the project starts off. The projects authors definitely haven't done their best in fixing bugs before the release.
Let's collect hotfixes right now to give a motive in doing a new release :).
Introduction
Wireshark is a well-known tool to capture and analyze network traffic. The program works with the vast majority of known protocols, has intuitive and logical graphical interface, an all-powerful system of filters. Wireshark is cross-platform, works in such OSs, as: Windows, Linux, macOS, Solaris, FreeBSD, NetBSD and many others.
To do the source code analysis, we used PVS-Studio static code analyzer. To analyze the source code, first we needed to compile the project in an OS. The choice was wide not only due to the cross platform nature of the project, but also because of that of the analyzer. I chose macOS for the analysis. You can also run the analyzer under Windows and Linux.
Читать полностью »
Мой компилятор для Lisp
2019-04-04 в 20:04, admin, рубрики: C, Mal, Malcc, Tiny C Compiler, интерпретатор, компилятор, КомпиляторыОчень рад объявить о завершении моего первого компилятора для языка программирования! Malcc — это инкрементальный AOT-компилятор Lisp, написанный на C.
Вкратце расскажу о его многолетней разработке и что я узнал в процессе. Альтернативное название статьи: «Как написать компилятор за десять лет или меньше».
(В конце есть TL;DR, если вас не волнует предыстория).
Читать полностью »
Linux Kernel 5.0 — пишем Simple Block Device под blk-mq
2019-04-03 в 7:17, admin, рубрики: blk-mq, C, linux kernel 5.0, linux kernel module, multi-queue block layer, open source, simple block device driver, Блог компании «Veeam Software», Программирование, Разработка под LinuxGood News, Everyone!
Linux kernel 5.0 уже здесь и появляется в экспериментальных дистрибутивах, таких как Arch, openSUSE Tumbleweed, Fedora.
А если посмотреть на RC дистрибутивов Ubuntu Disko Dingo и Red Hat 8, то станет понятно: скоро kernel 5.0 с десктопов фанатов перекачует и на серьёзные сервера.
Кто-то скажет — ну и что. Очередной релиз, ничего особенного. Вот и сам Linus Torvalds сказал:
I’d like to point out (yet again) that we don’t do feature-based releases, and that “5.0” doesn’t mean anything more than that the 4.x numbers started getting big enough that I ran out of fingers and toes.
(Еще раз повторюсь — наши релизы не привязываются к каким-то определенным фичам, так что номер новой версии 5.0 означает только то, что для нумерования версий 4.х у меня уже не хватает пальцев на руках и ногах)
Однако модуль для floppy дисков (кто не знает — это такие диски размером c нагрудный карман рубашки, ёмкостью в 1,44 MB) — поправили…
И вот почему:
Читать полностью »
Простой ASN1-кодек на базе sprintf
2019-03-31 в 18:37, admin, рубрики: asn.1, C, CRL, csr, IT-стандарты, PKCS#10, PKCS#11, PKCS#7, public key, x509 v3, криптография, Программирование, Разработка под LinuxТранспортный синтаксис ASN.1 определяет однозначный способ преобразования значений переменных допустимых типов в последовательность байт для передачи по сети. В ASN.1 он называется базовыми правилами кодирования (Basic Encoding Rules, BER). Правила являются рекурсивными, так что кодирование составных объектов представляет собой составление в цепочку закодированных последовательностей составляющих объектов. Протокол ASN.1 описывает структуру данных простым и понятным языком.
Читать полностью »
How the CSS markup fragment broke the C++ compiler
2019-03-27 в 6:18, admin, рубрики: C, c++, microsoft, MSVC, visual c++, Visual Studio, Блог компании PVS-Studio, разработка под windows
Static analysis methodology involves various technologies. One of them is preprocessing files right before analyzing them. Preprocessed files are created by the compiler that runs in a special working mode. Unfortunately, our long-standing experience of developing a static analyzer shows that this mode is not great for testing. In this note, I'll give the example of a fresh bug in the C++ compiler from Microsoft.
Читать полностью »