Обновить
4
0

Пользователь

Отправить сообщение

XSS: атака и защита с точки зрения C# программирования

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

XSS, или межсайтовый скриптинг, является одной из самых часто встречающихся уязвимостей в веб-приложениях. Она уже долгое время входит в OWASP Top 10 – список самых критичных угроз безопасности веб-приложений. Давайте вместе разберемся, как в вашем браузере может выполниться скрипт, полученный со стороннего сайта, и к чему это может привести (спойлер: например, к краже cookie). Заодно поговорим о том, что необходимо предпринять, чтобы обезопаситься от XSS.

Читать далее

Пишем дизассемблер виртуальной машины из игры Clock Tower (PS1/PC) для IDA Pro

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

Всем привет. Тут такое дело: ещё одна моя реверсерская мечта сбылась - я написал процессорный модуль для IDA Pro с нуля, за два дня! Если вы когда-то тоже хотели написать свой модуль, но боялись начать - думаю, моя статья сможет помочь.

В качестве кода, который требуется дизасемблировать, будет выступать код виртуальной машины из очень крутого хоррора, который выходил сначала на SNES, потом на PS1, PC и Wonderswan - "Clock Tower - The First Fear". В игре имеется 9 концовок (sic!), атмосфера гнетущая, а в качестве главного злодея выступает "Scissorman" (человек с руками-ножницами). Заинтересовал? Тогда добро пожаловать...

Читать далее

Как распаковать вредоносное ПО с помощью x64dbg

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

Эта статья представляет собой руководство по x64dbg, в котором объясняется и демонстрируется методика реверс-инжиниринга вредоносных программ. Она является продолжением нашей серии публикаций, посвященных x64dbg:

Читать далее

Что нового в .NET 6?

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

На момент написания этих строк вышло уже семь превью-версий .NET 6. Дальше — только релиз-кандидаты. Все основные фичи уже добавлены во фреймворк, идёт отладка, тестирование и оптимизация. Ожидать чего-то кардинально нового в RC-версиях, пожалуй, уже не стоит. Пришла пора рассмотреть .NET 6 поближе.


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


Поговорим об этом.

Читать дальше →

Даты, время и часовые пояса: улучшения в .NET 6

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

Материал переведен. Ссылка на оригинал

В этой статье я расскажу о грядущих улучшениях в .NET 6, затрагивающих даты, время и часовые пояса. Все, о чем здесь говорится, вы можете опробовать сами — эти возможности будут доступны, начиная с версии .NET 6 Preview 4.

Мы рассмотрим следующие темы:

Читать далее

Работа с кучей в Rust

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

Продолжаем изучать Rust нетрадиционным способом. В этом раз будем разбираться в нюансах работы с кучей, для их понимания понадобятся: сырые указатели, выделение памяти в куче, размер экземпляра типа, запись значений в кучу и чтение из нее, const и static, unit-like структуры, переопределение глобального аллокатора.


Это, определенно, overkill для одной статьи, а вот половину списка вполне можно освоить.


Читать дальше →

Неожиданные причины торможения программ и систем

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

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

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

Разделы поста чаще всего никак не связаны друг с другом, поэтому можете выбирать самые интересные для вас.
Читать дальше →

Оптимизация .NET приложений: большой результат маленьких правок

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

0852_NETAppsPerf_MinChangesMajorRes_ru/image1.png


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

Читать дальше →

TreeOS. 16-битная рождественская демка в загрузочном секторе

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


В преддверии Нового Года бороздил просторы сети, и нашёл замечательную демку на ассемблере рисования новогодней ёлки. Демка не простая, а золотая, написана таким образом, чтобы работала в загрузочном секторе диска, фактически микрооперационная система, если её так можно назвать. Из-за большой любви к Новому Году и ассемблеру, решил таки её немного разобрать, и восхититься мастерством автора. Итак, поехали.

Разработка 64-битного графического UEFI-приложения в Visual Studio

Время на прочтение9 мин
Охват и читатели20K
Зимой в блоге RUVDS было несколько статей о написании загрузчиков для «классического» BIOS, в т.ч. симпатичная графическая демка, целиком помещающаяся в загрузочном секторе и работающая в VGA-режиме 320×200. Комментаторы справедливо отмечали, что в наступившем 2021 г. нет смысла осваивать это лютое легаси;
а вот статей про “Hello, World” на UEFI да с графикой действительно не хватает. Больше того — я таких вообще не припомню.» (MinimumLaw)
Под катом мы пошагово перепишем ту бутсекторную демку под UEFI, и она будет работать в полноцветном видеорежиме с высоким разрешением. С другой стороны, вместо 512 байт она будет занимать несколько десятков КБ.

За что я люблю ассемблер?

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

Этой статье уже почти 3 года. Однако сегодня я решил подредактировать её, дополнить и выложить, наконец, на Хабр.

Читать далее...

Укрощение строптивого или Reverse Engineering французского паллетайзера на Simatic S7-300

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

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

Внезапно: Исходников программного обеспечения и электрической документации нет уже лет 5.

Итак, сущность проблемы была проста как мир. Имеется технологическая машина - паллетайзер, в которой:

Читать далее

std::move vs. std::forward

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

Несмотря на то, что материалов на тему move-семантики и идеальной передачи в Интернете предостаточно, вопросов типа «что я должен здесь использовать: move или forward?» не становится меньше или мне просто «везет» на них. Поэтому и решено было написать эту статью. Предполагается, что читатель хотя бы немного знаком с rvalue-ссылками, move-семантикой и идеальной передачей.

