Pull to refresh
3
0
Андрей Кузубов @klee0kai

Андроид разработчик

Send message

Рисуем эффект «Таноса» на Android (и не только)

Level of difficultyMedium
Reading time32 min
Views8.7K

Привет! Вопрос мобильным разработчикам: часто ли вам приходится работать с необычным UI? Если вы ответили утвердительно, то я по-доброму вам завидую. В своей повседневной практике мне в основном приходится работать со стандартным набором компонентов и их базовой настройкой. Абсолютно ничего не имею против, но хочется чего-то «эдакого»: кастомных компонентов, написанных с нуля, необычных анимаций и эффектов. Часто подобные вещи вызывают много споров (как среди разработчиков, так и конечных пользователей) а-ля «А на кой оно вообще надо», но лично для меня это ни что иное, как творчество. Кто-то красиво рисует, кто-то красиво поёт, а кто-то пишет красивые уникальные приложения, которыми интересно и приятно пользоваться. И мы, пожалуй, не можем обвинять авторов за бессмысленность «украшательств», как по-хорошему не можем судить художника за его работу.

К чему я – спросите вы. Я отвечу: настраиваю на нужный лад :) В рамках этой статьи мы коснёмся полезной темы и создадим что-то бесполезное в практическом смысле, но несомненно интересное и достаточно уникальное.

Уже интересно
Total votes 23: ↑23 and ↓0+23
Comments9

Заметки о Unix: исследование munmap() на нулевой странице и на свободном адресном пространстве

Reading time4 min
Views4.4K
Однажды на Fediverse мне попался интересный вопрос о munmap():

Чем именно занимается munmap() в Linux если адрес установлен в 0? В Linux подобный вызов каким-то образом срабатывает, а вот во FreeBSD — нет. Полагаю, что всё дело — в различной семантике команд, но не могу найти никаких пояснений по поводу такого поведения munmap().

(Там было ещё это дополнение, а тут находится краткая версия ответа)



Когда я увидел этот вопрос, то я реально удивился тому, что подобный вызов munmap() в Linux работоспособен, так как я ожидал, что он даст сбой на любом адресном пространстве, которое не входит в состав памяти, выделенной некоему процессу. Нулевая страница в Linux (да и в любой вменяемой системе), определённо, не входит в состав распределённой памяти. Поэтому предлагаю взглянуть на описание munmap() из документации SUS, выдержку из которого я привожу ниже.
Читать дальше →
Total votes 16: ↑14 and ↓2+22
Comments2

Принципы для разработки: KISS, DRY, YAGNI, BDUF, SOLID, APO и бритва Оккама

Reading time8 min
Views283K
image

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

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

Последовательное применение этих принципов упростит ваш переход от миддла к сеньору. Вы можете обнаружить, что некоторые (вероятно) вы применяете интуитивно.

Принципов много. Мы остановимся на семи самых важных. Их использование поможет вам в развитии и позволит стать лучшим программистом.

1. YAGNI

You Aren’t Gonna Need It / Вам это не понадобится

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

Этот принцип применим при рефакторинге. Если вы занимаетесь рефакторингом метода, класса или файла, не бойтесь удалять лишние методы. Даже если раньше они были полезны – теперь они не нужны.

Может наступить день, когда они снова понадобятся – тогда вы сможете воспользоваться git-репозиторием, чтобы воскресить их из мертвых.
Читать дальше →
Total votes 15: ↑12 and ↓3+16
Comments10

Безопасность iOS-приложений: гайд для новичков

Reading time18 min
Views17K

Привет! Меня зовут Гриша, я работаю application security инженером в компании Wrike и отвечаю за безопасность наших мобильных приложений. В этой статье я расскажу про основы безопасности iOS-приложений. Текст будет полезен, если вы только начинаете интересоваться безопасностью мобильных приложений под iOS и хотите разобраться, как все устроено изнутри.

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

Битсквоттинг сайта Windows.com

Reading time7 min
Views17K


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

Когда вы пытаетесь получить доступ к сайту по его домену, этот домен хранится в памяти вашего компьютера, устройства и т.д. в структуре, выглядящей примерно так:

01110111 01101001 01101110 01100100 01101111 01110111 01110011
w i n d o w s

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

01110111 01101000 01101110 01100100 01101111 01110111 01110011
w h n d o w s

