표시되는 이유는 무엇입니까 액세스 거부하는 데이터는 폴더에 사용하는 경우 adb?

StackOverflow https://stackoverflow.com/questions/1043322

  •  20-08-2019
  •  | 
  •  

문제

내가 연결되어 내 라이브 장치를 사용하 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

을 보고 놀랐는 접근이 거부되었습니다.어떻게 볼 수 없습니다 분위기가 디렉토리를 사용하여 명령행이 같은가?

나는 어떻게 루트 액세스 권한에서 내 휴대폰?

도움이 되었습니까?

해결책

장치의 모든 것을 탐색하려면 기억해야 할 두 가지가 있습니다.

  1. 안드로이드 폰에서 데이터 폴더를 탐색하려면 루트 액세스 권한이있는 전화가 있어야합니다. 즉, 개발자 장치가 있음을 의미합니다.ADP1 또는 이온 Google I/O에서) 또는 다른 방법으로 휴대 전화를 '루트'하는 방법을 찾았습니다.
  2. 루트 모드에서 ADB를 실행해야합니다. adb root

다른 팁

Debuggable Application의 API 레벨 8 (Android 2.2)에서 시작하여 (릴리스 빌드가 요청되지 않는 한 항상 Android Studio가 제작 한 것) 쉘을 사용할 수 있습니다. run-as 명령 또는 명령 또는 실행 파일을 특정 사용자/응용 프로그램으로 실행하거나 uid 응용 프로그램의 액세스에 액세스 할 수 있습니다 데이터 예배 규칙서.

YourApp의 디렉토리 내용을 나열합니다.

run-as com.yourapp ls -l /data/data/com.yourapp

UID로 전환하십시오 com.yourapp 그리고 해당 UID를 사용하여 모든 추가 명령을 실행하십시오 (전화 할 때까지 exit):

run-as com.yourapp
cd /data/data/com.yourapp
ls -l
exit

 
참고 1: 이있다 알려진 문제 일부 HTC 욕망 전화로. 비표준 소유자/권한으로 인해 /data/data 예배 규칙서, run-as 명령은 해당 전화기에서 실행되지 않습니다.

노트 2: @avio의 의견에 지적 된 바와 같이 :run-as 이 플랫폼에서는 Samsung Galaxy S 폰이 모든 버전 (7 ~ 10.1)에서 CyanogenMod를 실행하는 문제가 있습니다. /data/data Symlink입니다 /datadata. 문제를 해결하는 한 가지 방법은 Symlink를 실제 디렉토리로 바꾸는 것입니다 (불행히도 일반적으로 루트 액세스가 필요합니다).

우리가 시작하기 전에, 당신은 당신 뿌리 전화?하지 않을 경우,저는 좋는 시간을 만들 수 있습니다.99%의 자습서는 이러한 작업을 수행하는 데 도움이 될 필요는 당신이 당신의 휴대 전화(난 b/c 가 소요 시간에 대한 방법을 검색을 할 필요없이 휴대 전화가..를 찾을 수 없..)또한 당신이 그것에 대하여 생각하는 경우,귀하의 아이폰 또는 뿌리를 이렇게 같은 작업입니다.그래서 그것은 완전히 합리적이다.더 많은 응원에 대한 끝에서의 대답이다.

명령행에서 유형:

adb shell

