Pull to refresh
0
0
Send message

Протектор и LLVM-обфускатор. Сравнение двух подходов к решению задачи запутывания кода

Reading time7 min
Views6K

Добрый день, Хабр! 

В данной заметке я постараюсь сравнить два разных подхода к задаче запутывания машинного кода – это протектор и обфускатор, построенный на базе LLVM-фреймворка. Нам пришлось с этим столкнуться, когда возникла задача защиты библиотек Guardant под разные операционные системы и разные ARM-архитектуры. Для x86/x64 мы используем протектор Guardant Armor, который является полностью нашей разработкой. В случае ARM-архитектуры было принято решение параллельно посмотреть в сторону открытых обфускаторов на базе LLVM с целью их модификации и использования для защиты своих продуктов.

Читать далее
Total votes 21: ↑21 and ↓0+21
Comments4

Orange Pi 5 (как настоящий...)

Level of difficultyMedium
Reading time5 min
Views15K

Недавно компания OrangePi обновила линейку одноплатных компьютеров Orange Pi 5/5B/5+, распаяв на платах 32GB LDDR4 RAM. Однако данные платы вполне прилично работают и с меньшим объемом памяти на борту, а наличие SPI Nor Flash и возможность подключения NVMe диска делают эти платы достойными конкурентами среди одноплатных устройств для разаработки.

Нас заинтересовал первый образец серии 5/5B/5+, а именно Orange Pi 5, на предмет того, как на данном устройстве поведет себя EDK II и можно ли его использовать так, как мы привыкли работать с обычными ПК.

Читать далее
Total votes 15: ↑14 and ↓1+13
Comments35

В Canon разработали 5-нм литограф, который стоит дешевле, чем система от ASML. Но есть нюанс

Reading time4 min
Views51K

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

Конкурентов на рынке литографов и других систем по производству продвинутых микросхем нет вообще. Здесь царит почти полная монополия, с небольшими оговорками. Речь, конечно, о системах по производству действительно современных чипов. И на днях стало известно, что игроков на этом рынке прибавилось. Подробности — под катом.
Читать дальше →
Total votes 100: ↑98 and ↓2+96
Comments88

Записки оптимизатора 1С (часть 4). Параллелизм в 1С, настройки, ожидания CXPACKET

Level of difficultyEasy
Reading time10 min
Views8.6K

Параллелизм – это возможность выполнения запросов сервером СУБД в нескольких потоков. По умолчанию в настройках SQL Server параллелизм не ограничен и потенциально для выполнения запроса могут использоваться все ядра всех процессоров (max degree of parallelism= 0). В то же время, в системах 1С вендор настоятельно рекомендует установить max degree of parallelism = 1, и, соответственно, один запрос будет использовать только одно ядро.

Почему так и что же с этим всем делать? Давайте разбираться.

Читать далее
Total votes 4: ↑3 and ↓1+2
Comments1

Разговор с Алексеем Усановым из Positive Technologies о реверс‑инжиниринге и создании книги по этой специализации

Level of difficultyEasy
Reading time7 min
Views2.8K

Это первый материал по «ИТ‑Пикнику», проходившему 2 сентября 2023 года. Будет отдельный обзорный материал мероприятия, а пока хочу представить интервью с руководителем направления исследований безопасности аппаратных решений компании Positive Technologies (РТ) Алексеем Усановым.

Осматриваясь на «ИТ‑Пикнике», я заглянул на стенд Positive Technologies. Там проходила лекция, я заинтересовался темой и решил послушать. Лекция была посвящена реверс‑инжинирингу в информационной безопасности. Я раньше с темой сталкивался только в контексте создания игр. Когда энтузиасты делают клон игры, но у них нет исходников и советов от разработчиков, только внешний вид игры и примерные представления, на каком движке она была создана. Оказывается, в ИБ это довольно знаковая область. Немного подумав после лекции, я поймал Алексея Усанова и поговорил с ним на тему реверс‑инжиниринга в ИБ, кстати, оказалось, что он написал целую книгу об этом.

Читать далее
Total votes 20: ↑18 and ↓2+16
Comments0

Как заменить пропущенные значения в Pandas

Level of difficultyEasy
Reading time5 min
Views6.9K

