Русский
Русский
English
Статистика
Реклама

Декомпилируем приложение xiaomi сканер и забираем результат сканирования

У коллеги возникло предложение:
Напиши мне за банку чипсов распознавалку штрих-кодов на андроид, чтобы просто в файлики результаты писать и время, брату надо
В итоге оказалось не брату, да и не надо, и вообще банка чипсов это дорого
Из интереса пробежался по готовым решениям на js и android, и т.к. у меня смартфон xiaomi с готовым приложением сканером, подумал, почему бы не попробовать просто забирать результаты сканирования из него?
Ок, пробовал погуглить инфу об интентах или готовую инструкцию по получению данных из сканера, но тщетно.
Решено провести разведку манифеста приложения на наличие интентов.

  1. Находим и забираем APK с телефона.
    adb shell~:/pm list packages | grep scanner~:/pm path com.xiaomi.scannerexitpull /system/priv-app/MiuiScanner/MiuiScanner.apk
    
  2. Декомпилируем apk с помощью онлайн сервиса.
  3. Исследуем манифест.
    Находим первый попавшийся по смыслу экшн.
    AndroidManifest.xml

  4. Создаем новый android проект и пишем вызов сканера.
      val intent = Intent("miui.intent.action.scanbarcode")   startActivityForResult(intent, 1);
    
  5. Запускаем приложение, делаем вызов и
    запускается сканер и дает спокойно работать, но нужно получить результат, как? Видимо нужен корректный код запроса, или дополнительные данные в интенте. Анализируем декомпилированные исходники в части обработки интентов и попадается следующее.
    ScanActivity.java

    Судя по всему нужно добавить булево значение в интент.
  6. Ищем нужное имя ключа, которое лежит в EXTRA_INTENT_IS_BACKTO_THIRDAPP и находим isBackToThirdApp.
    AppUtils.java

  7. Переписываем код вызова сканера.
      val intent = Intent("miui.intent.action.scanbarcode")  intent.putExtra("isBackToThirdApp",true)  startActivityForResult(intent, 1);
    
  8. Забираем результат.
            super.onActivityResult(requestCode, resultCode, data)        if (resultCode==Activity.RESULT_OK){                result.setText(data?.extras?.getString("result"))        } 
    
  9. Короткое видео с примером работы приложения.
  10. Интерес удовлетворен, и теперь мы можем пользоваться результатами родного Xiaomi приложения и сосредоточиться на описании своей логики работы с результатами, поедая чипсы
Источник: habr.com
К списку статей
Опубликовано: 18.08.2020 12:17:00
0

Сейчас читают

Комментариев (0)
Имя
Электронная почта

Разработка мобильных приложений

Реверс-инжиниринг

Android

Xiaomi

Штрихкод

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru