- 6 способов спрятать данные в Android-приложении
- Что прячем
- Способы сокрытия данных
- Вариант 1: Ничего не скрывать, оставить все на виду
- Вариант 2: Использовать ProGuard с правильными настройками
- Вариант 3: Использовать Open Source Obfuscator
- Вариант 4: Использовать проприетарное решение
- Вариант 5: Использовать React-Native
- Вариант 6: Использовать NDK
- Вывод
- How to Find Hidden Apps on Android
- How to Find Hidden Apps in Settings
- How to Find Hidden Apps On Boyfriend’s Phone
- How to Find Secret Apps on Android
- What Are the Most Popular Hidden apps for Android?
- Secret Calculator
- Best Secret Folder
- CoverMe
- What If My Kid Has Hidden Apps on Their Android Phone?
- What Can My Spouse Hide on Their Phone?
- What Are Other Options to Find Hidden Apps on Android?
- You may also like
- How to Recover Deleted Text Messages on iPhone and Android in 2021?
- How To Install Spy Apps on iOS and Android
- How to Detect Spyware and Remove It Easily – Step by Step Instructions
- Cancel reply
- Comments
- Jessica
- Letita
6 способов спрятать данные в Android-приложении
Привет, дорогой читатель, уже достаточно давно я изучаю мобильные приложения. Большинство приложений не пытаются как-то скрыть от меня свой «секретный» функционал. А я в это время радуюсь, ведь мне не приходится изучать чей-то обфусцированный код.
В этой статье я хотел бы поделиться своим видением обфускации, а также рассказать про интересный метод сокрытия бизнес-логики в приложениях с NDK, который нашел относительно недавно. Так что если вас интересуют живые примеры обфусцированного кода в Android — прошу под кат.
Под обфускацией в рамках этой статьи будем понимать приведение исполняемого кода Android-приложения к трудному для анализа виду. Существует несколько причин затруднять анализ кода:
- Ни один бизнес не хочет, чтобы в его «внутренностях» ковырялись.
- Даже если у вас приложение-пустышка, интересное там можно найти всегда (пример с инстаграмом).
Многие разработчики решают проблему простым форком конфига ProGuard. Это не лучший способ защиты данных (если вы первый раз слышите об этом, то см. вики).
Хочу привести показательный пример, почему предполагаемая “защита” с помощью ProGuard не работает. Возьмем любой простенький пример из Google Samples.
Подключив к нему ProGuard со стандартным конфигом, получим декомпилированный код:
«Ооо, ничего непонятно» – скажем мы и успокоимся. Но через пару минут переключения между файлами найдём подобные кусочки кода:
В этом примере код приложения выглядит затрудненным довольно слабо (логирование данных, создание видео захвата), поэтому некоторые методы, использованные в оригинальном коде, легко понятны и после обработки конфигом ProGuard.
Дальше больше, взглянем на data-классы в Kotlin. Data-класс по умолчанию создает метод “toString”, который содержит в себе названия переменных экземпляра и название самого класса.
Он может превратиться в лакомый кусочек для реверсера:
(автогенерация метода toString в Kotlin)
Выясняется, что ProGuard прячет далеко не весь исходный код проекта.
Если я все еще не убедил вас в нецелесообразности защиты кода таким способом, то давайте попробуем оставить в нашем проекте атрибут “.source”.
Эта строчка есть во многих opensource проектах. Она позволяет просматривать StackTrace при падении приложения. Однако, вытащив “.source” из smali-кода, мы получим всю иерархию проекта с полными названиями классов.
По определению, обфускация – это “приведение исходного кода в нечитаемый вид для того, чтобы противодействовать разным видам ресерча”. Однако, ProGuard (при использовании со стандартным конфигом) не делает код нечитаемым – он работает как минификатор, сжимающий названия и выкидывающий лишние классы из проекта.
Такое использование ProGuard – это легкое, но не совсем подходящее для хорошей обфускации решение на ”авось”. Хорошему разработчику нужно заставить ресерчера (или злоумышленника) испугаться “китайских символов”, которые трудно деобфусцировать.
Если вам интересно подробнее узнать про ProGuard, то предлагаю следующую познавательную статью.
Что прячем
Теперь давайте посмотрим, что обычно прячут в приложениях.
- Специфическую логику приложения:
В коде часто может быть спрятано что-то более неожиданное (наблюдения из личного опыта), например:
- Имена разработчиков проекта
- Полный путь к проекту
- “client_secret” для протокола Oauth2
- PDF-книга “Как разрабатывать под Android” (наверное, чтобы всегда была под рукой)
Теперь мы знаем, что может прятаться в Android-приложениях и можем переходить к главному, а именно к способам сокрытия этих данных.
Способы сокрытия данных
Вариант 1: Ничего не скрывать, оставить все на виду
В таком случае я просто покажу вам эту картинку 🙂
“Помогите Даше найти бизнес-логику”
Это нетрудозатратное и совершенно бесплатное решение подойдет для:
- Простых приложений, которые не взаимодействуют с сетью и не хранят чувствительную пользовательскую информацию;
- Приложений, которые используют только публичное API.
Вариант 2: Использовать ProGuard с правильными настройками
Это решение все-таки имеет право на жизнь, потому что, в первую очередь, оно является простым и бесплатным. Несмотря на вышеупомянутые минусы, у него есть весомый плюс: при правильной настройке ProGuard-правил приложение может действительно стать обфусцированным.
Однако, нужно понимать, что такое решение после каждой сборки требует от разработчика декомпиляции и проверки, все ли нормально. Потратив несколько минут на изучение APK файла, разработчик (и его компания) могут стать увереннее в безопасности своего продукта.
Проверить приложение на наличие обфускации достаточно просто.
Для того, чтобы достать APK-файл из проекта существует несколько путей:
- взять из директории проекта (в Android Studio обычно название папки “build”);
- установить приложение на смартфон и достать APK с помощью приложения “Apk Extractor”.
После этого, пользуясь утилитой Apktool, получаем Smali-код (инструкция по получению здесь https://ibotpeaches.github.io/Apktool/documentation) и пытаемся найти что-нибудь подозрительно читаемое в строках проекта. Кстати, для поиска читаемых кодов можно запастись уже заранее готовыми bash-командами.
Это решение подойдет для:
- Приложений игрушек, приложений интернет-магазинов и т.п.;
- Приложений, которые действительно являются тонкими клиентами, и все данные прилетают исключительно с серверной стороны;
- Приложений, которые не пишут на всех своих баннерах “Безопасное приложение №1”.
Вариант 3: Использовать Open Source Obfuscator
К сожалению, реально хороших бесплатных обфускаторов для мобильных приложений я не знаю. А обфускаторы, которые можно найти в сети могут принести вам много головной боли, поскольку собрать такой проект под новые версии API будет слишком сложно.
Исторически сложилось, что существующие крутые обфускаторы сделаны под машинный код (для C/C++). Хорошие примеры:
Например, Movfuscator заменяет все opcodes mov-ами, делает код линейным, убирая все ветвления. Однако, крайне не рекомендуется использовать такой способ обфускации в боевом проекте, потому что тогда код рискует стать очень медленным и тяжелым.
Это решение подойдет для приложений, у которых основная часть кода — NDK.
Вариант 4: Использовать проприетарное решение
Это самый грамотный выбор для серьезных приложений, так как проприетарное ПО:
а) поддерживается;
б) всегда будет актуально.
Пример обфусцированного кода при использовании таких решений:
В этом фрагменте кода можно увидеть:
- Максимально непонятные названия переменных (с наличием русских букв);
- Китайские символы в строчках, не дающие понять, что реально происходит в проекте;
- Очень много добавленных в проект ловушек (“switch”, “goto”), которые сильно меняют codeflow приложения.
Это решение подойдет для:
- Банков;
- Страховых компаний;
- Мобильных операторов, приложений для хранения паролей и т. д.
Вариант 5: Использовать React-Native
Я решил выделить этот пункт, так как написание кроссплатформенных приложений сейчас стало действительно популярным занятием.
Кроме очень большого community, JS имеет очень большое количество открытых обфускаторов. Например, они могут превратить ваше приложение в смайлики:
Мне бы очень хотелось посоветовать вам данное решение, но тогда ваш проект будет работать самую малость быстрее черепахи.
Зато, уменьшив требование к обфускации кода, мы можем создать действительно хорошо защищенный проект. Так что гуглим “js obfuscator” и обфусцируем наш выходной bundle-файл.
Это решение подойдет для тех, кто готов писать кроссплатформенное приложение на React Native.
Было бы очень интересно узнать про обфускаторы на Xamarin, если у вас есть опыт их использования – расскажите, пожалуйста, о нем в комментариях.
Вариант 6: Использовать NDK
Мне самому часто приходилось использовать NDK в своем коде. И я знаю, что некоторые разработчики считают, что использование NDK спасает их приложение от реверсеров. Это не совсем так. Для начала нужно понять, как именно работает сокрытие с помощью NDK.
Оказывается, очень просто. В коде есть некоторая JNI-договоренность, что при вызове C/C++ кода в проекте он будет преобразовываться следующим образом.
Нативный класс NativeSummator:
Реализация нативного метода sum:
Реализация нативного статичного метода sum:
Cтановится понятно, что для вызова нативного метода используется поиск функции Java_
_ _ в динамической библиотеке.
Если заглянуть в Dalvik/ART код, то мы найдём следующие строки:
Сначала сгенерируем из Java-объекта следующую строку Java_
_ _ , а затем попытаемся разрезолвить метод в динамической библиотеке с помощью вызова “dlsym”, который попытается найти нужную нам функцию в NDK.
Так работает JNI. Его основная проблема в том, что, декомпилировав динамическую библиотеку, мы увидим все методы, как на ладони:
Значит, нам нужно придумать такое решение, чтобы адрес функции был обфусцирован.
Сначала я пытался записать данные напрямую в нашу JNI-таблицу, но, понял, что механизмы ASLR и разные версии Android просто-напросто не позволят мне сделать этот способ работающим на всех устройствах. Тогда я решил узнать, какие методы NDK предоставляет разработчикам.
И, о чудо, нашелся метод “RegisterNatives”, который делает ровно то, что нам нужно (вызывает внутреннюю функцию dvmRegisterJNIMethod).
Определяем массив, описывающий наш нативный метод:
И регистрируем наш объявленный метод в функции JNI_OnLoad (метод вызывается после инициализации динамической библиотеки, тыц) :
Ура, мы самостоятельно спрятали функцию “hideFunc”. Теперь применим наш любимый llvm-обфускатор и порадуемся безопасности кода в конечном виде.
Это решение подойдет для приложений, которые уже используют NDK (подключение NDK несет в проект большое количество сложностей, поэтому для не-NDK приложений это решение не так актуально).
Вывод
На самом деле, в приложении не должно храниться никаких чувствительных данных, либо они должны быть доступны только после аутентификации пользователя. Однако, бывает, что бизнес-логика принуждает разработчиков к хранению токенов, ключей и специфических элементов логики кода внутри приложения. Надеюсь, эта статья поможет вам, если вы не хотите делиться такими чувствительными данными и быть “открытой книгой” для ресерчеров.
Я считаю, что обфускация – важная структурная часть любого современного приложения.
Обдуманно подходите к вопросам сокрытия кода и не ищите простых путей! 🙂
Кстати, спасибо пользователю miproblema за помощь в некоторых вопросах. Подписывайтесь на ее телеграм-канал, там интересно.
А так же огромное спасибо пользователям sverkunchik и SCaptainCAP за помощь в редактировании статьи.
Источник
How to Find Hidden Apps on Android
Updated: September 1, 2021
All digital devices, including Android phones, have certain features that enable the user to hide various contents. For example, Android has hidden partitions that can’t just be stumbled upon. You have to know the correct sequence of actions to obtain access.
A lot of Android devices also come with built-in hiding software, such as the Secure Folder. Not only that, but users can even wholly hide some installed apps in a way that they’re still operating on the device, but are completely invisible in the menu.
If you want to find hidden apps on your old Android phone, here is the way to do it:
- Click “Settings”
- Go to the “Applications” section on your Android phone menu
- Have a look at the two navigation buttons
- Open the menu view and press “Task.”
- Check an option that says “Show Hidden Apps.”
In case you regularly update your versions, in this article, we will cover different means of accessing hidden apps, especially for you.
NOTE: These methods only work wor uncovering hidden spy apps. If you’re suspicious that someone has installed a keylogger on your phone, then make sure to check out our guide on how to remove a keylogger.
How to Find Hidden Apps in Settings
Here is an easy way to find hidden apps on Android phones by accessing the “Settings” option:
- Tap the “Settings” icon to open the settings application.
- Scroll through the options in “Settings.”
- Select the “”Apps & Notifications”” option.
- Now, to see the list of applications, including the hidden ones, select the “See all apps” option.
Once done, all apps on your Android device will be displayed, including the ones that had been hidden.
Learning how to find hidden apps on an Android device is rather easy, and it only takes a couple of minutes.
Pro Tip: The app list would also show the system files and system applications as well and hence will show all apps on android device.
How to Find Hidden Apps On Boyfriend’s Phone
This is how you can find hidden apps on any Android device. All you need to do is to open the App Drawer. These are the steps:
- Tap the icon that is present in the lower middle section of the home screen or by swiping up on the home screen.
- Tap the three dots in the top left corner of the App Drawer
- Locate the “Home Screen Settings” option and press it.
- Locate the “Hide Apps” tab and press it.
- You will see a screen that allows you to hide apps. On the top, there is a “Hidden Apps” tab, where all hidden apps will be displayed. You might find an installed keylogger or other hidden Android apps.
Pro Tip: If your Android phone doesn’t have the three dots option in the app drawer, just locate the “Home Screen Settings” tab on your settings page. Then, repeat the procedure above.
How to Find Secret Apps on Android
Here is how you can find secret apps on Android phones through the app information features. To find hidden apps on Android, follow the below steps:
- Firstly, keep pressing the ”App icon” till you see a small menu.
- Now, you will have to press the little ”i” that is present inside a circle. You will find this information icon near the ”pencil” icon.
- You will find a page that has all details like storage size, permissions about the app.
- Now, select the ”App details” option.
You can also read the official information, people’s reviews of the chosen app on the app’s product page in the Google play store.
What Are the Most Popular Hidden apps for Android?
All users have access to app stores that hold a wide variety of content hiding apps. You only need to perform a quick search, and you’ll be bombarded with hundreds of options.
However, even before spying on your girlfriend’s phone, you might have noticed some specific issues on the target phone.
To start with, once you check the phone memory in the Settings there could be newly added or doubled unique IDs of applications like com.pivotmobile.android.metrics, com.android.incallui, or com.wssyncmldm. That, in turn, proves that there should be some tricky changes installed or updated on the device.
Another thing, if you’ve been helping with blocking ads on someone’s device with the help of a specific app, like a bbcagent app, it could have disabled some apps without root that could have caught your attention.
One of such secret apps to hide pictures can be:
Secret Calculator
Secret Calculator hidden app on Android devices was strictly designed for storing private photos. The app looks like your standard calculator. However, when you open it, you will see a folder that allows you to upload secret pictures and videos.
The app comes in a couple of different variations, some of which would enable users to hide and delete other sensitive information, such as web browser history.
Best Secret Folder
Best Secret Folder claims to be one of the most potent hidden apps on Android.
It has a compelling stealth mode, and it can be tough to locate it once it’s hidden. The folder looks just like your ordinary folder, and it can store all sorts of data – controversial messages, photos, videos, etc.
The user is required to create a password that they have to enter every time they want to access the folder. If a stranger tried to open it and entered the wrong password, the app would turn off.
CoverMe
CoverMe is among the most flexible and versatile hidden apps on Android from this list. It was initially developed as a secret messenger, and it can store all sorts of media files – photos, videos, contacts, call logs, etc.
These apps are only a speck in the sea of available secret apps that you can use to find hidden apps.
This just proves how easy it can be for your children or spouse to hide sensitive content. However, with our guide, you will be able to crack all these methods in no time.
Pro Tip: Some hidden apps on Android may require a password. To avoid typing passwords, we recommend using the mSpy app, as it has a remote keylogger that saves all keystrokes that you type.
What If My Kid Has Hidden Apps on Their Android Phone?
Recent technological developments in the mobile industry come with an outstanding set of benefits, but they can also cause a couple of headaches when trying to find hidden apps on Android. This is especially the case with parents, who are often concerned about their children’s activities on the internet.
Because they are so young, they are often susceptible to a lot of threats, such as online bullying or predatory activities.
On the bright side, parents can also utilize various software solutions that will enable them to monitor their children’s online activities. A quick online search will display the best parental control tools.
To understand their kids” mindsets better, parents should also think about why their children want to hide their activities.
These reasons may include:
- Using secret app technology to chat with their friends about inappropriate topics or talk to strangers anonymously.
- Hiding sensitive photos
- Hiding dating apps or other tools that their parents don’t allow them to use
- Find hidden adult content
What makes the online world scary is the fact that your children may be in contact with sexual predators at any given moment without your knowledge. You can mitigate this issue, though, by using internet filter software.
What Can My Spouse Hide on Their Phone?
Spouses and family relationships are other sensitive topics that should be covered.
By deciding to uncover whether your spouse is hiding something, you are risking compromising your relationship with your loved ones. Although it’s always good to find out the truth, another option is that you find nothing and break the trust for even trying to monitor their activities secretly.
However, if you suspect your spouse of cheating on you, you can try to find hidden apps on their phone and discover the truth. Your spouse may be using secret apps to talk to their friends, but also lovers.
Finding evidence is essential, especially if you plan on filing for divorce later on.
Mostly those apps are used to provide secret chats or to store private information and data such as:
- Photo contents
- Various messages
- Phone and email contacts
- Web browser history
What Are Other Options to Find Hidden Apps on Android?
If you didn’t manage to find anything special by analyzing the hidden app folder, then try installing antivirus or anti-malware solutions. Run a scan to see if anything would pop up. If nothing pops up, but you’re still suspicious, you’ll have to take it to a technician and ask for advice.
You may also like
How to Recover Deleted Text Messages on iPhone and Android in 2021?
How To Install Spy Apps on iOS and Android
How to Detect Spyware and Remove It Easily – Step by Step Instructions
Anjelica has almost 10 years of experience in cell-tracking, online monitoring, and cybersecurity. In her role as a business owner, she looked for effective ways to monitor her employees, which, in turn, has given Anjelica a lot of hands-on knowledge. Her dedication to learning and testing about spying apps, cybersecurity threats, hack attacks genuinely contribute to the development of up-to-date content on celltrackingapps.com.
Cancel reply
Comments
Jessica
I have the sneaky liars old phone and was signed into his Google but it signed me out for not using it for awhile. How can I get back in, or in other apps he didn’t uninstall like Facebook, Messenger and Snapchat? Or if I can’t without him knowing what can I do? I don’t really know about much of hacking, files and other thing of that category yet. SD Card is still inside but corrupted unfortunately. Any help would be greatly appreciated. Thank you and Thank you to anyone who decides to help me.
Letita
Hi , my name is Letita and my fiancee has been texting, video chatting and calling someone else when I leave the room or apartment and when I come back in he switches it back to the game he was playing and he can switch back and forth when playing his games what app am I looking for because his phone never shows anything and I know he is doing this I have him on video many times doing it
Источник