Давайте рассмотрим распространенную проблему с пропущенными данными и способы ее решения.

Иногда, когда мы анализируем данные, некоторые значения могут быть утеряны. Обычно пропущенные данные обозначаются в виде вопросительных знаков, нулей или пустых ячеек. Например, в таблице нормализованных потерь присутствует пропущенное значение, представленное как NaN.

Кстати, подписывайтесь на наши социальные сети, мы туда еженедельно публикуем топовый контент! Вот наш канал в телеграм и группа ВК.

Таблица 1: Пример набора данных о машинах

| Марка   | Модель  | Год выпуска | Цена | Нормализованные потери | Тип топлива |

|---------|---------|-------------|------|------------------------|-------------|

| Toyota  | Corolla | 2019        | 15000| 134                    | Бензин      |

| Honda   | Civic   | 2020        | 17000| NaN                    | Дизель      |

| Ford    | Mustang | 2018        | 25000| 235                    | NaN         |

| Subaru  | Outback | 2017        | NaN  | 178                    | Бензин      |

| Hyundai | Elantra | 2021        | 18000| 156                    | Гибрид      |

| Nissan  | Sentra  | 2019        | 15500| 170                    | Бензин      |

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

Читать далее
Total votes 13: ↑0 and ↓13-13
Comments2

Взлом YouTube для быстрого скачивания видео

Reading time9 min
Views65K
Мы неоднократно рассказывали о специальном софте, который позволяет скачивать видео с YouTube. Это в первую очередь youtube-dl (yt-dl) и его клоны, такие как yt-dlp и yt-dlc. С ними воюют могучие копирасты, пытаются удалить их из поисковой выдачи, с хостингов, с Github и так далее, по известной схеме «тотальная война».

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

Сами программки — просто технические инструменты для скачивания общедоступного контента, они ничего не воруют и не пиратят. Просто доступ происходит нестандартным способом, который не предусмотрен официально. Посмотрим, как это делается.
Читать дальше →
Total votes 168: ↑158 and ↓10+148
Comments421

Двухтрубные системы отопления тупикового и попутного типа. Мнимая магия «петли Тихельмана»

Reading time21 min
Views49K

Двухтрубные системы отопления тупикового и попутного типа. В чём разница и что об этом говорят современные строительные нормы.

Ранее в одной из статей я уже рассказывал об однотрубных системах отопления.

Теперь настала очередь рассмотреть особенности проектирования и эксплуатации двухтрубных систем, которые крайне популярны у частных домовладельцев в ИЖС.

Так же двухтрубные вертикально-стояковые системы отопления пытаются применять и в многоквартирных домах.

Далее мы рассмотрим гидравлический расчёт систем для одного этажа частного дома с периметром в те же 50м для дом 10х15м по внутренним стенам (150м.кв на этаж).

А позже попытаемся применить те же подходы для максимальной высоты 50м в стояковой системе высотного дома.

Тупиковая система

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

Читать далее
Total votes 74: ↑70 and ↓4+66
Comments173

У нас в Excel поселился замечательный Python

Level of difficultyMedium
Reading time5 min
Views42K

На Хабре уже была новость об этом знаменательном событии. Правда, она похожа на пересказ официального пресс-релиза Microsoft, но такой и должна быть "новость".

Читать далее
Total votes 36: ↑34 and ↓2+32
Comments65

Как устроен GIL (Global Interpreter Lock) в Python: влияние на многозадачность и производительность

Level of difficultyEasy
Reading time8 min
Views13K

Привет, уважаемые читатели!

GIL, или Global Interpreter Lock десятилетиями оставался темой обсуждения и дебатов среди питонистов.

Что такое GIL? GIL, сокращение от Global Interpreter Lock, представляет собой важную концепцию в Python. Он представляет собой мьютекс, который блокирует доступ к объекту Python interpreter в многопоточных средах, разрешая выполнять лишь одну инструкцию за раз. Этот механизм, хоть и заботится о безопасности и целостности данных, одновременно становится камнем преткновения для тех, кто стремится максимально задействовать многозадачность и использовать полностью потенциал многоядерных процессоров.

