루트 액세스없이 설치된 앱의 APK를 얻으려면 어떻게합니까? 앱의 APK 파일을

루트 권한없이 설치된 Android 앱의 APK 파일을 추출하려고합니다.

system-apps가 아닌 앱의 모든 APK 파일은 / data / app에 있으며이 폴더에 액세스하려면 루트 권한이 필요하기 때문에 이것이 불가능하다고 생각했습니다. 그런 다음 Google Play 스토어에 루팅되지 않은 기기에서도 APK 파일에 액세스 할 수있는 수많은 앱이 있음을 발견했습니다.

누군가 이것이 어떻게 가능한지 말해 줄 수 있습니까? 루트없이 APK 파일을 백업하는 백업 앱이 없습니까?



답변

루트 권한없이 / data / app에 액세스 할 수 있습니다. 해당 디렉토리에 대한 권한은 rwxrwx–x입니다. 디렉토리에 대한 실행 권한은 디렉토리에 액세스 할 수 있음을 의미하지만 읽기 권한이 없다는 것은 컨텐츠 목록을 얻을 수 없음을 의미합니다. 디렉토리에 액세스하려면 액세스 할 파일 이름을 알아야합니다. 안드로이드의 패키지 관리자는 주어진 패키지에 저장된 APK의 이름을 알려줄 것입니다.

명령 행에서이를 수행하려면 adb shell pm list packages설치된 패키지 목록을 가져오고 원하는 패키지를 찾으십시오.

패키지 이름으로을 사용하여 실제 파일 이름과 APK의 위치를 ​​얻을 수 있습니다 adb shell pm path your-package-name.

그리고 전체 디렉토리를 알면 마침내 adb를 사용하여 adb pull full/directory/of/the.apk

롤리팝에서 apk 경로는 다음과 같습니다. /data/app/your-package-name-1/base.apk


답변

Android는 패키지 이름에 시퀀스 번호를 추가하여 최종 APK 파일 이름을 생성합니다 (Android OS 버전에 따라 다를 수 있음). 다음 명령 순서는 루트아닌 장치 에서 작동 합니다 .

  1. 원하는 패키지에 대한 APK 파일의 전체 경로 이름을 가져옵니다.

    adb shell pm path com.example.someapp

    출력은 다음과 같습니다 package:/data/app/com.example.someapp-2.apk.

  2. Android 기기에서 개발 상자로 APK 파일을 가져옵니다.

    adb pull /data/app/com.example.someapp-2.apk

성공적으로 뽑은 후 APK의 위치는 PC / 노트북의 ../sdk/platform-tools/base.apk에 있습니다.


답변

설치된 앱 목록을 얻기 위해 ROOT 권한이 필요하지 않습니다.

안드로이드 PackageManager로 할 수 있습니다.

아래는 작은 코드 스 니펫입니다.

final PackageManager pm = getPackageManager();
//get a list of installed apps.
List<ApplicationInfo> packages =  pm.getInstalledApplications(PackageManager.GET_META_DATA);

for (ApplicationInfo packageInfo : packages) {
    Log.d(TAG, "Installed package :" + packageInfo.packageName);
    Log.d(TAG, "Apk file path:" + packageInfo.sourceDir);
}

답변

  1. 설치된 apk 목록을 확인하십시오 (다음 명령은 설치된 경로와 패키지 이름도 나열 함).
    adb 쉘 오후 목록 패키지 -f
  2. 사용 ADB 풀 / package_path / 패키지 이름 / path_in_pc
    (패키지 경로와 패키지 이름 하나는 위의 명령 (1)에서 얻을 수 있습니다)

답변

Android 용 Eclipse Development를 설치 한 경우 :

  • 장치를 디버깅 장치로 사용하십시오. 휴대 전화 : 설정> 애플리케이션> 개발 및 USB 디버깅 활성화에 대해서는 http://developer.android.com/tools/device.html을 참조
    하십시오.
  • Eclipse에서 DDMS 창을여십시오 (창> 퍼스펙티브 열기> 기타 …> DDMS, http://developer.android.com/tools/debugging/ddms.html 참조).
  • 장치가 보이지 않으면 장치 용 USB 드라이버를 다시 설치하십시오.
  • 가운데 창에서 “파일 탐색기”탭을 선택하고 시스템> 앱으로 이동하십시오.
  • 이제 하나 이상의 파일을 선택한 다음 상단의 “장치에서 파일 가져 오기”아이콘 (탭 오른쪽)을 클릭 할 수 있습니다
  • 대상 폴더 선택-tada!

답변

Nougat (7.0)에서 Android 버전을 실행 adb shell pm list packages하여 장치에 설치된 패키지를 나열합니다. 그런 다음 adb shell pm path your-package-nameAPK의 경로를 보여주기 위해 실행 하십시오. 사용 ADB 후 다운로드에 패키지를 복사합니다 adb shell cp /data/app/com.test-1/base.apk /storage/emulated/0/Download. 그런 다음를 실행하여 APK를 다운로드에서 컴퓨터로 가져옵니다 adb pull /storage/emulated/0/Download/base.apk.


답변

나는 does not exist error

작동 방식은 다음과 같습니다.

adb shell pm list packages -f | findstr zalo

package:/data/app/com.zing.zalo-1/base.apk=com.zing.zalo

adb shell

mido:/ $ cp /data/app/com.zing.zalo-1/base.apk /sdcard/zalo.apk
mido:/ $ exit


adb pull /sdcard/zalo.apk Desktop

/sdcard/zalo.apk: 1 file pulled. 7.7 MB/s (41895394 bytes in 5.200s)