Во-первых, у меня не было цели обмануть DroidGuard, я просто решил хорошо провести время :)
Во-вторых, защиту SafetyNet вполне успешно обходят, и это совсем не новость. Есть даже опенсорс реализация всех проприетарных гугловых сервисов microG Project.
Не совсем так. Например, в виртуальной машине есть команды: загрузить строку, загрузить через reflection класс с определенным именем, выполнить через reflection метод с определенным именем. Вот откуда это имя берется — это логика байт-кода. Чтобы узнать имя класса и имя метода, надо интерпретировать команды байт-кода, которые работают со строками.
Честно говоря, я после отказа наоборот понял, что в таком интервью куда больше смысла, чем в стандартных вопросах про Android SDK и про всякий синтаксический сахар Kotlin. Мне хоть и обидно, но их подход вполне оправдан. Завтра выйдет новый фреймворк, а фундаментальные знания не устареют.
Я пока пару лет делал игры на Unity, так в Android успела революция произойти: вместо Java пришел Kotlin, RxJava стал золотым стандартом, Android SDK распался на Android Jetpack Components… Ничего, все можно довольно быстро освоить. Даже сертификат получил красивый от Google.
Насчет перезвонят я так скажу. Собеседование я проходил чуть больше года назад :) Не перезвонили. Но я им сам недавно повторно написал. Если посмотреть правде в глаза, они мне нужнее, чем я им: Google в резюме — он такой один, а из таких как я у них очередь стоит.
А смысл? :) Это же не дает ровным счетом ничего, никаких преимуществ. Если нет знакомых работающих в Google, можно просто попробовать в linkedin написать кому-нибудь и попросить отправить резюме эйчарам. Будет ровно такой же результат.
А почему «отомстил»? Я свое обещание (не болтать лишнего) в целом-то сдержал. Кода виртуальной машины нет, как работает интерпретатор не рассказал… А вся остальная информация и так была в интернете — про запрос, про protobuf, про apk и так далее. Разве что про спрятанные сообщения никто не писал.
Защититься от ботов, которые делают вид, что они настоящие Android устройства.
Для этого DroidGuard собирает определенную информацию о девайсе. Какую именно информацию — это решает логика, заложенная в байт-код. Байт-код каждый раз новый возвращается с сервера. По итогу чтобы написать бота, надо реализовать виртуальную машину, которая сможет интерпретировать байт-код DroidGuard.
Хотя точно могу сказать, что мне подготовка пошла все-таки в плюс. Теперь каждый раз когда пишу код, автоматом думаю о сложности O(n). Раньше такие вопросы приходили в голову только если что-то медленно работало и это дело надо оптимизировать.
Я вот об этом не подумал, поэтому такого вопроса не ожидал :) А вообще вопрос очень логичный в контексте проекта DroidGuard. Битовые операции, все дела.
При этом гении-олимпиадники внутри Google не могут родить ничего дельного (я на Google в обиде, имею право так считать).
Насколько я понимаю, тот же DroidGuard — проект компании Impermium. Google поглотил Impermium, команда перешла в Google, а в Android появилась толковая защита от фрода.
Для меня вообще собеседования — это жуткий стресс. Поэтому я по ним не хожу и опыта прохождения не имею :) Я могу по пальцам одной руки перечислить все свои собеседования в жизни.
Но я бы и в спокойной обстановке не выдал Base64, просто потому что понятия не имел как он работает и всю жизнь воспринимал его как данность. А ведь это так, только цветочки перед 5 ягодками настоящего очного собеседования.
Мне процесс собеседования показался очень сложным, и я бесконечно далек от этого уровня. Не знаю, зачем Гуглу нужны все эти гении-олимпиадники, но им виднее.
А ведь очень даже неплохо получилось! Качественный дизайн — это хорошее преимущество. Но немного покритикую:
— Как по мне, кнопки мелковаты. На планшете ок, но на телефоне как-то некомфортно. Хоть и не промахиваюсь.
— При игре против AI при смене хода вообще ничерта непонятно… Слишком быстро происходит передача хода. AI стреляет мгновенно, непонятно откуда и куда прилетела шашка. Может добавить анимацию прицеливания перед ходом AI?
— Ну и главная проблема — за пределами русского Google Play, похоже, шансов немного.
А так симпатично. Правда, рекламу не увидел ни разу.
Кстати, если кто-то сомневается, стоит ли заморачиваться с проверкой ин-апов или и так сойдет, то такая небольшая статистика по одной моей игре — приблизительно 60% от общего количества внутреигровых покупок фейковые и идут через Freedom. Не верю, что хоть кто-нибудь из этих 60% заплатил бы, будь эта проверка встроена, но тем не менее бороться с этим лишним не будет.
И похоже, что с вами многие согласны и несогласны со мной :)
Сейчас как-то модно стало припоминать «ошибку выжившего», поэтому и я ее припомню. На одну вашу успешную игру есть 10 других инди-игр, про которые никто никогда не узнает и которые наберут от силы сотню установок.
100-200$ в день с успешной небольшой игры, конечно, можно получить. Но, во-первых, игра должна быть успешной, а во-вторых — все-таки обычно инди-разработчик хочет повторить судьбу хотя бы Нотча и заработать миллионы, а не среднюю зарплату в месяц. Не получится каждые 2-3 месяца выпускать по успешной игре, каждая из которых будет приносить по 100$ в день, и таким вот незатейливым образом через год рубить по паре десятков тысяч в месяц.
Инди разработка может быть сродни искусству, но заработать на этом такие суммы, про которые мы часто читаем — уже как-то невероятно.
А можно ссылку на игру?
Не огорчайтесь, но наш с вами поезд уже ушел (я тоже вроде как «инди» разработчик). На мой взгляд графика скучноватая и весьма посредственная. Каждый день в Google Play сейчас появляется сотня новых игр, как мы можем их обставить? Крутой графикой или уникальным геймлеем. Первое дорого, второе сложно :) Шансы на успех призрачно малы. Сделать в одиночку на коленке новый Flappy Bird маловероятно.
Еще мне кажется неудачным выбранный жанр (не мое мнение, мнение издателя — простые логические головоломки больше не зарабатывают). Ну и монетизацию выбрали не самую лучшую — для заработка на рекламе нужно очень много инсталлов, а они просто так из ниоткуда не возьмутся.
А вот с опытом разработки на Unity хочу вас поздравить, это ценно :)
0.58$ eCPM — это просто чудо какое-то! У меня в десять раз ниже (да, 5 центов на тысячу), при этом CTR даже немного выше, fillrate 100%.
Практически все пользователей из России. С российскими рекламными сетями опыт как и в комментарии выше — через пару месяцев fillrate слился.
Вся печаль видимо в том, что игра.
У меня несколько непривычная стилистика написания кода для Java-программистов, так как до андроида много писал на С++
Java coding conventions слабо зависят от наших привычек :)
Вопрос насчет велосипедности статьи — из серии «зачем делать обертку под opengl и вообще учить его, если есть SDL» и «Зачем делать свою реализацию „Одиночки“, если есть @Singletone»
В контексте вашего примера эта статья из серии «не threadsafe Singletone». Здорово, конечно, что синглтон, но вот правильнее от этого он не станет.
Во-вторых, защиту SafetyNet вполне успешно обходят, и это совсем не новость. Есть даже опенсорс реализация всех проприетарных гугловых сервисов microG Project.
Но вообще да, все эти приколюхи никаких преимуществ не дают. У Гугла все равны.
Я пока пару лет делал игры на Unity, так в Android успела революция произойти: вместо Java пришел Kotlin, RxJava стал золотым стандартом, Android SDK распался на Android Jetpack Components… Ничего, все можно довольно быстро освоить. Даже сертификат получил красивый от Google.
Насчет перезвонят я так скажу. Собеседование я проходил чуть больше года назад :) Не перезвонили. Но я им сам недавно повторно написал. Если посмотреть правде в глаза, они мне нужнее, чем я им: Google в резюме — он такой один, а из таких как я у них очередь стоит.
Для этого DroidGuard собирает определенную информацию о девайсе. Какую именно информацию — это решает логика, заложенная в байт-код. Байт-код каждый раз новый возвращается с сервера. По итогу чтобы написать бота, надо реализовать виртуальную машину, которая сможет интерпретировать байт-код DroidGuard.
Хотя точно могу сказать, что мне подготовка пошла все-таки в плюс. Теперь каждый раз когда пишу код, автоматом думаю о сложности O(n). Раньше такие вопросы приходили в голову только если что-то медленно работало и это дело надо оптимизировать.
Когда-то Макса Хоувел (разработчика Homebrew) не взяли в Google. Он по этому поводу такой твит выдал:
Я уже немного наелся самореализации, хотелось обратно в уютный мир, где каждый месяц за работу платят деньги :) Увы, пока не сложилось.
Насколько я понимаю, тот же DroidGuard — проект компании Impermium. Google поглотил Impermium, команда перешла в Google, а в Android появилась толковая защита от фрода.
Но я бы и в спокойной обстановке не выдал Base64, просто потому что понятия не имел как он работает и всю жизнь воспринимал его как данность. А ведь это так, только цветочки перед 5 ягодками настоящего очного собеседования.
Мне процесс собеседования показался очень сложным, и я бесконечно далек от этого уровня. Не знаю, зачем Гуглу нужны все эти гении-олимпиадники, но им виднее.
— Как по мне, кнопки мелковаты. На планшете ок, но на телефоне как-то некомфортно. Хоть и не промахиваюсь.
— При игре против AI при смене хода вообще ничерта непонятно… Слишком быстро происходит передача хода. AI стреляет мгновенно, непонятно откуда и куда прилетела шашка. Может добавить анимацию прицеливания перед ходом AI?
— Ну и главная проблема — за пределами русского Google Play, похоже, шансов немного.
А так симпатично. Правда, рекламу не увидел ни разу.
Сейчас как-то модно стало припоминать «ошибку выжившего», поэтому и я ее припомню. На одну вашу успешную игру есть 10 других инди-игр, про которые никто никогда не узнает и которые наберут от силы сотню установок.
100-200$ в день с успешной небольшой игры, конечно, можно получить. Но, во-первых, игра должна быть успешной, а во-вторых — все-таки обычно инди-разработчик хочет повторить судьбу хотя бы Нотча и заработать миллионы, а не среднюю зарплату в месяц. Не получится каждые 2-3 месяца выпускать по успешной игре, каждая из которых будет приносить по 100$ в день, и таким вот незатейливым образом через год рубить по паре десятков тысяч в месяц.
Инди разработка может быть сродни искусству, но заработать на этом такие суммы, про которые мы часто читаем — уже как-то невероятно.
Не огорчайтесь, но наш с вами поезд уже ушел (я тоже вроде как «инди» разработчик). На мой взгляд графика скучноватая и весьма посредственная. Каждый день в Google Play сейчас появляется сотня новых игр, как мы можем их обставить? Крутой графикой или уникальным геймлеем. Первое дорого, второе сложно :) Шансы на успех призрачно малы. Сделать в одиночку на коленке новый Flappy Bird маловероятно.
Еще мне кажется неудачным выбранный жанр (не мое мнение, мнение издателя — простые логические головоломки больше не зарабатывают). Ну и монетизацию выбрали не самую лучшую — для заработка на рекламе нужно очень много инсталлов, а они просто так из ниоткуда не возьмутся.
А вот с опытом разработки на Unity хочу вас поздравить, это ценно :)
0.58$ eCPM — это просто чудо какое-то! У меня в десять раз ниже (да, 5 центов на тысячу), при этом CTR даже немного выше, fillrate 100%.
Практически все пользователей из России. С российскими рекламными сетями опыт как и в комментарии выше — через пару месяцев fillrate слился.
Вся печаль видимо в том, что игра.
Java coding conventions слабо зависят от наших привычек :)
В контексте вашего примера эта статья из серии «не threadsafe Singletone». Здорово, конечно, что синглтон, но вот правильнее от этого он не станет.