모의해킹/안드로이드 앱

ADB - Install/uninstall, pull/push 명령

초코맛동산 2024. 8. 10. 02:30

1. install 명령어

install: 연결된 안드로이드 장치에, 원하는 애플리케이션을 설치할 수 있는 명령어. (확장자는 apk로)

형식: adb install (절대)경로 / 애플리케이션.apk

여기서 -d 옵션은 현재 설치된 앱의 버전보다 낮은 버전의 앱을 설치할 수 있는 옵션으로 기존에 설치된 해당 앱보다 현재 install 하려는 코드의 버전이 더 낮아서(sdk를 낮춤) 생긴 오류를 수정하기 위해 추가했습니다. 

 

옵션 설명
-r  기존 앱을 재설치
-t 테스트 중인 앱 설치 가능(원래 보안상 불가능)
-d 현재 설치된 앱의 버전보다 낮은 버전의 앱을 설치
-p 앱의 전체가 아닌 일부만 설치
(
앱의 기능을 나눠서 따로 설치할 때)
-g 앱이 필요로 하는 모든 권한을 자동으로 허용
(카메라 등의 권한)

 

만약 아래와 같은 오류가 발생했다면? : Failure [-26: Package com.android.insecurebankv2 new target SDK 22 doesn't support runtime permissions but the old target SDK 26 does.

오류 원인) 
stackoverflow 에서 확인해보니, 
targetSdkVersion >= 23으로 앱을 설치한 다음 targetSdkVersion < 23으로 다시 설치하려고 하면 발생하는 오류

해결 방법) 
패키지를 한 번 삭제해준 뒤 다시 설치

1) adb uninstall 패키지명

2) adb install (절대)경로/애플리케이션.apk // 다시 설치

 

 

 

2. unstall 명령어

uninstall: 설치한 애플리케이션을 삭제할 수 있는 명령어. 

형식: adb unstall 패키지명

 

옵션 설명
-k 데이터 유지한 채 애플리케이션만 삭제

 

2.1 패키지명 찾기 

애플리케이션 삭제를 위한 uninstall 명령어는 '정확한 패키지명'이 필요하다. 그러기 위해 shell > pm(package manage) 명령어를 통해 확인할 수 있다. 

명령어: adb shell pm list packages -f ❘ grep bank

 

 

  • pm list packages:
    • pm: 안드로이드 디바이스에서 설치된 앱들을 관리하는 도구
    • list packages: 디바이스에 설치된 모든 패키지(앱)를 나열하는 명령어
  • -f:
    • -f: 패키지(앱)의 설치 경로를 함께 출력
  • | grep bank:
    • grep: 주어진 문자열(bank)을 포함하는 라인만 출력하는 리눅스 명령어 -> bank를 필터링. 

 

 

 

3. push 명령어

push: PC에 저장된 파일을 연결된 장치에 복사. 

형식: adb push 파일 저장위치 / 장치 저장위치

C:\Desktop\secret_message.txt 파일을 연결된 디바이스의 /sdcard/Download 경로에 복사했고, Device Explorer에서 해당 경로를 확인해봤을 때 같은 내용의 secret_message.txt가 생성된 것을 확인할 수 있었다.

 

 

4. pull 명령어

pull: 연결된 장치에 저장된 파일을 PC로 복사. 

형식: adb pull 장치경로 파일 저장위치

 

pull 명령어를 통해 연결된 디바이스 경로의 파일을 내 PC에서 확인할 수 있었다. 

 

 

 

 

(massage는 오타인데 다시 캡쳐 뜨기 귀찮아서 놔두었습니다.)