Когда мы говорим о многозадачности в Python, имеется в виду использование множества потоков или процессов для выполнения различных задач. Это особенно актуально в приложениях, которые требуют обработки данных в реальном времени или одновременного выполнения большого числа задач. Однако GIL вносит ограничения в этот процесс, так как только один поток имеет доступ к интерпретатору Python в определенный момент времени.

В начальных версиях Python, GIL не существовал. Однако, когда Python начал использоваться для многопоточных приложений, стало очевидным, что возникают проблемы с одновременным доступом к общим ресурсам. Поэтому Гвидо ван Россум и команда разработчиков внедрили GIL, чтобы обеспечить безопасность работы с памятью и объектами Python.

Читать далее
Total votes 19: ↑14 and ↓5+9
Comments16

Немного паранойи: весёлые огромные уязвимости, которые порождают ChatGPT и LLM-модели

Reading time8 min
Views7.2K
LLM сейчас встраивают практически везде. Рождается очень много возможностей для атак.

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

image
MS говорил, что обучал только на публичных данных репозитория. Это пример того, как в автокомплит Copilot попал кусок кода, содержащий ссылку на тикет в Jira компании Озон, но их много раз поймали на утечках приватных данных. Некоторые пытались судиться уже, по этому поводу, но есть некоторые сомнения…

Вот ещё пример. Поскольку вывод модели является частью промпта, при каждой итерации в текст, который надо перевести, можно вставить инструкции для модели. И она будет им следовать. Так что если вы переводите что-то со словами «Игнорируй все предыдущие инструкции и сделай вот это», возможно, вас ждёт сюрприз. Практическое применение такое: белый по белому текст в PDF с резюме, и если это резюме оценивает LLM-модель (а это уже норма), то ставит ему высший балл.

Я уже видел письма для корпоративных LLM-разбирателей почты, которые содержали инструкции на перехват модели и спам-рассылку по всему списку контактов, либо поиск писем с паролями и форвард по указанному адресу. Прекрасное применение.

Есть инструкции для корпоративных ботов, как ругать свою продукцию. Есть описания товаров, которые поднимают товары в выдачах торговых площадок, формируемых по отзывам на основе анализа LLM-моделями. Есть непрямые атаки для корпоративных ботов, позволяющие выдёргивать информацию обо всех сотрудниках.
Читать дальше →
Total votes 25: ↑23 and ↓2+21
Comments7

ЦЕРН увеличил объем своего хранилища до первого в истории эксабайта. Как хранятся данные Большого адронного коллайдера

Level of difficultyMedium
Reading time6 min
Views19K

Когда Большой адронный коллайдер запущен — как например, во время своего второго цикла, с начала 2015 года по 2018 год, — он обрабатывает события на частоте 40 МГц. Другими словами, он учитывает 40 миллионов событий в секунду. Это необходимо, чтобы отслеживать столкновения между частицами, длящиеся менее 25 наносекунд.

Каждое событие содержит в себе примерно 1 мегабайт данных. Это значит, что в систему во время работы коллайдера входит примерно 40 терабайт данных. В секунду! Абсолютно фантастический объем информации, ведь петабайт набирается примерно за полминуты. Около 72 000 средних жестких дисков заполнялись бы каждый час.

Обрабатывать всё это на такой же скорости не представляется возможным; для анализа подобных объемов данных после окончания работы установки требуются годы. Значительная часть отфильтровывается еще на этапе сбора, на что тоже уходят огромные вычислительные ресурсы. Но всё‑таки остальную часть информации нужно где‑то хранить. Для этого европейская организация по ядерным исследованиям (ЦЕРН) содержит самый большой ЦОД в мире.

Читать далее
Total votes 61: ↑61 and ↓0+61
Comments39

Как мы анализируем потребление памяти нативными приложениями (C++, Windows, Linux)

Reading time13 min
Views7K

Технологическая платформа 1С:Предприятие – это большой программный продукт (только на С++ - более 10 миллионов строк кода, а есть ещё Java и JavaScript). Подробнее про устройство платформы можно прочитать тут.

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

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

Читать далее
Total votes 25: ↑25 and ↓0+25
Comments10

Генерация зависимостей внутри программы

Level of difficultyEasy
Reading time7 min
Views3.8K