О нет! Теперь в памяти хранится значение whndows.com, а не windows.com! Что же произойдёт, когда придёт время создания подключения к этому домену?

nslookup whndows.com

*** can’t find whndows.com: Non-existent domain

Домен не резолвится в IP-адрес!
Оказалось, что из 32 возможных доменных имён, находящихся в одной замене бита от windows.com, 14 имён были доступны для покупки! Это довольно редкий случай — обычно такие имена покупаются компаниями, например, Microsoft, чтобы предотвратить их использование в целях фишинга. Итак, я их купил. Все. Примерно за 126 долларов.
Читать дальше →
Total votes 52: ↑50 and ↓2+64
Comments30

Еще раз о регекспах, бэктрекинге и том, как можно положить на лопатки JVM двумя строками «безобидного» кода

Reading time6 min
Views12K

Раннее утро, десятая чашка кофе, безуспешные попытки понять почему ваше клиентское (или еще хуже – серверное) java-приложение намертво зависло при вычислении простого регекспа на небольшой строке… Если подобная ситуация уже возникала в вашей жизни, вы уже наверняка знаете про бэктрекинг и темную сторону регулярных выражений. Остальным – добро пожаловать под кат!

Читать далее
Total votes 28: ↑26 and ↓2+34
Comments8

Анализ HTTP-трафика с Mitmproxy

Reading time8 min
Views99K
mitmproxy

В практике веб-разработчика нередко возникают ситуации, когда требуется отследить и проанализировать трафик приложений, общающихся с сервером по протоколу HTTP (в качестве примера можно привести тестирование приложений для мобильных устройств или HTTP API).

Инструменты, традиционно используемые для прослушивания трафика (tshark, о котором мы уже писали, а также ngrep и tcpdump) для этой цели подходят плохо: функциональность для работы с протоколом HTTP у них ограничена.

Для анализа HTTP-трафика существует более специализированное, простое и эффективное решение. Знакомьтесь: mitmproxy. На русском языке подробных публикаций о нем почти нет. В этой статье мы поделимся своим опытом работы с mitmproxy и надеемся, что и вам он окажется полезным.
Читать дальше →
Total votes 39: ↑36 and ↓3+33
Comments24

Salt за 10 минут

Reading time8 min
Views68K
SaltStack — cистема управления конфигурациями и удалённого выполнения операций.
В данный момент изучаю данную систему и раз уж есть такая возможность решил попереводить статьи с официального сайта и повыкладывать здесь пока хватит энтузиазма. Т.к. у нас в организации используется в основном Red Hat и Centos, переводить буду части касающиеся этих операционных систем.

Данная статья представляет собой перевод официальной документации. Внизу страницы вы найдете ссылку на первоисточник на англ. языке.
Читать дальше →
Total votes 15: ↑12 and ↓3+9
Comments10

Старый DVD-привод превращается… в лазерный микроскоп

Reading time3 min
Views61K


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

Но для ненужного привода есть полезное применение. Например, из него можно смастерить лазерный микроскоп на Arduino (примечание: по факту требуется две лазерные головки, то есть два ненужных привода).

Это оптический микроскоп, который использует для сканирования образца сфокусированный лазерный луч.
Total votes 96: ↑92 and ↓4+125
Comments19

Я спарсил больше 1000 топовых Github-профилей по машинному обучению и вот что я узнал

Reading time7 min
Views16K


При поиске по ключевой фразе «машинное обучение» (речь идет об англоязычном ключе «machine learning» — прим. перев.) я нашел 246632 репозиториев по машинному обучению. Поскольку все они имеют отношение к этой отрасли, я ожидал, что их владельцы являются экспертами или хотя бы достаточно компетентны в машинном обучении. Поэтому я решил проанализировать профили этих пользователей и показать результаты анализа.
Читать дальше →
Total votes 22: ↑10 and ↓12+6
Comments14

Почему просто не запретить таргетированную рекламу?

Reading time8 min
Views29K


