명령줄이 Android 휴대폰에서 설치된 APK를 내보내는 방법 조사

배경
APK 파일은 앱 시장에만 존재하고 PC에서 직접 다운로드할 수 없는 경우가 많다.휴대폰으로 내려받아 바로 설치했고 원래 APK 파일도 저장할 수 없었다.
APK가 휴대전화에 설치되면 안드로이드 시스템은 원시 APK와 똑같은 복사본을 저장한다. 데이터/app 디렉터리에 위치한다. 파일 이름은'APK의 가방 이름 - 1.apk'또는'APK의 가방 이름 - 2.apk'이다.이 가방의 이름은com과 같이 package name입니다.xxx.xxx.
데이터/app 이 디렉터리는 루트가 아닌 경우 직접 볼 수 없습니다.다행히도 이 디렉터리에 있는 모든 APK 파일은other 그룹의 읽을 수 있는 권한이 있습니다.
이것이 바로 본문 방법의 원리다.
다음은 위챗이라는 APK를 예로 들어 구체적인 조작 절차를 설명한다.
단계
Step 0: 핸드폰에 APK를 설치하고 켜기(아래 단계에서 APK를 켜는 상태로 유지).
Step 1: PC를 adb에 연결합니다.이 단계는 분명히 필요조건입니다.adb에 대해 잘 모르시는 분은 관련 자료를 찾아보시기 바랍니다.
Step 2: APK의 패키지 이름 가져오기(package name) - 가장 중요한 단계 - 두 가지 방법이 있습니다.
첫 번째 방법 - 이 APK의 패키지 이름이 어떤 문자열을 포함할지 대충 알고 있다면.
예를 들어 우리는 위챗이 텐센트에서 만든 것임을 알고 있다. 그러면 관례에 따르면 가방 이름에는'텐센트'라는 문자열이 포함되어 있을 것이다.
방법: PC의 명령줄을 열고 adb shellps를 입력합니다.이것은 현재 휴대전화에서 실행 중인 모든 프로그램을 보여 줍니다. 틀림없이 당신이 원하는 APK의 패키지 이름을 포함할 것입니다.
이 출력에서 tencent를 포함하는 줄을 찾으면 가방의 이름은com입니다.tencent.mm.
두 번째 방법 - 만약 당신이 이 APK의 가방 이름이 어떤 내용을 포함할 수 있는지에 대해 아무것도 모른다면.
이 때 비교적 복잡한 명령을 사용할 수 있습니다:dumpsys activity activities
방법: PC의 명령줄을 열고 adb shell dumpsys activity activities를 입력하면 현재 핸드폰에서 실행 중인 모든 응용 프로그램의 상세한 정보를 표시하고 열기 순서대로 배열하며 마지막으로 열린 APK 정보는 출력의 맨 앞에 놓습니다.
(출력이 매우 길어서 파일로adb shell dumpsys activity activities > temp.txt를 다시 볼 수 있습니다)
맨 앞의 몇 줄은 이렇게 보인다.
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
안에 있는 기술 디테일에 놀라지 마세요. 저희는 그런 거 신경 안 써도 돼요~
Step 3:adb pull 명령을 사용하여 APK 내보내기
APK의 패키지 이름을 알면 APK를 내보내는 것이 간단합니다.데이터/app 아래의 APK 파일 이름은 두 가지 상황만 있기 때문에 하나씩 시험해 보면 된다
adb pull data/app/com.tencent.mm-1.apk com.tencent.mm.apk
adb pull data/app/com.tencent.mm-2.apk com.tencent.mm.apk
세 번째 방법은 좋지만 APK 이름이 무엇인지 먼저 알아야 한다.adb shell pm list package -f-3
참고: Android4.4 이후 Dumpsys의 출력은 약간 달라졌습니다. 여기서 Dumpsys의 출력을 얻은 후 키워드를 검색하면 Stack #1을 검색하면 아래 몇 줄에서 비슷한 가방 이름을 찾을 수 있습니다.
<끝>

좋은 웹페이지 즐겨찾기