Рубрика «ошибки в коде» - 2

image1.png

Планировалось, что, написав статью "Обидно за мнения про статические анализаторы кода", мы выговоримся и спокойно отпустим тему. Но неожиданно эта статья вызвала бурный отклик. К сожалению, обсуждение пошло не туда, и сейчас мы сделаем вторую попытку объяснить своё видение ситуации.
Читать полностью »

memcpy

Уже несколько раз замечал, что программисты допускают ошибки в простых функциях копирования данных. Эта тема потребует в будущем ещё много времени для изучения и подбора материала, чтобы написать основательную статью. Но захотелось поделиться парой примеров, недавно замеченных мною.
Читать полностью »

Всем привет! Вдохновленные успехом предыдущей статьи, которая была написана в преддверии запуска курса "Fullstack разработчик JavaScript", мы решили продолжить серию статей для новичков и всех тех, кто только начинает заниматься программированием на языке JavaScript. Cегодня мы поговорим об ошибках, которые случаются в JS, а также о том, как именно с ними бороться.

Ошибки в JavaScript: исправляем, обрабатываем, чиним - 1

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

Неизвестный тимлид

Читать полностью »

Picture 2

Уже стало традицией, что программисты, пополняющие команду PVS-Studio, начинают свою деятельность с написания статьи про анализ проекта с открытым исходным кодом. В этот раз таким проверенным проектом станет Telerik UI for UWP.
Читать полностью »

Держи багОбщаясь с людьми на конференциях и в комментариях к статьям, мы сталкиваемся со следующим возражением: статический анализ сокращает время на нахождение ошибок, но отнимает время у программистов, что нивелирует пользу от его использования и даже наоборот тормозит процесс разработки. Давайте разберём это возражение и покажем, что оно беспочвенно.
Читать полностью »

define

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

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

BEGIN_MESSAGE_MAP(efcDialog, EFCDIALOG_PARENT )
  //{{AFX_MSG_MAP(efcDialog)
  ON_WM_CREATE()
  ON_WM_DESTROY()
  //}}AFX_MSG_MAP
END_MESSAGE_MAP()

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

Я говорю о других макросах, с помощью которых пытаются избежать реализации полноценной функции или стараются сократить размер функции. Рассмотрим несколько мотивов избегать таких макросов.
Читать полностью »

Как разобраться в «иностранном» коде и влиться в новую команду? - 1

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

Любой код имеет собственную логику, основан на определенных принципах, в нем встречаются паттерны и технологии, характерные для команды, к которой присоединился программист. Но как начать быстро понимать чужой проект, при том что он вряд ли небольшой, а документации часто либо вообще нет, либо она недостаточна и неточна?
Читать полностью »

PVS-Studio для Java

В седьмой версии статического анализатора PVS-Studio мы добавили поддержку языка Java. Пришло время немного рассказать, как мы начинали делать поддержку языка Java, что у нас получилось и какие дальнейшие планы. И, конечно, в статье будут приведены первые испытания анализатора на открытых проектах.
Читать полностью »

PVS-Studio free for open source

В канун празднования нового 2019 года команда PVS-Studio решила сделать приятный подарок всем контрибьюторам open-source проектов, хостящихся на GitHub или Bitbucket. Им предоставляется возможность бесплатного использования статического анализатора PVS-Studio для развития открытых проектов.
Читать полностью »

Конференция DEFCON 17. Посмеёмся над вашими вирусами! Часть 1

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

Конференция DEFCON 17. Посмеёмся над вашими вирусами! Часть 2 - 1

Таким образом, с помощью всего нескольких команд для дампа памяти мы нашли место, в котором спрятался Coreflood. Мы деассемблировали, извлекли и вставили заголовок PE, даже не имея его, и получили полностью восстановленную таблицу адресов менее чем за 20 секунд.

Следующая история называется «Дорогая, извини, что снова тебя побеспокоил – я ужал интернет»! Эта история повествует о том, что дефектный IP-генератор Conficker.B сканирует только часть интернета. Здесь мы снова возвращаемся к функции rand. Важной частью этой функции является самая последняя инструкция, которую я пометил зелёной стрелкой – она выполняет любое конечное значение в EAX с величиной 7FFF. Если вы не знакомы с принципами ассемблирования и не знаете, что может сделать эта инструкция, то вот небольшое демо по этому поводу.

Конференция DEFCON 17. Посмеёмся над вашими вирусами! Часть 2 - 2Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js