Android/ADB

ADB를 활용한 개발 및 보안 테스트

임베디드 친구 2025. 3. 1. 11:18
728x90
반응형

ADB를 활용한 개발 및 보안 테스트

1. ADB란?

ADB(Android Debug Bridge)는 Android 기기와 컴퓨터 간의 통신을 가능하게 하는 명령어 기반의 도구입니다. 개발자는 ADB를 사용하여 앱을 디버깅하고 기기의 설정을 변경할 수 있으며, 보안 테스트나 자동화 테스트에도 활용할 수 있습니다.

이 글에서는 ADB를 활용하여 개발 및 보안 테스트를 수행하는 방법을 설명하고, 몇 가지 유용한 명령어를 예제와 함께 소개하겠습니다.


2. ADB를 활용한 개발 및 보안 테스트

2.1 특정 앱에 무작위 입력 테스트 수행

무작위 입력 테스트(Fuzzing Test)는 앱이 예상치 못한 입력을 받을 경우 어떻게 동작하는지를 확인하는 과정입니다. ADB의 monkey 명령어를 사용하면 특정 앱에 대해 자동화된 입력 테스트를 수행할 수 있습니다.

다음 명령어를 실행하면 특정 패키지의 앱에 대해 1000회의 무작위 이벤트를 발생시킵니다.

adb shell monkey -p <package_name> -v 1000

예를 들어, 패키지명이 com.example.app인 경우 다음과 같이 실행할 수 있습니다.

adb shell monkey -p com.example.app -v 1000

이 명령어는 다음과 같은 방식으로 동작합니다.

  • -p <package_name>: 특정 앱을 대상으로 테스트를 수행함.
  • -v 1000: 1000회의 무작위 이벤트(터치, 키 입력 등)를 발생시킴.

이 테스트는 앱의 크래시, 오류 메시지, 비정상적인 동작 등을 감지하는 데 유용합니다.

2.2 터치 및 모션 입력 비율 조정하기

기본 monkey 테스트는 무작위 입력을 발생시키지만, 터치 및 모션 이벤트의 비율을 조정할 수도 있습니다.

adb shell monkey --pct-touch 50 --pct-motion 30 -p <package_name> -v 1000

이 명령어에서 사용된 옵션은 다음과 같습니다.

  • --pct-touch 50: 전체 이벤트 중 50%는 터치 이벤트로 지정함.
  • --pct-motion 30: 전체 이벤트 중 30%는 모션 이벤트로 지정함.
  • -p <package_name>: 특정 앱을 대상으로 테스트 수행.
  • -v 1000: 1000개의 이벤트 실행.

예제 실행:

adb shell monkey --pct-touch 50 --pct-motion 30 -p com.example.app -v 1000

이러한 설정을 활용하면 특정 유형의 입력 이벤트를 집중적으로 테스트할 수 있습니다.


3. ADB를 활용한 시스템 설정 변경 및 조회

ADB의 content 명령어를 사용하면 Android 기기의 설정을 조회하거나 변경할 수 있습니다. 이는 보안 테스트 및 자동화 스크립트 작성 시 매우 유용합니다.

3.1 특정 설정값 확인하기

Android의 설정 데이터는 content://settings/ 경로를 통해 조회할 수 있습니다. 예를 들어, 현재 화면 밝기 설정을 확인하려면 다음과 같이 실행합니다.

adb shell content query --uri content://settings/system --where "name='screen_brightness'"

실행 결과 예시:

Row 0 name=screen_brightness, value=150

위와 같은 결과가 출력되면, 현재 화면 밝기 값이 150임을 의미합니다.

3.2 특정 설정값 변경하기

설정값을 변경하려면 content insert 명령어를 사용합니다. 예를 들어, 화면 밝기를 200으로 설정하려면 다음 명령어를 실행합니다.

adb shell content insert --uri content://settings/system \
    --bind name:s:screen_brightness \
    --bind value:i:200

설정 변경 후 다시 확인하려면 다음과 같이 실행합니다.

adb shell content query --uri content://settings/system --where "name='screen_brightness'"

변경이 성공적으로 반영되었는지 확인할 수 있습니다.


4. ADB를 활용한 보안 테스트

4.1 보안 취약점 점검을 위한 ADB 활용

ADB를 사용하면 보안 관련 취약점을 점검할 수 있습니다. 예를 들어, 특정 앱이 과도한 권한을 요구하는지 확인하거나, 기기의 설정값을 조작하여 앱의 동작을 테스트할 수 있습니다.

4.1.1 앱 권한 확인하기

설치된 앱의 권한을 확인하려면 다음 명령어를 실행합니다.

adb shell dumpsys package <package_name> | grep permission

예제 실행:

adb shell dumpsys package com.example.app | grep permission

출력 예시:

requested permissions:
  android.permission.CAMERA
  android.permission.READ_CONTACTS
  android.permission.ACCESS_FINE_LOCATION

앱이 필요 이상으로 많은 권한을 요구하는 경우, 보안적으로 문제가 될 수 있습니다.

4.1.2 앱 로그 모니터링

로그를 분석하면 보안 취약점이나 크래시 발생 원인을 파악할 수 있습니다. ADB를 사용하여 특정 앱의 로그를 실시간으로 확인할 수 있습니다.

adb logcat -s <package_name>

예제 실행:

adb logcat -s com.example.app

이 명령어를 사용하면 특정 앱의 로그를 필터링하여 볼 수 있습니다.


5. 마무리

이 글에서는 ADB를 활용한 개발 및 보안 테스트 방법을 다뤘습니다. ADB monkey 명령어를 사용하여 앱의 무작위 입력 테스트를 수행하고, content 명령어를 활용하여 시스템 설정을 조회 및 변경하는 방법을 설명했습니다. 또한, ADB를 이용한 보안 점검 방법도 소개하였습니다.

ADB는 강력한 도구이며, 이를 활용하면 Android 앱 및 시스템을 효과적으로 분석하고 테스트할 수 있습니다. 개발자는 ADB 명령어를 익히고 활용하여 앱의 안정성을 높이고, 보안 취약점을 사전에 점검할 수 있도록 해야 합니다.

728x90
반응형