Рубрика «android» - 2

Я юрист. Я не должен был знать слово adjustResize. Сейчас оно мне снится. Это история про три недели борьбы с Android-клавиатурой в WebView, про MutationObserver, который я призвал и пожалел, и про то, как настоящее решение оказалось не там, где я искал. Если у вас в приложении WebView и формы с инпутами — возможно, я сэкономлю вам неделю.


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

Всё начиналось по приколу. Недавно в сети поднялась шумиха вокруг уязвимости VLESS-клиентов: оказалось, что даже при использовании сплит-туннелирования (когда VPN включен только для избранных приложений), любое "шпионское" приложение на телефоне может узнать IP-адрес вашего VPN-сервера.

Уязвимость была тривиальной - ядро клиента открывает локальный SOCKS-прокси, который никак не защищен. Любая софтина на устройстве может постучаться в этот локальный порт и отправить пакет наружу. Ради академического интереса я написал Android-приложение TeapodStream, под капотом которого связал xray-core и tun2socksЧитать полностью »

Что можно найти снаружи, не имея доступа к серверу

1. Что такое конфигурационный аудит

Анализ публично доступных HTTP-ответов и DNS-записей без аутентификации и активного вмешательства. Проверке подвергается только внешняя конфигурация: HTTP-заголовки, TLS/SSL, DNS, открытые порты.

Уязвимости не эксплуатируются, нагрузки на сервер нет.

2. Инструменты

curl — ответ HTTP сервера.
openssl s_client — проверка TLS-соединения.
dig — чтение DNS-записей домена.
/dev/tcp — выявление открытых портов без nmap

Всё это доступно на android через Termux, без root.

3. Объект и метод

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

Предисловие

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

Внутри системы я разработал:

  • Поисковая система, включающая в себя голосовой поиск, поиск по фото и поиск по обычному тексту.

  • Мессенджер с двумя ботами: первый общается с поисковиком, а второй — с микроконтроллером (см. IoT технологии).

Технологии

Этот блок я разделил на 3 части:

  • технологии приложений,

  • серверные технологии,

  • IoT технологии для микроконтроллера.

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

Я разрабатываю PWA для голосовой практики английского. Несколько раз пытался опубликовать его в RuStore через Trusted Web Activity (TWA) — Google-обёртку, которая упаковывает PWA в подписанный Android AAB. После четырёх отказов модерации я понял, что для моего класса приложений TWA в RuStore не работает, и за день переключился на Telegram Mini App.

Эта статья — не история стартапа, а разбор технических решений:

  • Чем отличаются PWABuilder и Bubblewrap CLI при сборке TWA, и почему второй надёжнее

  • Какие конкретно изменения нужны в Android-манифесте для прохождения модерации RuStore (Save password, Site Settings, RECORD_AUDIO)

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

Привет!

Ну вот вы ставите Яндекс Go, жмёте «Разрешить» на всё подряд — микрофон, контакты, местоположение. Такси же, надо. А потом выясняется, что приложение лезет в буфер обмена. 16 раз в разных местах кода. Зачем такси буфер обмена — я так и не понял.

Короче, я взял семь популярных Android-приложений и разобрал их по косточкам. SAST, реверс-инжиниринг, декомпиляция DEX, разбор манифестов, ковыряние в нативных библиотеках. Под раздачу попали: Яндекс Go, Карты, Музыка, Пэй, Телемост, Mir Pay и мессенджер МАКС (бывший ICQ New / VK Messenger).

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

Всё началось с того, что пару месяцев назад я сломал левую руку. Печатать одной правой оказалось той ещё пыткой, поэтому я начал искать альтернативы. Ради интереса попробовал встроенную диктовку на Маке, которой отродясь не пользовался. И внезапно обнаружил, что современный голосовой ввод в macOS — это пушка. Он отлично справляется с моим быстрым темпом речи и сложными словами. Я начал диктовать вообще всё: от сообщений в Telegram до рабочих промптов.

А потом я попытался сделать то же самое на Android.

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

Вступление, которое можно пропустить, если вы уже делали пагинацию

Если коротко: пагинация — это когда вы не грузите 100 000 товаров из каталога одним запросом, а показываете их страницами по 20–50 штук и подгружаете следующую порцию, когда пользователь домотал до конца.

Звучит как задача на полдня. На практике — по-разному.

Я пишу мобильные приложения уже давно, и каждый раз, когда в новом проекте появлялась пагинация, рядом с ней через месяц-другой появлялся один и тот же набор багов и ad-hoc-решений. Флаги isLoadingNextPage, isLoadingPrevious, isRefreshing, isEmpty, hasError, hasNextPageЧитать полностью »

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

Война - это Мир
Свобода - это Рабство
Незнание - это Сила

© Какой-то малоизвестный автор, сочиняющий всякие небылицы

Предисловие

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


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