Практически каждый день мы слышим об утечках персональных данных. Браузеры и мобильные приложения собирают информацию о перемещениях и действиях пользователя, чтобы затем перепродать эти данные брокерам для профилирования, а потом — рекламодателям для таргетированной рекламы. То же самое делают интернет-провайдеры, банки, розничные магазины и все остальные, у кого есть доступ к большой базе пользователей. Именно так зарабатывают крупные интернет-компании, такие как Google и Facebook. Приложение для знакомств геев Grindr недавно продало данные о геолокации своих пользователей 35 разным покупателям. C Android-смартфонов координаты пользователя передаются более 300 раз в течение 24-часового периода, даже если пользователь отключил историю местоположений в настройках устройства.

Конечно, все собирают «анонимные» данные. Собирать и продавать эту информацию сегодня совершенно законно в России, США и в большинстве других стран мира. Но установить личность по истории перемещений легче, чем по ДНК. «Компании говорят, что данные передаются лишь проверенным партнёрам. Остаётся только верить на слово в такую корпоративную благотворительность», — пишет NY Times. Если сопоставить информацию из разных баз, то пользователей очень легко деанонимизировать. Достаточно посмотреть, где телефон остаётся на ночь и куда «приходит» на работу.

Как решить эту проблему?
Читать дальше →
Total votes 17: ↑15 and ↓2+19
Comments130

CVE-2019-18683: Эксплуатация уязвимости в подсистеме V4L2 ядра Linux

Reading time22 min
Views7.9K

В данной статье описана эксплуатация уязвимости CVE-2019-18683 в ядре Linux, которую я обнаружил и исправил в конце 2019 года. Указанный CVE-идентификатор присвоен нескольким аналогичным ошибкам типа «состояние гонки», которые присутствовали в подсистеме V4L2 ядра Linux на протяжении пяти лет. Пятнадцатого февраля я выступил с докладом по данной теме на конференции OffensiveCon 2020 (ссылка на презентацию).


Далее я детально объясню, как работает разработанный мной прототип эксплойта (PoC exploit) для микроархитектуры x86_64. Данный эксплойт выполняет локальное повышение привилегий из контекста ядерного потока, где отсутствует отображение пользовательского адресного пространства. В статье также показано, как эксплойт для Ubuntu Server 18.04 обходит следующие средства защиты: KASLR, SMEP и SMAP.


Начнем с демонстрации работы эксплойта.


Читать дальше →
Total votes 24: ↑24 and ↓0+24
Comments6

Старый конь борозды не испортит: как стилер Pony крадет данные и где их потом искать

Reading time8 min
Views4K

Если помните, недавно у нас выходила статья про молодой, но уже подающий надежды data stealer Loki. Тогда мы подробно рассмотрели этот экземпляр (версия 1.8), получили представление о работе бота и освоили инструмент, облегчающий реагирование на события, связанные с этим ВПО. Для более полного понимания ситуации, давайте разберем еще одно шпионское ПО и сравним исследованных ботов. Сегодня мы обратим внимание на Pony более старый, но не менее популярный экземпляр data stealer’а. Никита Карпов, аналитик CERT-GIB, расскажет, как бот проникает на компьютер жертвы и как вычислить похищенные данные, когда заражение уже произошло.

Читать дальше
Rating0
Comments0

Анализ SSL/TLS трафика в Wireshark

Reading time7 min
Views220K


Как скрыть от посторонних конфиденциальную информацию?
Самое простое – зашифровать.
В Интернет и Интранет-сетях шифрацией данных управляет протокол SSL/TLS.
Солдат спит, служба идет.
Однако иногда возникает необходимость выполнить обратное – расшифровать перехваченный трафик.
Это может потребоваться как для отладки работы приложений, так и для проверки подозрительной сетевой активности.
Или в целях изучения работы SSL/TLS (очевидные, вредоносные цели не обсуждаются).

Как и при каких условиях можно расшифровать дамп SSL/TLS трафика в Wireshark?
Попробуем разобраться.

Читать дальше →
Total votes 48: ↑45 and ↓3+42
Comments16

EDR: откуда взялся и почему это очередной виток защиты от хакеров

Reading time7 min
Views39K


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

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

Все изменила сеть…

Предпосылки возникновения EDR


