ADB를 통해 안드로이드 기기에 접근하는 방법은 다음과 같다.

 1) 장치 -> 로컬
  adb { options } pull [path to copy from] [local path to copy to]
 2) 로컬 -> 장치
  adb {options} push [local path to copy from] [path to copy to on avd]

ADB를 이용한 APK 설치 방법은 다음과 같다.
 adb {option} install [path to apk]

'0x002 OperatingSystem > 04. Android' 카테고리의 다른 글

[Command] nm  (0) 2017.12.29
[Tip] Dex 추출 방법  (0) 2017.12.29
[Tip] 분석 방지 솔루션 우회  (0) 2017.12.29
[Theory] 동적 디버깅  (0) 2017.12.29
[Theory] 안드로이드 필수 구성 요소  (0) 2017.12.29

 안드로이드 앱을 동적으로 디버깅 하기 위한 절차는 다음과 같다.

  1) APK Tools 를 이용해 디버깅 모드로 덤프한다.
  2) APK Tools 를 이용해 디버깅 모드로 덤프한 것을 디버깅 모드로 다시 패키징한다.
  3) 디버깅 모드로 패키징한 apk 파일을 서명해 AVD에서 실행한다.
  4) Netbeans 를 이용해 1) 에서 진행한 코드를 프로젝트에 추가 하고 android.jar 파일을 라이브러리에 추가한다.
  5) DDMS를 이용해 대생 앱에 대한 포트를 확인 및 연결한다.
  6) Netbeans IDE 탭 메뉴에서 Debug > Attach Debugger > Select JPDA를 선택해 Host 와 Port 를 설정함으로써 원격 디버깅을 연결한다.
  7) 분석할 부분에 브레이크 포인트를 설정한다.
  8) 에뮬레이터에서 특정 이벤트를 발생해 브레이크 포인트 설정 부분의 라인을 실행하게 유도한 뒤 동적 디버깅을 시작한다.

출처 : 안드로이드 모바일 악성코드와 모의 해킹 진단

'0x002 OperatingSystem > 04. Android' 카테고리의 다른 글

[Command] nm  (0) 2017.12.29
[Tip] Dex 추출 방법  (0) 2017.12.29
[Tip] 분석 방지 솔루션 우회  (0) 2017.12.29
[Command] ADB  (0) 2017.12.29
[Theory] 안드로이드 필수 구성 요소  (0) 2017.12.29

  안드로이드에는 액티비티(Activity), 서비스(Service), 콘텐트 프로바이더(Content Provider), 브로드캐스트 리시버(BroadCast Receiver)등 4가지의 주요 기능으로 구성된다. 기능을 간단히 정리하면 다음과 같다. 
  1) 액티비티 : 사용자에게 보여주는 디바이스 인터페이스이다. 메뉴를 클릭하거나 버튼을 클릭하는 등 특정한 액션에 의해 전환하게 되는 화면 마다 모두 액티비티라고 할수 있다.
  2) 서비스 : 화면에 보여주지 않고 백그라운드에서 실행된다. 네트워크 전송하거나 파일을 읽는 등의 작업이 있다. 액티비티가 화면에 보여주는 동안 이 기능이 같이 동작을 하는 경우가 대부분이다.
  3) 콘텐트 프로바이더 : 애플리케이션이 공유하는 공간이다. 데이터가 파일 시스템이나 다른 저장소에 있더라도 애플리케이션은 콘텐트 프로바이더를 통해 데이터에 접근한다.
  4) 브로드캐스트 리시버 : 실시간으로 시스템의 상태(배터리, 메일 알람 등)를 확인해 이벤트가 발생할 때 응답한다. 디바이스에 발생하는 노티피케이션 등을 이용해 사용자에게 알람을 발생한다.

