Тег

С++

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

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

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

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

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

Железный бряк. Используем хардверные брейк-пойнты в пентестерских целях

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

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

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

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

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

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

Privileger. Управляем привилегиями в Windows

Привилегии в Windows играют очень важную роль, так как администратор имеет возможность предоставить специальные права пользователям для решения их задач. В этой статье мы познакомимся с инструментом Privileger, который позволяет…

Круче кучи! Разбираем в подробностях проблемы heap allocation

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

Фундаментальные основы хакерства. Идентифицируем возвращаемое функцией значение

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

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

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

Беспощадный буст. Как ускорить многопоточный код на C++

Уже много лет твой компьютер умеет выполнять код любимого ПО параллельно на всех своих ядрах и процессорах. И казалось бы, уже весь софт давным-давно должен уметь максимально эффективно нагревать атмосферу…

Грустная история забытых символов. Как не сойти с ума при работе с кодировками в C++

Говоря о тексте, большинство программистов C++ думают о массивах кодов символов и кодировке, которой эти коды соответствуют. Но, конечно, не думать о кодировке намного проще. Давай посмотрим, как можно не…