Очень долго, компьютерные вирусы были чрезвычайно специфическими программами. Им приходилось выживать в очень стесненных условиях слабых компьютеров с ограниченными ресурсами, авторы вирусов были гуру Ассемблера, досконально знали все тонкости работы компьютеров на низком уровне. Но компьютеры становились мощнее, их связала сеть и все это запахло большими деньгами. Взлом был поставлен на поток, теперь это серьезный и крупный бизнес, уязвимости продают за огромные деньги, основной трафик компьютерных сетей — DDoS. Таким же крупным бизнесом стала и защита от атак. Прошли те времена, когда антивирусные программы покупались на дискетах и защищали только один компьютер. Даже сами понятия “вирус” и “антивирус” уже устаревают, целью атак становятся целые организации, а занимаются этим уже не одиночки-энтузиасты.
Читать дальше →
Total votes 19: ↑17 and ↓2+28
Comments6

Тонкое искусство запросов, или как вежливо обратиться с просьбой на английском

Reading time6 min
Views21K

Все мы в работе часто сталкиваемся с необходимостью обратиться к кому-то за помощью. В английском языке разницу между вежливой просьбой и требованием что-то сделать бывает сложно уловить, поскольку здесь действуют устоявшиеся правила, основанные больше на обычаях и общепринятых нормах, чем на логике. Тем не менее, очень важно чувствовать эту разницу. Неправильным обращением мы можем не только не добиться желаемого результата, но и обидеть собеседника. Как вы, наверное, уже знаете, в английском языке, в отличие от многих других, просто добавить "please" недостаточно. Наш коллега Scott Boyce, EPAM Language Trainer, рассмотрел несколько способов написания запросов на английском и разобрал распространённые ошибки. 

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

Read more
Total votes 9: ↑8 and ↓1+8
Comments13

GHIDRA vs. IDA Pro

Reading time12 min
Views51K


Приветствую,


Думаю, пришла пора. Наболело/накипело/есть мнение. С выходом Гидры ситуация с инструментарием для реверс-инженеров достаточно сильно изменилась. Если раньше выбора чем пользоваться особо не было (здесь не будут упоминаться Binary Ninja, Hopper, JEB или Radare2, потому как в известных мне ИБ-компаниях и комьюнити ими пользуется очень малое количество человек, либо же порог вхождения в некоторые (привет, Радар) очень высок, либо же покрытие архитектур ограничено лишь x86/x64/ARM/ARM64/MIPS), то теперь мы имеем очень мощного конкурента Hex-Rays в лице АНБ с их GHIDRA.

Читать дальше →
Total votes 31: ↑31 and ↓0+31
Comments36

Обезвреживаем бомбу с Radare2

Reading time12 min
Views61K

Доброго времени суток, %username%! Сегодня мы отправимся изучать бесчисленные возможности фреймворка для реверсера — radare2. В виде подопытного я взял первую попавшую бомбу, она оказалась с сайта Университета Карнеги Меллон.
Читать дальше →
Total votes 51: ↑50 and ↓1+49
Comments28

Мультимедиа прошлого: как слушали музыку в MS-DOS

Reading time4 min
Views16K

Всего каких-то 26 лет назад прослушивать музыку на компьютере было не таким уж и простым делом. Еще до появления Windows 95, смело заявляющей о своей мультимедийности, люди слушали музыку прямо в среде MS-DOS. Причем не только трекерную, но и MP3. Стряхнем пыль со старого софта и погрузимся в чудесный мир музыки начала 90-х.

Для начала вспомним о популярных музыкальных форматах и оборудовании тех годов. В основном это были поздние 486DX и пришедшие им на смену Пентиумы с тактовой частотой от 60 до 133 МГц. Технология MMX (MultiMedia eXtensions), ускоряющая декодирование аудио- и видеопотоков, появилась лишь в 1997 году. Меломанам 1994 года приходилось довольствоваться тем что есть.
Total votes 36: ↑33 and ↓3+47
Comments166

25 лучших репозиториев GitHub для разработчиков Python

Reading time3 min
Views26K
Согласно опросу разработчиков на StackOverflow в 2020 году*, Python — один из самых любимых языков в мире. Что еще более интересно, Python — это язык, который разработчики больше всего хотят попробовать в своей работе. Если вы один из тех, кто использует Python и хочет прокачать свои знания, или один из тех, кто хочет изучить Python, вы попали в нужное место. Под катом 25 лучших репозиториев Python на GitHub.

Читать дальше →
Total votes 9: ↑7 and ↓2+7
Comments4

Information

Rating
Does not participate
Location
Россия
Registered
Activity