Android strace в устройстве Real - PullRequest
2 голосов
/ 28 февраля 2011

У меня следующая ситуация, я хочу отслеживать системные вызовы на телефонах Android, поэтому я сделал скрипт для этого.С Android Emulator работает отлично (записывает следы приложения в конкретный файл на моем Ubuntu).Проблема в том, что когда я подключаю реальный телефон для анализа, в файле результатов он говорит следующее:

ptrace attach failed: Operation not permitted

Я использую этот код, чтобы получить его, но я не понимаю, почему он работаетна эмуляторе, а не в реальном рутированном устройстве.

Это команда, которую я использую в perl:

system("$dirTools/adb -s $Device shell strace -p $PID[1]>$dirRecordDataSet/$Date/$appName &");

Есть предложения?Заранее спасибо

Ответы [ 2 ]

1 голос
/ 15 декабря 2012

Вы можете установить свой APK-файл на Android emulator, ответив на вопрос на этот вопрос . После установки

Перейти к Eclipse, открыть DDMS представление из Windows => Открыть перспективу.

Перейдите на вкладку File Browser, щелкните любую папку и нажмите «Загрузить файл на устройство». Вы можете загрузить любой пустой файл trace.txt здесь. Я бы порекомендовал вам положить ваш файл в папку SDCard.

Перейти к CMD, как указано в приведенной выше ссылке. Тип adb shell. Перейдите к sdcard, набрав cd sdcard.

Теперь введите ps в командной строке и узнайте PID вашего APK-файла по имени пакета.

Теперь наберите strace -p <pid> -o trace.txt. Все системные вызовы будут размещены в этом файле. Если вы хотите закончить связывание вашего APK, вы можете загрузить этот файл trace.txt на свой компьютер и увидеть следы.

1 голос
/ 01 марта 2011

Может быть, демон adb работает с ограниченными правами. Вы можете попробовать установить strace с помощью setuid roo. Вот совет manpage об этом:

Установка Setuid

Если установлен strace setuid для root тогда вызывающий пользователь сможет прикреплять и отслеживать процессы, принадлежащие любой пользователь. Кроме того, setuid и программы setgid будут выполнены и прослеживается с правильной эффективностью привилегии. Так как доверяют только пользователи с полными привилегиями root должен быть разрешено делать эти вещи, это только имеет смысл установить strace как setuid для root, когда пользователи, которые могут выполнить это ограничено тем пользователи, которые имеют это доверие. За Например, имеет смысл установить специальная версия strace с режимом 'rwsr-xr--', пользователь root и группа след, где члены следа группа доверенных пользователей. Если вы используете эту функцию, пожалуйста, не забудьте установить неустановленную версию strace для использования обычными люцернами.

...