Рубрика «Программирование» - 338

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

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

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

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

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

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

Раньше я очень любил C#

Это был мой основной язык программирования, и каждый раз, когда я сравнивал его с другими, я радовался тому, что в свое время случайно выбрал именно его. Python и Javascript сразу проигрывают динамической типизацией (если к джаваскрипту понятие типизации вообще имеет смысл применять), Java уступает дженериками, отстутствием ивентов, value-типов, вытекающей из этого карусели с разделением примитивов и объектов на два лагеря и зеркальными классами-обертками вроде Integer, отсутствием пропертей и так далее. Одним словом — C# клевый.

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

А потом я из любопытства попробовал F#.

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

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

Мэтт: Тема нашего сегодняшнего разговора – высмеивание вредоносных программ, и это именно то, что мы стараемся делать.

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

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

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

Работа со строками на этапе компиляции в современном C++ - 1

Если вы программируете на C++, то наверняка задавались вопросом почему нельзя сравнить два строковых литерала или выполнить их конкатенацию:

auto str = "hello" + "world"; // ошибка компиляции

if ("hello" < "world") { // компилируется, но работает не так, как ожидалось
    // ...
}

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

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

image
Недавно начал изучать язык программирования Rust и так как когда я изучаю новый язык я делаю на нем «Змейку» то решил сделать именно ее.
Для 3D графики использовалась библиотека Three.rs которая является портом библиотеки Three.js
Код
Скачать и поиграть

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

В двух предыдущих статьях я рассказал об использовании смартфона для управления игрушечным автомобилем, как непосредственно голосом, так и с использованием другого смартфона по блютус. Но управление было примитивным — отдавалась команда, автомобиль выполнял команду, останавливался и ждал следующей команды. Это было связано с большой скоростью движения автомобиля для комнатных условий (приблизительно 1,2 м/с), а так же с продолжительным временем отдания команды и невозможностью оперативно вмешиваться в движение, используя меню. Даже штатный пульт ДУ не давал возможности управления. В новой версии ДУ с графическим интерфейсом я решил применить ШИМ для регулировки скорости и имитировать управление рулем.

Пульт дистанционного управления из смартфона - 1

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

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

image

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

Тех, кто готов не возмущаться по поводу очередной статьи про бота, прошу под кат.

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

Массачусетский Технологический институт. Курс лекций #6.858. «Безопасность компьютерных систем». Николай Зельдович, Джеймс Микенс. 2014 год

Computer Systems Security — это курс о разработке и внедрении защищенных компьютерных систем. Лекции охватывают модели угроз, атаки, которые ставят под угрозу безопасность, и методы обеспечения безопасности на основе последних научных работ. Темы включают в себя безопасность операционной системы (ОС), возможности, управление потоками информации, языковую безопасность, сетевые протоколы, аппаратную защиту и безопасность в веб-приложениях.

Лекция 1: «Вступление: модели угроз» Часть 1 / Часть 2 / Часть 3
Лекция 2: «Контроль хакерских атак» Часть 1 / Часть 2 / Часть 3
Лекция 3: «Переполнение буфера: эксплойты и защита» Часть 1 / Часть 2 / Часть 3
Лекция 4: «Разделение привилегий» Часть 1 / Часть 2 / Часть 3
Лекция 5: «Откуда берутся ошибки систем безопасности» Часть 1 / Часть 2
Лекция 6: «Возможности» Часть 1 / Часть 2 / Часть 3
Лекция 7: «Песочница Native Client» Часть 1 / Часть 2 / Часть 3
Лекция 8: «Модель сетевой безопасности» Часть 1 / Часть 2 / Часть 3
Лекция 9: «Безопасность Web-приложений» Часть 1 / Часть 2 / Часть 3
Лекция 10: «Символьное выполнение» Часть 1 / Часть 2 / Часть 3
Лекция 11: «Язык программирования Ur/Web» Часть 1 / Часть 2 / Часть 3
Лекция 12: «Сетевая безопасность» Часть 1 / Часть 2 / Часть 3
Лекция 13: «Сетевые протоколы» Часть 1 / Часть 2 / Часть 3
Лекция 14: «SSL и HTTPS» Часть 1 / Часть 2 / Часть 3
Лекция 15: «Медицинское программное обеспечение» Часть 1 / Часть 2 / Часть 3Читать полностью »

Не так давно по долгу службы столкнулся с довольно интересной проблемой.

У нас имеется устройство, которое осуществляет интенсивный обмен по внутренней шине RS485, число проходящих пакетов составляет порядка нескольких тысяч в секунду, каждый пакет имеет длину в 7 байт, два из которых предназначены для хранения контрольной суммы CRC16 в ее CMS варианте (полином = 0x8005, стартовое значение = 0xFFFF). Прием осуществляется в FIFO-буфер, который сдвигается вверх с вытеснением после приема каждого последующего байта. Индикатором получения реального пакета является факт совпадения его контрольной суммы со значением, переданным в самом пакете. Никаких заголовков или дополнительных параметров.

Проблема заключалась в следующем – периодически, примерно раз в 5 минут, при передаче данных проскакивал пакет, данные которого давали выброс данных для одного из каналов, причем чаще всего выброс происходил до одного и того же значения. Сначала мы смотрели в сторону физических коллизий, но дело оказалось в другом – время от времени в буфере, где собирались полученные данные, оказывался пакет, состоящий из конца предыдущего пакета и начала следующего, причем контрольная сумма у такого комбинированного пакета оказывалась верной. То есть, налицо коллизия контрольной суммы: пакет не имеет смысла, но дает верную контрольную сумму.
Читать полностью »

Aрифметика произвольной точности в Erlang - 1
@rawpixel

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

Если говорить про Erlang, то он, как и многие другие языки, реализует IEEE754 стандарт для float, в то время как стандартный тип Integer в Erlang реализован с использованием арифметики произвольной точности. Однако, хотелось бы иметь не только bigint, но и возможность оперирования рациональными, комплексными и числами с плавающей точкой с необходимой точностью.

В статье представлен минимальный обзор теории кодирования чисел с плавающей точкой и наиболее яркие примеры возникающих эффектов. Решение, обеспечивающее необходимую точность операций через переход в представление с фиксированной точкой, оформлено в виде библиотеки EAPA (Erlang Arbitrary Precision Arithmetic), призванной удовлетворить потребности финансовых приложений, разрабатываемых на Erlang / Elixir.

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


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