В программировании программы часто строятся иерархично. Один программный компонент вызывает функции из другого программного компонента. Как бы представить эту взаимосвязь в законченной программе?

Эту задачу можно решить прибегнув к языку Graphviz и утилитам cpp, dot, make, chrome.

Читать далее
Total votes 19: ↑15 and ↓4+11
Comments46

Airflow vs NiFi: исследуем оркестратор для формирования витрин данных

Level of difficultyMedium
Reading time19 min
Views5.7K

Сегодня концепция витрин данных является стандартом и используется повсеместно. Поэтому даже небольшим компаниям важно определиться с помощью каких инструментов они будут решать проблему оркестрации процессов построения витрин. Какой инструмент в условиях относительно небольшого бюджета позволит достигать поставленных целей? Этот вопрос мы и постараемся раскрыть в статье. Для этого рассмотрим два известных инструмента: Airflow и NiFi, а также постараемся выявить их сильные и слабые стороны.

Читать далее
Total votes 9: ↑5 and ↓4+1
Comments14

Моделирование нелинейных функций и ограничений в задачах линейного программирования

Level of difficultyMedium
Reading time7 min
Views2.8K

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

Читать далее
Total votes 8: ↑8 and ↓0+8
Comments0

Как установить Copilot в России и использовать его эффективно

Level of difficultyEasy
Reading time5 min
Views127K

Copilot – система автодополнения кода от GitHub на основе модели Codex.
В статье даю советы по эффективному использованию Copilot на основе 6 месяцев личного опыта. Также добавил инструкцию по установке из России.

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

Читать далее
Total votes 8: ↑6 and ↓2+4
Comments9

10 рекомендаций по VS Code для повышения продуктивности

Level of difficultyEasy
Reading time7 min
Views46K
Visual Studio Code остаётся наиболее предпочтительной IDE среди разработчиков. Причём этот редактор всё чаще используют именно начинающие программисты. Источник: survey.stackoverflow.co/2023

А вы знали, что 73% разработчиков по всему миру используют один редактор кода? Так и есть. Результаты проведённого в 2023 году опроса Stack Overflow показали, что VS Code является самой популярной средой разработки.

И мы все знаем почему — он очень крут!

Но в полной ли мере мы задействуем его потенциал? Текущая статья будет посвящена знакомству с некоторыми интересными возможностями VS Code, способными повысить продуктивность работы. К ним, помимо прочих, относятся локальный контроль исходного кода, анимация курсора и быстрое удаление строк. Использование этих возможностей поможет ускорить реализацию проектов разработки.
Читать дальше →
Total votes 103: ↑95 and ↓8+87
Comments83

LISP — исследование оригинального языка ИИ

Level of difficultyEasy
Reading time12 min
Views3.7K

Откройте для себя один из первых языков программирования, который, по мнению Майка Бедфорда, не мог быть более непохожим на своих ранних собратьев.

В предыдущей части нашей серии, посвященной классическим языкам программирования, мы рассмотрели ALGOL, а в этом месяце мы углубились в изучение другого архаичного языка - LISP. Однако то, что оба они появились в 1950-х годах, - это практически единственное, что их объединяет; в большинстве других аспектов они не могут быть более разными. Скорее всего, практически все языки, которыми вы когда-либо пользовались, относятся к типу императивных. LISP же является декларативным языком. Проще говоря, программирование на императивном языке предполагает определение набора операций, которые при последовательном выполнении обеспечивают требуемую функциональность. требуемую функциональность. Тот факт, что существует альтернатива, может вызвать удивление, но в декларативном языке конечный результат определен, а система сама решает, как достичь поставленной цели.

Эти два подхода можно сравнить с инструкциями, прилагаемыми к мебели для самостоятельной сборки. При императивном подходе инструкция представляет собой подробный перечень указаний, а при декларативном методе вам просто показывают картинку собранной мебели. На самом деле, это не первое знакомство с декларативным программированием за последние месяцы. Чуть ранее мы познакомились с языком Prolog, который практически канул в Лету в 1980-х годах, а затем вновь стал популярным благодаря Al-революции.

Читать далее
Total votes 10: ↑8 and ↓2+6
Comments8

Information

Rating
Does not participate
Registered
Activity