Обновить
9

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

24
Подписчики
Отправить сообщение
А как делают бабло создатели опенсорсного ClamAV? Как я понимаю, скорее всего — за деньги добавляют вирусы в список исключений никак :)

По поводу второго пункта — есть множество вариантов. Например, при инфицировании выводить дружелюбное, хорошо видимое сообщение с описанием уязвимости, через которую робингуд проник на машину, возможной ссылкой на сайт проекта, и кнопкой «I don't care, opt out» для тех, кому это всё не нужно и кому плевать, что несмотря на все меры защиты, если пролез робингуд, то пролезет и что-то похуже.
Я протестую! Написание вирусов — это этап, через который проходит любой нормальный программист на ассемблере, потому что именно написание вирусов позволяет наглядно ознакомиться со всеми тонкостями внутренней организации исполняемых файлов, с тем, как работает динамический линковщик, понять, какие есть допуски у не совсем правильных заголовков и т.д. и т.п.

Делать вирусы — хорошо и правильно. Плохо делать вирусы, которые вредят окружающим.

P.S. вспомнил, что во времена серии уязвимостей в DCOM RPC были вирусы, которые патчили эту уязвимость при заражении компьютера, чтобы вирусы конкурентов не пролезли. Почему никто не сделает антивирус, распространяющийся вирусным путем? :)
И, кстати, если это важно — в OS X, несмотря на то, что .app выглядят, как файлы — это на самом деле директории со специфичной структурой внутри.
Ну, тогда делайте proof of concept malware :) Может, в таком случае зашевелятся.
Окей, ждем фиксов и рассказа о технических тонкостях. Спасибо.
Я, скорее, к тому — как вообще в OS X посмотреть содержимое архива, не извлекая его? Насколько мне известно, стандартный Archiver.app умеет только извлекать, а смотреть внутрь архивов — нет. QuickLook-плагинов для просмотра содержимого архивов тоже нет в стандартной поставке, нужно ставить что-то типа BetterZIP. Keka тоже распаковывает без предварительного просмотра.

Есть варианты с вызовом консольных архиваторов, но это врядли вектор атаки на обычного пользователя, т.к. я сильно сомневаюсь, что процедура «посмотреть содержимое архива в консоли, затем распаковать стандартным разархиватором» — это общепринятый воркфлоу.
Можно подробнее, как воспроизвести баг?
А почему вы не хотите привести пару-тройку из кучи фактов здесь, а не в личке? Ведь все, что нужно — это сказать, где есть несоответствие эксперимента и нынешних зашоренных теорий, и, по желанию, сделать верифицируемое предсказание в рамках другой теории. И все, больше ведь от вас никто не требует пока что совсем ничего.
Где почитать про веселую объяснительную?
#endif my_habra_entry

Тут-то compile error и брякнется.
«А хакеры идут разгружать машину с МФУ!»
В первую очередь — количеством ног. Оригинальный octocat:



Ну или более ранний, но не такой распространенный (из мультика Octocat Adventures):
Кстати, раз уж пошли делать такие предложения — кто-то уже предлагал возможность использовать любую бинарную функцию как инфиксный оператор? Т.е. чтобы x foo y было равноценно foo(x, y). Можно было бы писать всякие if (foo hasEffectOn bar) { ... }.

А там уже и до автоматического каррирования и вызова функций без скобок недалеко, надеюсь :)
Нужно больше фич из D! :)
Забыли hasOwnProperty.
Поэтому, товарищи, пишите тесты!
Еще в копилку хаков — a >>> 0 работает, как приведение числа к uint32_t:
12345 >>> 0 // 12345
-12345 >>> 0 // 4294954951
12345678901 >>> 0 // 3755744309
Работает лучше, чем a & 0xFFFFFFFF, из-за явной беззнаковости.
Приведение переменной к числу при помощи +"123" лучше, чем используя parseFloat/parseInt тем, что parse* для строки "123foobar" вернут 123, тогда как +"123foobar" вернет NaN.
Почему минусуют человека? Все правильно сказано же — дереференс необъявленной переменной, в коде типа age !== undefined, выбьет ReferenceError: age is not defined же. typeof age !== "undefined" лишен этого недостатка.

При проверке же свойств имеет смысл проверять напрямую — foo.bar != null, потому что свойства ReferenceError не выбрасывают.

Информация

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

Специализация

Архитектор программного обеспечения