Adb는 Android Debug Bridge의 약자로, 안드로이드 어플리케이션 등을 개발할 때 에뮬레이터 혹은 실제 안드로이드 핸드폰과 여러가지 작업 인터페이스를 진행하게 되는데, 이렇게 안드로이드 관련 장치들을 조작할 수 있는 다리 역할을 하는 것이 adb 툴이다.
Adb 명령어 옵션은 아래와 같다.
그림 2‑1. Adb option ( 1 )
그림 2‑2. Adb option ( 2 )
Adb가 현재 인식하고 있는 에뮬레이터 혹은 휴대폰의 목록을 보여준다 연결된 디바이스의 TCP/IP 포트번호를 알아낼 때도 유용하며 adb명령어를 수행하기전에 adb devices 명령어를 실행하여 연결여부를 체크하는 것이 필요하다. ( Genymotion 의 경우 IP 주소로 나타난다. )
그림 2‑3. Adb devices
그림 2‑4. Adb devices ( genymotion )
Adb install ( -r ) ( -l ) ( 파일명 ) .apk 명령어를 이용하여 어플리케이션을 설치할 때 사용한다. –r 옵션은 이미 존재하는 어플리케이션 데이터를 지우지 않고 재설치를 하며 –l 옵션은 다른 장치로 복사되어 넘어가는 것을 막는 옵션이다.
그림 2‑5. Adb install
( -r ) ( -l ) 옵션을 이용해 이미 존재하는 어플리케이션 데이터를 지우지않으며 다른장치로 복사되어 넘어가는 것을 막는 옵션 명령어를 실행해보았다. 기존에 설치된 어플리케이션에는 지장을 주지 않는 것을 확인하였다.
그림 2‑6. Adb install 옵션
Adb uninstall ( -k ) ( 패키지명 ) 명령어를 이용해 어플리케이션을 삭제할 때 사용한다. Apk 파일 이름이 아닌 패키지 이름을 넣어야 하는 특징이 있다. ( -k ) 옵션을 붙일 경우 어플리케이션의 데이터를 보존 시키게 된다.
그림 2‑7. ddms 모니터링
그림 2-4. 에서 확인한 패키지명을 이용해 apk 파일을 삭제해야한다. Adb uninstall com.nsw.wallpaper.IU.apk 명령어를 이용해 삭제 완료하였다.
그림 2‑8. Adb uninstall
스마트폰을 재부팅 시킨다.
그림 2‑9. Adb reboot
Adb를 종료시킨다. 주로 adb에 문제가 생겨서 Target device가 오프라인으로 뜨거나 에러가 발생할 때 사용한다.
그림 2‑10. Adb kill-server
종료된 adb 를 실행시킬 때 사용한다.
그림 2‑11. Adb start-server
Adb pull ( Target device의 파일위치 ) ( 파일 이름 ) 을 이용하여 Target device의 파일 위치에 있는 파일을 현재 컴퓨터의 파일이름으로 복사하는 명령어이다.
Ex) /data/app/aa.apk 파일을 c:\aa.apk 로 가져오려고 할 경우 Adb pull /data/app/aa.apk aa.apk 로 사용한다. 그림 2-12. 를 보면 packages.xml 파일이 옮겨진 것을 확인할 수 있다
그림 2‑12. Adb pull
2.7. adb pull과는 반대로 Target device의 파일 위치에 있는 파일을 현재 컴퓨터의 파일이름으로 거꾸로 복사하는 명령어이다. 아래 그림을 보면 c:\Android\Analysis\ssong.txt 파일이 /data/app/ 폴더 안으로 들어가 있는 것을 확인할 수 있다.
그림 2‑13. Adb push
다양한 명령어를 수행할 수 있는 # 프롬프트를 사용할 때 활용하는 명령어이다. 여러 개의 디바이스 중 하나에 접속할 때에는 adb –s ( 연결할 디바이스명 ) shell 을 이용해 실행시킨다.
그림 2‑14. Adb shell
그림 2‑15. Adb shell ( 여러 개의 디바이스 )
Adb chmod ( 퍼미션번호 ex)4755 ) ( 경로 ) 를이용해 퍼미션을 부여할 수 있으며 adb shell rm ( 경로 ) 명령어를 이용해 파일삭제 등의 기능을 수행할 수 있다. 아래 표는 shell 명령어를 정리한 내용이다.
명령어 |
설명 |
Cat /proc/version |
커널 버전 |
Cat /proc/cpuinfo |
프로세서정보, CPU type, 모델 제조사 등 |
Cat /proc/meminfo |
메모리 정보, 실제 메모리 및 가상 메모리 |
Cat /proc/devices |
현재 커널에 설정되어 있는 장치 목록 |
Mount |
마운트된 모든 장치 정보 |
Df |
하드디스크 사용량 |
Cat /proc/filesystems |
커널에 설정되어 있는 파일 시스템 목록 |
Cat /proc/swaps |
스왑파티션의 크기와 사용량 |
Cat /proc/interrupts |
장치가 사용중인 인터럽트 목록 표시 |
Cat /proc/ioports |
현재 사용중인 input/output 포트 |
Cat /proc/partitions |
파티션 정보 |
Cat /proc/uptime |
시스템이 살아있는 시간 |
Cat /proc/stat |
시스템 상태에 관한 정보, CPU사용통계, 부팅이후 page fault 발생 횟수 등 |
Cat /proc/zoneinfo |
Zoneinfo |
Dmesg |
시스템 부팅 시 나왔던 메시지 |
Ps |
실행중인 프로세스 정보 |
Ps –p –t |
프로세스와 쓰레드 목록 |
Set or printenv |
환경설정값 출력 |
Adb logcat 명령어를 이용해 로그기록을 확인할 수 있다. 그림 2-16 과 그림 2-17 의 붉은 표시 안의 내용은 동일하다.
그림 2‑16. Gdb logcat
그림 2‑17. Dalvik Debug Monitor 로그
옵션 |
설명 |
-c |
현재 저장된 로그들을 모두 삭제 |
-d |
저장된 로그를 화면에 출력하고 종료 |
-f <파일명> |
파일에 로그정보를 저장 |
-g |
로그버퍼의 크기를 출력한 후 종료 |
-b <버퍼명> |
Main(기본) / radio / event 버퍼중 선택 |
-s |
Silent를 기본 우선순위로 지정 (-s 대신 *:S 도 가능 ) |
-v |
원하는 형식으로 출력을 원할 시 사용 [형식] è brief : 우선순위/태그 + PID Process : PID 만 Tag : 우선순위 / 태그만 Thread : 프로세스:쓰레드 + 우선순위/태그 Raw : 다른 데이터 없이 로그만 출력 Time : 날짜 + 시간 + 우선순위/태그 + PID Long : 모든데이터를 출력하고 빈줄로 로그들을 구분 |
맛집 해킹 hacking web 웹 네트워크 network 학원 해커 크래커 hacker cracker 강아지 dog 고양이 해운대 강남 서면 보쌈 치맥 치킨 맥주 육회 회 포렌식 침해대응 cert 관제 모의해킹 mobile 모바일 무선 wireless 디지털포렌식 Clanguage C언어 C# JSP JAVA tool 해킹방어대회 ctf 문제풀이 기타 맛집 해킹 hacking web 웹 네트워크 network 학원 해커 크래커 hacker cracker 강아지 dog 고양이 해운대 강남 서면 보쌈 치맥 치킨 맥주 육회 회 포렌식 침해대응 cert 관제 모의해킹 mobile 모바일 무선 wireless 디지털포렌식 Clanguage C언어 C# JSP JAVA tool 해킹방어대회 ctf 문제풀이 기타
'정보보안 > Mobile Hacking & Security' 카테고리의 다른 글
.apk 파일 디컴파일방법 (0) | 2014.09.14 |
---|---|
안드로이드 .APK 파일 다운로드 방법 (0) | 2014.09.14 |
모바일 - Flight.apk 게임앱 분석 (0) | 2014.09.10 |
모바일 분석방법 (3) (0) | 2014.09.09 |
모바일 분석방법 ( 1 ) (0) | 2014.09.09 |