1. 액티비티
  안드로이드 환경에서 액티비티는 대개 하나의 화면에서 표시된다.  예를 들어 메인 화면에서 하나의 버튼을 클릭하면 다음 페이지로 접근되며 그 다음에 다른 액션에 의해 다른 액티비티들이 실행 되어 사용자 화면에 보여준다. 액티비티의 생명 주기는 다음과 같다.
  1) 시작(Starting) : 액티비티가 시작 될 때 메모리에 해당 정보가 없을때 시작 상태로 작동 된다. 콜백 함수에 의해 동작이 이뤄지고 동작 상태로 전환된다.
  2) 동작(Running) : 사용자의 화면에 보여주는 상태이며, 액티비티에 실제 액션들이 이뤄지는 상태이다. 문자를 입력하거나 스크린에 터치를 하는 동안의 상태이다.
  3) 대기(Paused) : 사용자의 화면에는 아직 보이는 상태이지만, 포커스는 위치하고 있지 않는 상태이다. 특정 메시지로 인해 대화상자가 액티비티 앞에 발생 할 때를 예로 들 수 있다.
  4) 멈춤(Stopped) : 사용자의 화면에는 보이지 않지만 메모리 상에 존재하는 상태이다. 사용자가 다음 액티비티에서 실행하고 있다가 언제든지 빠르게 볼 수 있게 저장되어 있다.
  5) 파괴(Destoryed) : 메모리에 더 이상 존재하지 않는 상태이다.

2. 서비스
  사용자에게 보이지 않고 백그라운드에서 액티비티와 비슷한 프로세스로 동작 한다. 음악을 듣고 있을 때 다른 어플리케이션이 동작하면서도 백그라운드에서 실행되는 것은 이런 서비스의 기능 때문이다.

3. 콘텐트 프로바이더
  콘텐트 프로바이더는 애플리케이션 사이에 데이터를 공유하기 위한 인터페이스이다. 기본적으로 안드로이드는 애플리케이션 마다 샌드박스에서 동작하기 때문에 시스템에 있는 다른 애플리케이션들끼리 직접 데이터 접근은 격리된다. 작은 데이터들은 인텐트를 통해 공유된다. 콘텐트 프로바이더는 음악, 파일, 사진 등 용량이 큰 데이터를 공유하는데 적합하다.

출처 : 안드로이드 모바일 악성코드와 모의 해킹 진단

'0x002 OperatingSystem > 04. Android' 카테고리의 다른 글

[Command] nm  (0) 2017.12.29
[Tip] Dex 추출 방법  (0) 2017.12.29
[Tip] 분석 방지 솔루션 우회  (0) 2017.12.29
[Command] ADB  (0) 2017.12.29
[Theory] 동적 디버깅  (0) 2017.12.29

  파일 시스템의 변화를 탐지하려면 다음과 같은 Windows API가 필요하다.


    1) FindFirstChangeNotification
    2) FindNextChangeNotification
    3) ReadDirectoryChangeW

리눅스에서 ln 명령은 파일시스템에서 링크 파일을 만드는 명령입니다.

 1) 심볼릭 링크( Symbolic Link )
  - 단순히 원본 파일을 가리키도록 링크만 생성한 것으로 윈도우의 바로가기를 생각 하시면 됩니다. 심볼릭 링크가 생성된 파일의 원본이 없는 경우 에러 메시지를 출력해줍니다.

 2) 하드링크( Hard Link )
  - 원본 파일과 이름만 다른 동일 파일이라고 생각하시면 됩니다. 내용은 완전히 동일하지만 파일명이 다릅니다.

 3) 사용법
  ln [Option] [Original] [Target]

 

'0x002 OperatingSystem > 02. Linux' 카테고리의 다른 글

[Tip] EggShell  (0) 2017.12.29
[Tip] xinetd  (0) 2017.12.29
[Tip] 동시에 여러 명령 실행하기  (0) 2017.12.29
[Command] Find  (0) 2017.12.29
[ShellCode] Bash Shell Code  (0) 2017.12.29

Linux 환경에서 Bash Shell 을 실행시켜주는 ShellCode 입니다.

"\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x89\xc2\xb0\x0b\xcd\x80\x31\xc0\xb0\x01\xcd\x80"

'0x002 OperatingSystem > 02. Linux' 카테고리의 다른 글

[Tip] EggShell  (0) 2017.12.29
[Tip] xinetd  (0) 2017.12.29
[Tip] 동시에 여러 명령 실행하기  (0) 2017.12.29
[Command] Find  (0) 2017.12.29
[Command] ln  (0) 2017.12.29

+ Recent posts