programing

루트 액세스 없이 설치된 앱의 APK를 받으려면 어떻게 해야 합니까?

stoneblock 2023. 9. 26. 21:58

루트 액세스 없이 설치된 앱의 APK를 받으려면 어떻게 해야 합니까?

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

시스템이 아닌 앱의 모든 APK 파일이 /data/app에 위치하고 이 폴더에 액세스하려면 루트 권한이 필요하기 때문에 불가능하다고 생각했습니다.그리고 구글 플레이 스토어에는 뿌리가 없는 기기에서도 APK 파일에 접근할 수 있는 것처럼 보이는 수많은 앱들이 있다는 것을 알게 되었습니다.

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

루트 권한 없이 /data/app에 액세스할 수 있습니다. 해당 디렉토리의 권한은 rwxrwx--x입니다.디렉토리에 대한 사용 권한 실행은 디렉토리에 액세스할 수 있음을 의미하지만 읽기 권한이 부족하면 디렉토리 내용 목록을 얻을 수 없으므로 디렉토리에 액세스하려면 액세스할 파일 이름을 알고 있어야 합니다.Android의 패키지 관리자가 지정된 패키지의 저장된 apk의 이름을 알려줄 것입니다.

에서 이 하려면 다음을 adb shell pm list packages설치된 패키지 목록을 가져오고 원하는 패키지를 찾습니다.

으로 APK 의를 를 알 수 .adb shell pm path your-package-name.

디렉토리를 를 수 adb pull full/directory/of/the.apk APK 파일은 콘솔을 실행하는 디렉토리에 저장됩니다.

경로가 @tarn 가 을 제공합니다. 롤리팝 아래에서 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의 위치는 ..../sdk/platform-tools/base입니다.PC/laptop에 pk를 입력합니다.

에서 Nugat(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.

  1. 설치된 apk의 목록을 확인합니다(package command에는 설치된 경로와 패키지 이름도 나열됨).adb 셸 PM 목록 패키지 -f
  2. adb pull / package_path/ package 이름 /path_in_pc를 사용합니다(위 명령 1에서 가져올 수 있는 package 경로 및 패키지 이름).

는이 요.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)

이클립스 for Android 개발이 설치된 경우:

  • 장치를 디버깅 장치로 사용합니다.전화기에서:Settings > Applications > Development and enable USB 디버깅, http://developer.android.com/tools/device.html 참조
  • Eclipse에서 DDMS-window를 엽니다.창 > 원근법 열기 > 기타...> DDMS, http://developer.android.com/tools/debugging/ddms.html 참조
  • 장치가 보이지 않는 경우 장치용 USB 드라이버를 다시 설치해 봅니다.
  • 가운데 창에서 탭 "파일 탐색기"를 선택하고 시스템 > 앱으로 이동합니다.
  • 이제 하나 이상의 파일을 선택한 다음 맨 위에 있는 "장치에서 파일 꺼내기" 아이콘(탭 오른쪽)을 클릭할 수 있습니다.
  • 대상폴더선택 - tada!

왼쪽 상단 모서리에 있는 ES 탐색기 -> 메뉴 버튼(가로 줄무늬 3개)을 엽니다. -> Libraries(라이브러리) 섹션에서 APPs(애플리케이션)를 선택합니다.

따라서 모든 사용자 앱의 목록을 얻을 수 있습니다.당신의 앱을 찾아서 길게 누르면서 선택하세요.그런 다음 오른쪽 하단 모서리에 있는 "더보기"를 누르고 "보내기"를 선택합니다.그러면 다른 옵션을 사용할 수 있습니다. 예를 들어 "ES Save To"를 선택하여 .apk 파일을 홈 디렉토리 또는 다른 곳에 저장할 수 있습니다.

설치된 앱의 APK 파일은 F-DroidPlay Store에서 모두 사용 가능한 무료 오픈 소스 Ghost Commander 앱을 통해 얻을 수 있습니다.

Ghost Commander 앱에서 Apps로 이동한 다음 목록에서 App을 길게 누르고 Copy(복사)를 선택합니다..apk 파일은 다른 파일 패널에서 사용할 수 있습니다. 원하는 곳에 저장할 수 있습니다.

Ghost Commander는 두 패널 파일 관리자이므로 먼저 다른 패널을 사용하고 apk 파일을 복사할 폴더를 열어야 합니다.그런 다음 다른 패널로 이동한 후 앱으로 이동합니다.

('Apps'가 표시되지 않을 경우, 먼저 화살표를 누른 후 Home을 선택합니다.)

링크:

  1. https://f-droid.org/packages/com.ghostsq.commander/
  2. https://sourceforge.net/projects/ghostcommander/
  3. https://play.google.com/store/apps/details?id=com.ghostsq.commander

비루트 장치에서 APK의 패키지 이름을 얻을 수 있는 방법을 찾았습니다.그렇게 우아하진 않지만 항상 작동합니다.

1단계: 단말기에서 대상 APK를 엽니다.

2단계: PC cmd 창에서 다음 명령을 입력합니다.

 adb shell dumpsys activity a > dump.txt

이 명령어의 출력이 많으므로 파일로 리디렉션하는 것이 좋습니다.

3단계: 이 쓰레기장을 엽니다.편집기가 있는 txt 파일입니다.

Android 4.4용 디바이스의 경우:
파일의 시작은 다음과 같습니다.

ACTIVITY MANAGER ACTIVITIES (dumpsys activity activities)  
  Main stack:  
  * TaskRecord{41aa9ed0 #4 A com.tencent.mm U 0}  
    numActivities=1 rootWasReset=true userId=0  
    affinity=com.tencent.mm  
    intent={act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10600000 cmp=com.tencent.mm/.ui.LauncherUI}  
    realActivity=com.tencent.mm/.ui.LauncherUI  
    askedCompatMode=false  
    lastThumbnail=null lastDescription=null  
    lastActiveTime=19915965 (inactive for 10s)  
    * Hist #9: ActivityRecord{41ba1a30 u0 com.tencent.mm/.ui.LauncherUI}  
        packageName=com.tencent.mm processName=com.tencent.mm 

패키지 이름은 이 예제의 세번째 줄인 com.tencent.mm 에 있습니다.

Android 4.4 이상의 경우:
dumpsys 출력이 약간 변했습니다."스택 #1"을 검색해 보십시오. 패키지 이름이 그 아래에 매우 가까울 것입니다.

또한 "baseDir"을 검색하면 apk 파일의 전체 경로를 찾을 수 있습니다!

패키지별 경로로 분리된 다운로드가 포함된 한 줄 명령

SEARCH_APP="minecraft" && PKGS=$(adb shell pm list packages | grep ${SEARCH_APP}) && for PKG in ${PKGS}; do PKG=${PKG#*:} && mkdir -p ${SEARCH_APP}/${PKG} && PKG_FILES=$(adb shell pm path ${PKG}) && for PKG_FILE in ${PKG_FILES}; do PKG_FILE=${PKG_FILE#*:} && adb pull $PKG_FILE ${SEARCH_APP}/${PKG}; done; done

또는 구글 플레이에서 '블루투스 파일 전송'을 받아 홈 폴더를 다음과 같이 설정할 수 있습니다./system/. 그러면 당신은 갈 수도 있습니다./.

언급URL : https://stackoverflow.com/questions/11012976/how-do-i-get-the-apk-of-an-installed-app-without-root-access