Читать далее

WebAssembly: что и как

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


Эта статья основана на моём выступлении на конференции ITSubbotnik, прошедшем 2 ноября 2019 года в Москве.


Вообще я бэкенд программист, но меня заинтересовала эта технология, она позволяет использовать мои знания бэкенда на фронте.


Проблема


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

Читать дальше →

Конспектируем Книгу Rust:: Владение

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

Перед вами краткое профессиональное описание особенностей языка Rust для профессионалов.


Что это такое?
  • краткое — информации будет гораздо меньше, чем в Книге (The Rust Programming Language)
  • профессиональное — информации будет гораздо больше, чем в Книге;
  • описание особенностей — фокусируемся на отличиях Rust от других языков;
  • языка — описывается именно язык, а не установка средств разработки, управление пакетами и прочий инструментарий;
  • для профессионалов — подразумевается, что читатель имеет существенный опыт в разработке ПО.

Чего здесь НЕ будет


  • Не будет агитации за Rust
  • Не будет легко. Для освоения потребуется неделя-другая вдумчивого чтения по часу в день, с тщательным разбором примеров, как-то так

Содержание


Читать дальше →

Её высочество Пуля

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


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

Её сиятельство Гильза

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

«Есть многое на свете, друг Горацио, что и не снилось нашим мудрецам». У Вильяма нашего Шекспира эта фраза подразумевала различную паранормальщину, вроде тени отца Гамлета, намекавшей на совершение ряда тяжких преступлений, но если внимательно присмотреться, то и появление многих привычных нам вещей тоже представляется многим людям магией. И совсем необязательно это Большой Адронный Коллайдер, желанная, но дефицитная игровая видеокарта или 8К-телевизор от Самсунга. Это может быть гораздо более простая вещь – например, патрон. Пистолетный, винтовочный, револьверный – неважно. Патрон является вроде бы и мелким, но очень важным персонажем в мировой военной истории. Мы читаем про дефицит патронов в Российской Императорской Армии и ужасаемся ему. А потом со сходными чувствами – про винтовку с пятью патронами на человека в РККА. Или истории про отказ в приёме на вооружение автоматических образцов, потому что расход патронов будет излишне велик. И постоянно этот персонаж возникает в сюжете в связи с какими-то перипетиями – недостатком, срывом поставок, освоением производства, проблемами с качеством. Зато, когда с ним нет проблем, он незаметен.

При этом само производство патронов обычно остаётся за кадром. Ну как-то их там делают, причём миллионами и миллиардами. Магия, да и только. А где магия, там и мифы, вроде самого живучего – про диаметр советских папирос и макарон, равный 7.62 мм, что якобы позволяет развернуть производство патронов на любой макаронной фабрике за два часа.Итак, говорить будем про унитарный патрон в металлической гильзе.
Читать дальше →

Чистый код под флагом АОП и ненавистный #ПредупреждаюНедвижимостьИзменился

Время на прочтение5 мин
Охват и читатели8.1K
Поддавшись общей истерии на хабре,

(а именно «Предупреждаю Недвижимость Изменился» переводит Гуглекс всеми любимый «I Notify Property Changed») по поводу уведомлений об изменении. Я решил посмотреть на сколько далеко продвинулось человечество в изобретении велосипедов.
Читать дальше →

Инъекции MSIL кода в стороннюю сборку при помощи Mono.Cecil. Реализация принципов АОП в NET

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

Введение


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

Многие .NET разработчики знают, что для доступа к объектам чужой сборки можно использовать Reflection. С помощью типов из System.Reflection мы можем получить доступ ко многим объектам .NET сборки, просмотреть их метаданные, и даже использовать те объекты, доступ к которым ограничен (например, private методы чужого класса). Но использование Reflection имеет свои ограничения и главная причина этому — данные, с котороми вы работаете через Reflection, все еще считаются кодом. Таким образом, вы, к примеру, можете получить CodeAccessSecurity exception, если сборка, к которой вы пытаетесь применить Reflection, запрещает это. По этой же причине Reflection работает довольно медленно. Но наиболее важным для данной статьи является то, что стандартный Reflection не позволяет изменять существующие сборки, только генерировать и сохранять новые.

Mono.Cecil


Качественно иной подход предлагает бесплатная библиотека с открытым исходным кодом Mono.Cecil. Главное отличие подхода Mono.Cecil от подхода Reflection в том, что данная библиотка работает с NET сборкой как с потоком байт. При загрузке сборки, Mono.Cecil разбирает PE заголовок, CLR заголовок, MSIL код классов и методов и т.д. работая напрямую с потоком байтов, представляющим сборку. Таким образом, с помощью данной библиотеки можно как угодно (в пределах предусмотренного) изменять имеющуюся сборку.
Читать дальше →

Наглядно о том, как работает свёрточная нейронная сеть

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

К старту курса о машинном и глубоком обучении мы решили поделиться переводом статьи с наглядным объяснением того, как работают CNN — сети, основанные на принципах работы визуальной коры человеческого мозга. Ненавязчиво, как бы между строк, автор наталкивает на размышления о причинах эффективности CNN и на простых примерах разъясняет происходящие внутри этих нейронных сетей преобразования.

Читать далее

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность