adb와 다음 명령을 사용하여 라이브 장치에 연결했습니다.
C:\>adb -s HT829GZ52000 shell
$ ls
ls
sqlite_stmt_journals
cache
sdcard
etc
system
sys
sbin
proc
logo.rle
init.trout.rc
init.rc
init.goldfish.rc
init
default.prop
data
root
dev
$ cd data
cd data
$ ls
ls
opendir failed, Permission denied
액세스가 거부 된 것을보고 놀랐습니다. 이런 명령 줄을 사용하여 디렉토리를 탐색 할 수없는 방법은 무엇입니까?
전화기에서 루트 액세스 권한을 얻으려면 어떻게합니까?
답변
장치에서 모든 것을 탐색하려면 기억해야 할 두 가지가 있습니다.
답변
API 레벨 8 (Android 2.2)부터 디버깅 가능한 애플리케이션 (릴리스 빌드가 요청되지 않은 한 Android Studio에서 항상 빌드 한 애플리케이션)의 경우 쉘 run-as
명령을 사용하여 특정 사용자 / 애플리케이션으로 명령 또는 실행 파일을 실행할 수 있습니다. 또는 응용 프로그램 의 UID 로 전환하여 해당 데이터 디렉토리에 액세스 할 수 있습니다 .
yourapp의 디렉토리 내용을 나열하십시오.
run-as com.yourapp ls -l /data/data/com.yourapp
com.yourapp의 UID로 전환 하고을 호출 할 때까지 해당 uid를 사용하여 추가 명령을 모두 실행하십시오 exit
.
run-as com.yourapp
cd /data/data/com.yourapp
ls -l
exit
참고 1 : 일부 HTC Desire 전화 에는 알려진 문제 가 있습니다. /data/data
디렉토리 의 비표준 소유자 / 권한으로 인해 run-as
해당 전화에서 명령이 실행되지 않습니다.
참고 2 : @Avio의 의견에서 지적 했듯이이
run-as
플랫폼 /data/data
에서는에 대한 symlink 이기 때문에 모든 버전 (7에서 10.1까지)에서 Cyanogenmod를 실행하는 Samsung Galaxy S 전화에도 문제가 있습니다 /datadata
. 이 문제를 해결하는 한 가지 방법은 symlink를 실제 디렉토리로 바꾸는 것입니다 (불행히도 일반적으로 루트 액세스가 필요합니다).
답변
우리가 시작하기 전에, 당신이해야 할 뿌리 전화를? 그렇지 않다면, 당신이 점프를 할 시간이라고 강력히 제안합니다. 이 작업을 수행하는 데 도움이되는 자습서의 99 %는 루팅 된 전화기가 필요합니다 (루팅 된 전화기 없이도 할 수있는 방법을 찾는 데 한 시간 정도 걸린다는 것을 알고 있습니다 .. ) 또한 당신이 그것에 대해 생각한다면, 동일한 작업을 수행하기 위해 iPhone도 뿌리를 내려야합니다. 따라서 합리적입니다. 대답의 끝에서 응원에 대해 자세히 알아보십시오.
명령 행 유형에서 :
adb shell
이것은 당신을 당신의 안드로이드 쉘 comand 라인으로 데려갑니다 shell@android:/ $
.
shell@android:/ $run-as com.domain.yourapp
이것은 다음의 데이터 디렉토리로 직접 이동해야합니다 com.domain.yourapp
.
shell@android:/data/data/com.domain.yourapp $
그렇지 않은 경우 (즉, 오류가 발생하는 경우) 루팅 된 전화가 없거나 루트 사용자 권한을 사용하지 않은 것입니다. 루트 사용자 권한을 사용하려면 su
adb 명령 줄에 입력 하고 오류가 발생하면 어떤 일이 발생하는지 확인하십시오. 전화가 루팅되지 않은 것입니다. 그렇지 않은 경우 먼저 루팅 한 후이 지시 사항을 계속하십시오.
거기에서 입력 ls
하면 db를 포함한 모든 디렉토리를 볼 수 있습니다 .
shell@android:/data/data/com.domain.yourapp $ ls
cache
databases
lib
shared_prefs
그 후 sqlite3을 사용하여 dbase를 찾아 볼 수 있습니다. 설치되어 있지 않은 경우 (입력 한 sqlite3
경우 입력하여 찾을 수 있음) command not found
sqlite를 설치하려면 여기의 지시 사항을 따르십시오 .
응원에 대해 : 당신이 전에 휴대 전화를 근절 하지 않고 전화를 망치 걱정이 있다면, 나는 걱정할 것이 없다고 전적으로 확신 할 수 있습니다. 거기에 거의 모든 새롭고 오래된 모델에 대한 빠르고 쉬운 전화 응원 자습서 가 있으며 Mac이있는 경우에도 휴대 전화를 응원 할 수 있습니다 (내 Mac과 함께 내 s3를 응원했습니다 ).
답변
$ adb 쉘
$ cd / data
$ ls
opendir 실패, 권한 거부
이 작업을 수행해야합니다.
$ adb shell
$ cd /data
shell@android:/data $ run-as com.your.package
shell@android:/data/data/com.your.package $ ls
확인!
답변
루팅 된 Samsung Galaxy S에서 작동하려고 할 때 비슷한 문제가 발생했습니다. 컴퓨터 셸에서 명령 실행
> adb root
“프로덕션 빌드에서 루트로 실행할 수 없습니다”라는 메시지와 함께 실패합니다. 다음은 루트가 될 수있는 간단한 방법입니다.
위의 명령 대신 다음 두 명령을 차례로 실행하십시오.
> adb shell
$ su
첫 번째 명령 다음에 위와 같이 프롬프트가 ‘>’에서 ‘$’로 변경된 경우 adb 쉘 환경에 들어갔다는 의미입니다. 두 번째 명령을 실행 한 후 프롬프트가 ‘#’으로 변경된 경우 이제 루트 상태입니다. 이제 루트로 장치에서 원하는 모든 것을 할 수 있습니다.
‘안전한’쉘로 다시 전환하려면
# exit
프롬프트 ‘$’가 다시 나타납니다. 이는 루트가 아닌 사용자로서 adb 쉘에 있음을 의미합니다.
답변
나는 이것에도 많은 어려움을 겪었다. 여전히 권한과 루트 실행을 완전히 이해하지 못했지만 / data / data / [package name] /databases/my_db.db에서 데이터베이스 파일을 복사하는 데 도움이되었습니다 (이전 답변 중 하나). 실행 쉘 루트 , 또는 SU을 하지 어떤 이유로 쉘에서 일했다, 나 DB 파일을 복사 (I 디렉토리 비록로 이동 수) 않았고 것은 한 sqlite3를을 .
그래서 이것은 효과가있었습니다! DOS 명령 프롬프트에서 :
C:\Program Files\Android\android-sdk\platform-tools>adb shell
1|shell@android:/ $ run-as de.vogella.android.locationapi.maps
run-as de.vogella.android.locationapi.maps
1|shell@android:/data/data/de.vogella.android.locationapi.maps $ cd /data
cd /data
shell@android:/data $ cd data
cd data
shell@android:/data/data $ cd de.vogella.android.locationapi.maps
cd de.vogella.android.locationapi.maps
shell@android:/data/data/de.vogella.android.locationapi.maps $ cd databases
cd databases
shell@android:/data/data/de.vogella.android.locationapi.maps/databases $ ls
ls
bus_timetable_lines.db
bus_timetable_lines.db-journal
shell@android:/data/data/de.vogella.android.locationapi.maps/databases $ cat bus
_timetable_lines.db > /sdcard/db_copy.db
bus_timetable_lines.db > /sdcard/db_copy.db <
shell@android:/data/data/de.vogella.android.locationapi.maps/databases $exit ^
exit
shell@android:/ $ exit
exit
C:\Program Files\Android\android-sdk\platform-tools>
이제 SDCARD 디렉토리로 이동하여 db_copy.db 파일을 가져 오십시오. 심지어는 숨겨져 있었지만 이메일로 보낼 수있었습니다. Windows로 돌아가서 SQLite Database Browser로 db 파일을 열 수있었습니다. 🙂
답변
루트 액세스 권한을 얻는 두 단계는 다음과 같습니다.
- 당신의 안드로이드 장치는 루팅해야합니다.
- ADB 쉘에서 su를 입력하면 안드로이드 장치가 y / n? 허용을 선택하십시오.