Группа Lazarus атакует Python-разработчиков с помощью фейковых тестовых заданий
Аналитики ReversingLabs предупреждают, что участники северокорейской хак-группы Lazarus выдают себя за рекрутеров и предлага…
Аналитики ReversingLabs предупреждают, что участники северокорейской хак-группы Lazarus выдают себя за рекрутеров и предлага…
Разработчики GitHub представили новую ИИ-функцию, позволяющую ускорить исправление уязвимостей во время написания кода. Пока…
Если ты пентестер, знаток C++ или Scala-разработчик, обрати внимание: вместе с «Ростелеком-Солар» мы предлагаем твоему вниманию одну из трех вакансий. А чтобы лучше познакомиться с будущим работодателем, мы расспросили руководителей о работе в компании и связанных с ней интересных моментах.
Говорят, iOS невероятно закрытая система: ни написать свою программу без лицензии разработчика, ни заставить iPhone или iPad делать что-то, что не одобряют в Apple. Сегодня я познакомлю тебя с Pyto — интерпретатором Python для iOS, который позволяет творить... если не чудеса, то как минимум многие вещи, которые раньше считались невозможными без джейлбрейка.
В этой статье я покажу тебе, как использовать статический анализатор кода для отлова багов в программе. Использовать мы будем PVS-Studio, и на живом проекте посмотрим, на какие ошибки он пожалуется, и в каких случаях выручит.
Сегодня мы с тобой научимся находить любые типы циклов в коде реальных программ на языках высокого уровня — построенных с оптимизацией и без нее. Это один из шагов, с которым ты столкнешься при обратной разработке чужих приложений.
В сегодняшней статье мы изучим все типы циклов, которые могут встретиться в языках программирования высокого уровня. Увидим, какие способы есть у компилятора для отражения их в двоичном виде. Разберем плюсы и минусы каждого. Кроме того, мы узнаем, как перемалывают циклы различные трансляторы и что получается на выходе у оптимизирующих и неоптимизирующих компиляторов.
В этой статье мы изучим оператор выбора switch. Давай разберемся, какие формы он может принять в двоичном коде, как разные компиляторы транслируют его и как его найти в дизассемблированном коде по характерным признакам.
Сегодня тебя ждет масса практических примеров — дизассемблированных листингов, на которых мы будем изучать представление условных переходов различными компиляторами. Таким образом, ты узнаешь, как ветвление используется в современных программах и как за ним следить при обратной разработке.
Работая в терминале, мы управляем сценариями PowerShell с помощью параметров, которые указываются в командной строке при их вызове. Если с нашим сценарием будут работать обычные пользователи, то, добавив к нему простой графический интерфейс, можно избавить их от необходимости вводить названия параметров. О том, как приделать GUI к сценариям PowerShell, я сейчас расскажу.
В интернете есть множество сервисов, с которыми можно работать, обращаясь к их ресурсам по протоколу HTTP. Веб-разработчики постоянно работают с такими HTTP-запросами для доступа к функциям внешних API или для тестирования собственных приложений. PowerShell тоже предлагает встроенные методы для обращения к вебу. О них мы и поговорим.
Некоторые уязвимости возникают из-за ошибок с управлением памятью, выделенной на куче. Механизм эксплуатации этих уязвимостей сложнее, чем обычное переполнение на стеке, поэтому не все умеют с ними работать. Даже курс Cracking the perimeter (OSCE) не заходил дальше тривиальной перезаписи SEH. В этой статье я расскажу и на практике покажу механику работы кучи.
Играть в игры любят все, но это гораздо интереснее, когда у тебя имеется нескончаемый запас патронов и здоровья. Чтобы обзавестись и тем и другим, можно погуглить читы и трейнеры для твоей любимой игры. Но как быть, если их еще не разработали? Написать самому! Обладая навыками реверс-инжиниринга и программирования, сделать это намного проще, чем кажется.
Терминал на протяжении многих лет не утратил актуальность. Существует множество ресурсов, рассказывающих про внутреннюю кухню терминалов, но довольно поверхностно. Я постарался перекинуть мост через этот овраг и написал введение в использование эмулятора терминала в качестве платформы для разработки.
В этой статье я расскажу о том, как создать простое приложение — заготовку панели инструментов для рабочего стола Windows. По ходу дела мы вспомним Win32 API, разберемся, как его использовать на языке ассемблера, и познакомимся с Flat Assembler, который станет для нас основным инструментом разработки.
В этой статье мы реализуем простой, но крайне полезный проект на Python — бота для Telegram. Боты — это небольшие скрипты, которые могут взаимодействовать с API, чтобы получать сообщения от пользователя и отправлять информацию в разные чаты и каналы.
Сегодня мы поработаем с файловой системой ОС, освоим могущественные заклинания под названием «регулярные выражения», изучим тонкости создания и вызова функций и под конец напишем простенький сканер SQL-уязвимостей. И всё это в одном недлинном уроке!
Если спросить матерого кодера, в чем причина его неприязни к новичкам, то, скорее всего, он сошлется на нежелание сталкиваться в работе с неучами и «вкатывальщиками». А также с плодами их труда, которые, конечно, придется переписать заново. Я сейчас попробую объяснить, почему это все полная ерунда.
Есть целый пласт программ, уязвимости и неправильные настройки которых могут обернуться бедой для компании. Для пентестера знание их багов — путь к успешной эксплуатации, для админа — возможность выстроить более надежную защиту. В этой статье я рассмотрю уязвимости в Jira, Confluence, Asana, Docker, GitLab и подобных продуктах.
Когда читаешь дискуссии между сторонниками и противниками автоматического управления памятью, может сложиться впечатление, будто это какая-то единая технология, одинаково реализованная во всех языках программирования. В этой статье мы поговорим о сборке мусора — наиболее распространенном механизме управления памятью.
Kotlin — один из самых грамотно спроектированных, понятных и логичных языков последних лет. На Kotlin можно начать создавать приложения для Android, не изучая язык, но достигнуть мастерства одной лишь практикой вряд ли получится. Эта статья — сборник советов, которые помогут лучше понять особенности языка и программировать более эффективно.
Многие пользователи Linux предпочитают устанавливать программы из репозиториев с помощью встроенного менеджера пакетов. Однако разработчики, очевидно, не могут включить в репозитории все программы в мире, поэтому иногда удобнее всего обойтись без установки вообще. В этой статье я расскажу, почему это возможно и как это реализовать.
Работать в Data Science, как ты мог слышать, – престижно и денежно. В этой статье я познакомлю тебя с азами языка R, который используют в «науке о данных». Конструируя программу, ты увидишь, как сухая скучная математика может быть вполне наглядной и полезной, и сможешь понять ее, даже если никогда не сталкивался ни с чем подобным.
Надоели постоянные обрывы связи и косяки провайдера, но субъективные оценки типа «подвисает» не внушают доверия, лучший выбор — записать состояние сети в автоматическом режиме. Сегодня мы напишем утилиту, которая легко настраивается и сохраняет в журнал RTT до заданных хостов, packet loss и скорость соединения (опционально), а логи летят прямо в Telegram.
Я люблю собирать логические схемы. Однако обычно для этого требуется либо симулятор, либо макетная плата. Как-то в дороге у меня был с собой ноутбук с компилятором, но не было интернета. Задача написать небольшую программу с библиотекой цифровых вентилей показалась мне слишком тривиальной. Хм-м, как насчет метапрограммы?
Python за последнее десятилетие набрал огромную популярность и не сдает своих позиций — его применение и для обучения программированию, и для разработки приложений только растет. Не каждый язык может похвастаться популярностью в таких разных отраслях, как веб-разработка, DevOps, научные вычисления и машинное обучение.
Исследование алгоритма работы программ, написанных на языках высокого уровня, традиционно начинается с реконструкции ключевых структур исходного языка — функций, локальных и глобальных переменных, ветвлений, циклов и так далее. Это делает дизассемблированный листинг более наглядным и значительно упрощает его анализ.
Ряд языков программирования заявляют неизменяемость переменных (immutability) как одну из своих главных фич. Среди них семейство ML (OCaml, F#, Standard ML) и Haskell, а также молодые Clojure и Rust. Если ты незнаком с ними, то наверняка удивлялся: а чем это отличается от const в C и C++? Давай разложим все по полочкам.
В этом году анонсирован последний выпуск Python 2.7, после чего Python Software Foundation перестанет поддерживать ветку 2.7. Множество популярных библиотек и фреймворков тоже прекращают официальную поддержку Python 2, а целый ряд дистрибутивов Linux уже не включают его в набор пакетов по умолчанию.
Управлять квадрокоптером — это целое искусство, но писать программы, которые позволяют ему летать в автономном режиме, — дело не менее захватывающее. В этой статье я расскажу о том, как создать программу на Python, которая будет вести беспилотник, и покажу, как протестировать ее в симуляторе.
Мастерить свои электронные устройства — занятие, может быть, и не очень практичное, но увлекательное и познавательное. В этой статье я расскажу, как я создал собственный музыкальный плеер. Конечно, не iPod nano (и даже не mini), но зато с разным железом — SD-картой, кодеком, экраном и клавиатурой.
Два года назад разработчики стриминговой платформы Twitch представили новый способ взаимодействия стримеров и зрителей — Twitch Extensions. Эта система позволяет разработчикам дополнять и улучшать интерфейс как сайта, так и мобильного приложения, создавая различные интерактивные элементы. Я расскажу, как работают эти расширения и как при желании создать свое.
Forth применяют в самых разных областях, включая чипсеты PCI и космические аппараты, а Павел Дуров будет использовать схожий язык в смарт-контрактах криптовалюты TON. Не претерпев больших изменений, один из старейших языков программирования позволяет воплотить многие современные парадигмы. Так что же такое этот загадочный Forth?
Когда количество строчек кода в твоих программах исчисляется миллионами, поиск ошибок осложняется тысячекратно. К счастью, сегодня есть возможность автоматизировать тестирование с помощью фаззеров. Как они работают, почему их стоит применять и на что они способны — об этом ты узнаешь в сегодняшней статье.
Абстракция — основа программирования. Многие вещи мы используем, не задумываясь об их внутреннем устройстве, и они отлично работают. Всем известно, что пользовательские программы взаимодействуют с ядром через системные вызовы, но задумывался ли ты, как это происходит на твоей машине?
Боевые кейлоггеры с кучей функций и защитой от детекта могут стоить десятки, если не сотни долларов. Но кейлоггер не такая уж сложная штука, и при желании ты можешь сделать собственный и даже избежать детекта антивирусами. В этой статье я покажу, как это делается, а заодно поупражняемся в разработке программ на C#.
В C++ существует такое понятие, как динамическая идентификация типа данных (RTTI). Это механизм, который позволяет определить тип переменной или объекта на этапе выполнения программы. Чтобы уменьшить исполняемый файл, во многих проектах RTTI отключают, от этого перестают работать dynamic_cast и typeid. Но способ проверить, порожден ли инстанс объекта от какого-то базового класса, все же есть.
Статически типизированные языки обычно вынуждают писать типы переменных по любому поводу. Но уже далеко не всегда: теория и практика языков программирования значительно ушли вперед, просто эти достижения не сразу принимаются индустрией. Сегодня мы рассмотрим язык OCaml и увидим, что статическая типизация необязательно связана с неудобствами.
Лучше всего познавать язык на реальном проекте, поэтому, когда я решил поэкспериментировать с адой, я поставил себе реальную и интересную задачу: написать утилиту для детекта работы в гипервизоре. Это само по себе занятно, а новый язык программирования позволит вывести развлечение на новый уровень.
В Минэкономики предложили создать в России собственное хранилище открытого кода, выделив на этот аналог GitHub более двух ми…