이것은 당신을 당신의 안드로이드 쉘이 명령 라인(당신은 다음과 같은 내용이 표시될 것입니다: shell@android:/ $ 이제 유형:

shell@android:/ $run-as com.domain.yourapp

이해 당신을 데이터로 직접 디렉토리 com.domain.yourapp:

shell@android:/data/data/com.domain.yourapp $ 

지 않는 경우(즉,오류 메시지가 표시되는 경우)그 다음 당신은 아마 없는 휴대 전화,또는 당신은 사용하지 않은 루트 사용자 권한이 있습니다.를 사용하는 루트 사용자 권한,유형 su 에 adb 는 명령 라인,어떻게 볼 오류 메시지가 표시되는 경우,당신은 휴대 전화되지 않은 뿌리를 내리고 있습니다.그렇지 않은 경우에,루트는 그것이 첫째로 다음이 계속 이러한다.

거기에서 입력할 수 있습니다 ls 당신은 모든 디렉토리에를 포함하는 dbs:

shell@android:/data/data/com.domain.yourapp $ ls

cache
databases
lib
shared_prefs   

후에 사용할 수 있는 sqlite3 를 찾아 디베이스..당신이 설치되어 있지 않은(당신은 그것을 찾을 수 있습니를 입력하여 sqlite3, 는 경우에,당신 command not found 다음 설치해야 합니다.를 설치하 sqlite 지침을 따르십시오 .

에 대한 응원: 는 경우 뿌리를 둔 당신의 전화기 전에,그리고 당신이 그것에 대해 걱정하고있어 조이는 휴대 전화,나는 당신을 말할 수 있는 완전한 자신감을 걱정할 필요가 없습니다.가 있 톤의 빠르고 쉽게 전화를 응원하는 튜토리얼에 대한 거의 모든 새로운 옛 모델,거기에 고 있는 루트도 귀하의 휴대 전화가 있는 경우 mac (내가 뿌리 내 s3 내 mac).

$ 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

프롬프트 '$'가 다시 나타나는 것을 알 수 있습니다. 즉, Root가 아닌 ADB 쉘에 사용자로서 ADB 쉘에 있다는 것을 알 수 있습니다.

나는 이것에 대해서도 많은 문제가 있었다. 여전히 권한과 루트 실행을 완전히 이해하지 못하지만 이것은/data/data/[패키지 이름] /databases/my_db.db에서 데이터베이스 파일을 복사하는 데 도움이되었습니다 (이전 답변 중 하나). 달리기 쉘 루트, 또는 Su 어떤 이유로 쉘에서는 작동하지 않았으며 DB 파일을 복사하지도 않았으며 (디렉토리로 이동할 수 없었습니다) 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 데이터베이스 브라우저로 DB 파일을 열 수있었습니다. :)

다음은 루트 액세스를 얻는 두 단계입니다.

  1. 안드로이드 장치는 루팅되어야합니다.
  2. ADB 쉘에서 SU를 입력하면 안드로이드 장치가 y/n을 자랑합니다. 당신은 허용을 선택합니다.

생산 빌드는 /데이터 /앱을 입력 할 수 없습니다

drwxrwx--- system   cache             1970-01-01 08:00 cache
drwxrwxr-x root     system            1970-01-01 08:00 mnt 
drwxrwx--x system   system            1970-01-01 08:15 data

운영하려면 올바른 소유자에 대한 변경이 필요할 수 있습니다.

문제는 최신 CMS의 개발 옵션에 ADB 루트에 액세스 할 수 있어야한다는 것일 수 있습니다. 여기에 내가 한 일이 있습니다.

ABC@ABC-L655 : ~ $ sudo adb 킬-서버
ABC@ABC-L655 : ~ $ sudo adb root start-server * 데몬이 실행되지 않습니다. 지금 포트 5037 *에서 시작하여 성공적으로 시작되었습니다 * 시스템 설정에 따라 루트 액세스가 비활성화됩니다 - 설정에서 활성화 -> 개발 옵션

개발 옵션을 변경 한 후 ...

abc@abc-L655:~$ sudo adb kill-server
abc@abc-L655:~$ sudo adb root start-server
* daemon not running. starting it now on port 5037 *
* daemon started successfully *
restarting adbd as root
abc@abc-L655:~$ adb shell
root@android:/ # ls /data/ .... good to go.. 

응용 프로그램 패키지를 알고 있다면 가능합니다 cd 그 폴더에 직접 ..

예를 들어 cd data/data/com.yourapp

이것은 당신을 디렉토리로 떨어 뜨릴 것입니다 read/writable 따라서 필요에 따라 파일을 변경할 수 있습니다. 폴더가 동일하기 때문에 emulator,이를 사용하여 폴더 경로를 얻을 수 있습니다.

당신이 당신을보고 싶다면 DB & 테이블 그런 다음 가장 중요한 방법은 사용하는 것입니다 Stetho. 사용하는 모든 Android 개발자를위한 멋진 도구 SQLite Buit by Facobook developed.

Steps to use the tool

  1. 응용 프로그램의 Gradle 파일 (모듈 : App)에 아래 종속을 추가하십시오.

'compile'com.facebook.steto : Stetho : 1.4.2 '

  1. activity oncreate () 메소드에 아래 코드 줄 추가
@Override
 protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 Stetho.initializeWithDefaults(this);
 setContentView(R.layout.activity_main);
 }

이제 응용 프로그램을 구축하고 앱이 실행될 때 URL에서 Chrome을 열어 앱 데이터베이스를 탐색 할 수 있습니다.

chrome://inspect/#devices

동일 한 스크린 샷은 아래 _

Chromeinspact

ChromeInspact

당신의 DB

Your DB

이것이 모두에게 도움이되기를 바랍니다! :)

루팅없이 다음 CMD 스크린 샷을 통해 파일에 액세스 할 수 있습니다.

  1. 사용자에 따라 Platform-Tools 폴더에서 CMD를 사용하여 ADB를 시작하십시오.

    cd C:\Users\YourUserName\AppData\Local\Android\sdk\platform-tools
    

    다른 폴더에있을 수 있습니다. 설치 한 위치에 따라 다릅니다.

  2. 작업 장치를 표시합니다.

    adb devices
    

    응답 OS는 명령입니다

    List of devices attached
    0123456789ABCDEF     device
    
  3. 명령을 작성하십시오

        adb -s 0123456789ABCDEF shell "su"
    

    그것은 열립니다

        root@theDeviceName:/ #
    

4. 파일에 접근하고 모든 파일을 나열하십시오

ls

그리고 데이터 폴더와 같은 다른 곳으로의 So-On Chang 디렉토리

cd data/data

장치의 쉘 디렉토리에있을 때. 그냥 실행

su - root

그런 다음 데이터/ 폴더에 액세스 할 수 있어야합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top