Zheka’s blog
Sunday, February 16, 2014
Доступ к ресурсам Android приложения
Бывает так, что во время разработки, нужно заглянуть в приватные директории приложения. Как известно, доступ к ним закрыт, и при попытке, скажем, получить список файлов, имеем следующее:
Есть несколько решений данной проблемы.
Первое, что приходит на ум — получить root права. Недостатки очевидны. Ломать телефон из-за маленькой плюшки — варварство(да и телефон может быть не личный, а, например, корпоративный). Но имея root , получаем неограниченный доступ ко всем ресурсам системы.
run-as
В составе Android OS есть утилита run-as . По своей сути очень похожа на sudo — выполнение команд от имени приложения или говоря короче — делегирование прав:
Пара моментов которые нужно знать. Приложение должно быть собрано как debuggable и в нек. случаях нужно менять права на файлы/директории:
Из недостатков можно назвать лишь одно — нет возможности доступа к файлам приложений третьих лиц(установленных, например, с Play Market).
backup
Последний способ. Я его использовал до того, как познакомился с run-as . Android предоставляет возможность сделать копию приложения:
В текущей директории будет создан файл backup.dat ( [device id] можно узнать командой ‘adb devices’ ). Далее распаковываем *.dat файл:
Приведенная команда у меня работает только под Linux, под Mac OS я получаю сообщение об ошибке, мол openssl собран без поддержки zlib. Немного пошаманив, нашел решение, которое не требует пересборки openssl:
По сравнению с Linux вариантом, работет медленнее, но для меня не критично. После всех шагов, в текущей директории будет создана папка apps, содержащая все внутренности приложения.
До недавнего времени последний способ не имел недостатков. Т.е. была возможность получить доступ ко всем потрохам без каких-либо ограничений. Но начиная с версии Android 4.4 в AndroidMainifext.xml был добавлен флаг allowBackup:
Который гласит буквально следующее: если флаг установлен в значение false , то приложение никогда не будет иметь возможность сделать резервную копию или восстанновление из резервной копии, даже в случае резерного копирования всей системы(имеется ввиду средствами самой ОС). Поумолчанию флаг имеет значение true . Вот такие дела. Т.е. доспут к ресурсам своего приложения мы всегда будем иметь, а в остальном — как повезет.
Источник
RunAsDate для Windows
Оценка: |
4.41 /5 голосов — 15 |
Лицензия: | Бесплатная |
Версия: | 1.37 | Сообщить о новой версии |
Обновлено: | 25.03.2019 |
ОС: | Windows 10, 8.1, 8, 7, XP |
Интерфейс: | Английский |
Разработчик: | Nir Sofer |
Категория: | другое |
Загрузок (сегодня/всего): | 9 / 25 036 | Статистика |
Размер: | 36 Кб |
СКАЧАТЬ |
RunAsDate — небольшая утилита, позволяющая устанавливать в программе любые дату и время. Программа не изменяет текущую системную дату и время на компьютере и вводит изменения даты/времени только в нужном приложении. Утилита позволяет запускать несколько приложений одновременно, и каждое из них может работать с различными датой и временем, в то время как реальная дата/время системы продолжает работать в нормальном режиме.
Windows 7 USB/DVD Download Tool — отличный инструмент от компании Microsoft, с помощью которого можно легко.
Распространяемый компонент Microsoft Visual C++ для Visual Studio 2015, 2017 и 2019, поскольку в VS 2015 и более.
MapKeyboard — небольшая бесплатная утилита с помощью которой можно легко переназначить или.
Бесплатная и простая в использовании утилита, с помощью которой можно буквально за пару.
Process Lasso — Небольшая утилита для операционных систем Windows, которая позволяет вручную или.
UNetbootin — мультиплатформенная утилита, при помощи которой можно легко устанавливать различные Linux/BSD дистрибутивы на раздел жёсткого диска или USB-накопитель.
Отзывы о программе RunAsDate
(ерж про RunAsDate 1.21 [20-09-2013]
Тестировал пока на 2-х приложениях Trojan Remover, NIS 2012(не изменяет время) и Screenshot Reader (программа отказывается запускаться ввиду изменённого времени), поэтому, пока для меня, бесполезная.
З.Ы. А вот, что пишет автор программы: Системные требования
===================
RunAsDate работает под Windows 2000, Windows XP, Windows Server 2003,
Windows Server 2008, Windows Vista, Windows 7 и Windows 8. старший
версий Windows, не поддерживаются.Также доступны версии x64
в отдельной загрузки, для использования с x64 приложениями.
Важное замечание!
Я получаю много сообщений электронной почты, которые говорят что-то вроде «я попытался продлить
испытательный срок программного обеспечения XYZ с RunAsDate и он не работает «. Запуск
программное обеспечение с различными дате / времени могут быть использованы для многих законных
целей и для этих целей RunAsDate был создан. Я никогда не говорил,
явно или неявно, что RunAsDate может быть использован для расширения
испытательный срок программного обеспечения. Для некоторых условно-бесплатных программ, может RunAsDate
действительно работают, но многие создатели условно достаточно умны, чтобы определить, что
даты / времени был изменен, и когда они обнаруживают изменение времени, они в конечном
испытательный срок немедленно.
Пожалуйста, не утруждать себя, чтобы послать мне вопрос о продлении
испытательный срок программного обеспечения, потому что такого рода сообщения просто
удалены без ответа.
10 | 5 | Ответить
Источник
#2: Обмануть время: RunAsDate в помощь тестировщику
Анна Сергеева. Обмануть время: RunAsDate в помощь тестировщику // Системный администратор. 2014. № 1-2. С.134-135.
Предлагается способ сократить сроки и сделать более удобным проведение тестовых сценариев, связанных с обработкой проверки значений времени и даты в тестируемых программах.
Опубликовано в разделе «Разработка / Тестирование»
Пожалуй, на сегодняшний день с уверенностью можно говорить о том, что за последние десять лет в России полностью сформировался отлаженный цикл производства программных продуктов. И разумеется, тестирование в этом цикле заняло свое законное и немаловажное место. Ведь все, что как бы то ни было программируется, так или иначе подвергается проверке (тестированию).И какие только задачи не доводится решать специалистам службы обеспечения качества(Quality Assurance,QA).И тесты производительности, и проверки безопасности, и регрессионное тестирование, и удобство использования, и так далее[1].Постойте-ка, а как же тесты, связанные с обработкой даты и времени? Конечно, и это тоже необходимо!Среди таких тестов могут иметь место такие проверки:
- срок используемой лицензии;
- даты создания и редактирования файлов;
- ведение журналов событий;
- работа с записями базы данных;
- срабатывание временных триггеров и многое-многое другое.
Не спорим, что существуют различные подходы к проведению подобных тестов. Самый очевидный среди них, так сказать, «прямо в лоб», — это перевести системное время на компьютере тестировщика. Однако согласитесь, что это может привести к нарушениям в работе целого ряда программ, параллельно запущенных на той же самой машине. Печальный итог, такой вариант развития событий явно не подходит. Нужно каким-то образом научиться переводить время в самих программах, не затрагивая системное. Как же этого добиться?
Различные источники в качестве средств заморозки времени предлагают несколько вариантов, у каждого из которых есть свои особенности.
Например, Loader, обладает весьма неудобным интерфейсом (он состоит из единственной специальной кнопки, на которую нужно нажимать вручную для возврата к нормальному времени, все настройки выполняются только через файл конфигурации, документация отсутствует).
Cracklock воспринимается многими антивирусами в качестве угрозы (поскольку для перехвата функций времени использу е т внедрение в процесс и «патч» ).
SetDate, хоть и неплоха сама по себе, требует редактировать ярлыки программ вручную, что снижает ее удобство.
В качестве сравнительно простого и быстрого, а также, как показал опыт, весьма удобного средства для имитации «виртуального путешествия во времени» автор предлагает задействовать утилиту RunAsDate [2] .
В отличие от аналогов она имеет ряд преимуществ:
весьма удобный и понятный интерфейс, позволяющий задать все нужные настройки;
проект регулярно обновляется, исправляются проблемы, добавляются новые опции;
имеется подробная документация;
поддержка работы с командной строкой, что дает возможность автоматизации запуска/останова.
Среди недостатков можно отметить, что RunAsDate работает только под Windows, так что о кроссплатформенном тестировании речи не идет, зато под Windows — все очень быстро и удобно.
Кстати, данной утилитой можно пользоваться, как любила говаривать Милновская Сова, абсолютно безвозмездно, то есть, даром, поскольку лицензия ее Freeware.
Стоит отметить, что RunAsDate не затрагивает настройки рабочей машины, она всего лишь задает необходимую дату и время для тестируемых программ.
И вот здесь-то, пожалуй, начинается самое интересное, поскольку RunAsDate делает возможным одновременный запуск нескольких приложений, для каждого из которых будут настроены свои дата и время. Такая возможность значительно расширяет горизонты тестовых исследований.
Как же работает RunAsDate? Принцип работы утилиты следующий. Она отслеживает сигналы ядра API, которые возвращают текущие значения времени и даты:
(GetSystemTime, GetLocalTime, GetSystemTimeAsFileTime)
и тут же подменяет данные на дату и время, указанные тестировщиком в настройках утилиты.
Как использовать RunAsDate
Инсталляция утилиты не нужна, а также нет никаких сторонних зависимостей.
Для использования RunAsDate достаточно скопировать в папк у исполняем ый файл (RunAsDate.exe) и запустить. На данный момент разработчиками представлена версия RunAsDate 1.21.
После запуска открывается окно настроек утилиты (Рис. 1), где настраиваются следующие опции:
Application to run — тестируемое приложение для запуска;
Date/Time — дата и время, которые будут установлены;
Parameters — задание параметров командной строки, с которыми будет запущена программа;
Move the time forward according to the real time — позволяет перевести часы вперед к реальному времени;
Return to the current date/time after xx seconds — возврат к текущей дате и времени по истечении указанного числа секунд;
Immediate Mode — изменение даты сразу после старта программы;
Run – запуск приложения в соответствии с указанными настройками даты и времени;
Create Desktop Shortcut — создание именованного ярлыка на рабочем столе;
Close – закрытие без сохранения изменений;
About — вызов окна с информацией о программе.
Рис. 1. Интерфейс утилиты RunAsDate.
Возможность работы RunAsDate с командной строкой
Весьма удобным, особенно при написании скриптов автоматизации, является запуск тестовых утилит из командной строки. И для RunAsDate также реализована такая возможность. Для работы RunAsDate из командной строки используется следующий синтаксис:
RunAsDate.exe [ddmmyyyy]
Для демонстрации в Borland C++ Builder написана программа, которая выводит форму с указанием текущей даты:
void __fastcall TForm1::Timer1Timer(TObject *Sender)
Также форма содержит заголовок с указанием названия приложения и пути к нему. Это помогает отличить два запущенных приложения.
Одно запускается просто так («контрольная группа», с именем Project1):
А другое (тестируемое, которое является его полной копией, со сменой имени с Project1 на Project2) запускается программой RunAsDate.exe. Здесь вместо текущей даты (6 декабря 2013) установлена своя (7 ноября 2013).
D:\Test\RunAsDate.exe 07\11\2013 D:\BCB_prj\Date\Project2.exe
На рисунке 2 собраны результаты работы: формы приложений Project1 (отображает текущую дату) и Project2 (с измененной датой), окно утилиты RunAsDate (с настройками изменений даты для Project2), а также окно системного времени из панели задач Windows.
Рис. 2. Пример перевода времени в тестируемой программе с помощью RunAsDate.
Затем, вручную или с помощью инструментов автоматизации тестирования Windows-приложений, которые предпочитает использовать в своей работе конкретный тестировщик, можно проводить сверку значения даты, отображаемой на форме тестируемого приложения, с заданным в RunAsDate.
В приведенном примере, разумеется, тестирование элементарное, но на то он, собственно, и пример. На практике у данного подхода применений гораздо больше, все определяется сложностью и функциональными возможностями тестируемых приложений.
Во-первых, упомянем системные требования:
Windows Server 2003
Windows Server 2008
Для более старых версий Windows поддержки нет. Кроме того, для тестирования x64 программ используется специальная версия RunAsDate x64.[2]
Также отметим, что одной из особенностей работы RunAsDate является то, что с ее помощьюможно воздействовать только на те приложения, которые не обращаются за значением даты и времени к другим ресурсам (среди таких исключений могут оказаться программы, загружающие время и дату с удаленного сервера). Будьте внимательны при составлении методик тестирования.
Создатели данной утилиты настоятельно не рекомендуют использовать ее при попытках создания бесконечных триал-версий платных программ, поскольку программа была создана вовсе не для этих целей. Возможно, для каких-то конкретных приложений этот трюк и сработает, но не стоит забывать о том, что большинство создателей программного обеспечения успешно обнаруживают подобные вмешательства в работу их программ и попросту прерывают срок действия испытательной лицензии. Пожалуй, не стоит рисковать.
Удобный интерфейс, наличие обновлений, хорошая документация являются ее достоинствами по сравнению с аналогами. П оддержка запуска из командной строки дает возможность автоматизации тестов использующих RunAsDate . Таким образом, сроки тестирования значительно сокращаются, повышается качество разрабатываемого программного обеспечения, а получает тестировщик удовольствие от работы.
Источник