2011-02-28 5 views
2

나는 다음과 같은 상황을 가지고 있으므로 안드로이드 전화에서 시스템 호출을 모니터하고 싶습니다. 그렇게하기위한 스크립트를 만들었습니다. 안드로이드 에뮬레이터와 완벽하게 작동 (내 우분투의 특정 파일에 응용 프로그램의 흔적을 씁니다). 나는 그것을 분석 겠다는 전화를 연결할 때 문제는,이 결과 파일에 다음을 말한다 :실제 장치에 안드로이드 strace

ptrace attach failed: Operation not permitted 

내가 그것을 얻기 위해이 코드를 사용하고 있지만,가 왜 작동하는지 이해가 안 돼요 에뮬레이터와 루팅 된 실제 장치에는 없습니다.

이다 내가 펄에서 사용하는 COMAND :

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

어떤 제안? 미리 감사드립니다.

+2

대부분의 경우 해당 통화를 수행하려면 루트 액세스가 필요합니다. –

답변

1

Mayb는 제한된 권한으로 실행되는 adb 데몬이 될 수 있습니다. setuid roo로 strace를 설치하려고 할 수 있습니다. strace를가 가 된 모든 사용자가 소유 한 프로세스에 연결 및 추적에 다음 호출 한 사용자가 할 수 를 근절하기 위해 setuid를 설치되어

경우

setuid를 설치 : 여기에 대한 맨 페이지 조언이다. 또한 setuid 및 setgid 프로그램이 실행되고 이 올바른 유효 권한으로 추적됩니다. 사용자 만 전체 루트 권한으로 을 신뢰하기 때문에 이러한 일을 할 수 있어야합니다, 그것은 단지 는 의미가 을 실행할 수있는 사용자가이 신뢰를 가지고 그 사용자로 제한 할 때 뿌리 의 setuid로 strace를 설치 할 수 있습니다. 예제의 경우,'rwsr-xr--', 사용자 루트 및 그룹 추적의 그룹의 strace 특별 버전을 설치하는 것이 좋습니다. 여기서 추적 그룹의 구성원은 신뢰할 수있는 사용자입니다. 이 기능을 사용하는 경우 일반 luser가 사용할 수 있도록 strace 의 setuid가 아닌 버전을 설치하십시오.

1

this question의 응답에 따라 Android emulator에 APK 파일을 설치할 수 있습니다. 설치 후

Eclipse로 이동, Windows에서 열기 DDMS view => Open Perspective.

File Browser 탭으로 이동하여 아무 폴더 나 클릭하고 '파일을 장치로 푸시'를 클릭하십시오. 여기에 빈 trace.txt 파일을 업로드 할 수 있습니다. 파일을 sdcard 폴더에 넣는 것이 좋습니다.

위의 링크에서 주어진대로 CMD로 이동하십시오. 종류 : adb shell. cd sdcard을 입력하여 sdcard로 이동하십시오.

이제 명령 줄에 ps을 입력하고 패키지 이름을 통해 APK 파일의 PID를 찾으십시오.

이제 strace -p <pid> -o trace.txt을 입력하십시오. 모든 시스템 호출은이 파일에 저장됩니다. APK 스트레칭을 끝내려면이 trace.txt 파일을 컴퓨터에 다운로드하고 추적을 확인하십시오.