티스토리 뷰

이클립스 환경설정


이거 생기게 하기!

Window - Customize Perspective - Command Groups Availability - Android SDK and AVD Manager - OK


Window - Open Perspective - Java



AVD만들기


윈도우에서는 메모리를 768이 한계

(설정한 Device 마다 디폴트로 실제 하드웨어 값이 들어가긴함)



C:\Users\U53X\.android\avd 밑에 만들어짐

Test.ini 열어보면 정보 알려줌

avd.ini.encoding=ISO-8859-1

path=C:\Users\U53X\.android\avd\Test.avd

path.rel=avd\Test.avd

target=android-15

 

Test.avd 폴더 안에 


config에는 어떤 설정을 했는지 (구글넥서스, sd카드 크기..등등)

sdcard 이미지는 용량이 128mb(아까 만든거)

userdata 3.75mb

실제 안드로이드 osC:\Android\sdk\system-images 에 있음

C:\Android\sdk\system-images\android-15\default 보면


 x86에서 system.img

첫실행은 오래 걸림

공장에서 설치된 img 파일들이 기동되면 userdata로 재설치되기 때문

(user밑에 app밑으로)

 

너어무 오래걸리면 밑에 버튼한번 눌러주깅

 

중요한 메뉴키 Home Home Back Esc



SMS 전송 테스트

 

AVD위에 이름은 


 콘솔 서비스 포트

AVD추가하면 5555 5556 5557….이렇게 추가


하려면 telnet 설치 : 제어판\모든 제어판 항목\프로그램 및 기능 - windows 기능 사용/사용안함에서 telnet 체크


안드로이드 매니저에 접속한 콘솔


help 눌러보면 명령어들 볼 수 있는데 이중에서 우리가 쓸건 sms


sms 해보면 send pdu 나오는데 우린 sms send 쓸것


phonenumber 필요 (가상의 발신자 번호) ==> 12345로 함


백스페이스 안먹음 주의 (그것도 명령어로 취급)






ADB

주요 명령어


로컬에 있는것도, 실제 디바이스도, 또 다른 ADB디바이스도 원격으로 디버깅 가능

 


adb devices

온라인이면 device

오프라인이면 물려져있긴 한데 구동을 할 수 없음

 

지금은 하나니까 당연히 그것으로 인식하지만 두개 이상이면 명령어 타겟을 지정필요

-d usb에 하나 연결되어있을 때

-e 는 에뮬레이터 하나

-s 는 무엇이든 두개 이상



adb shell

#이 뜨는걸보니 root 라는거 (실제로 id 쳐보면 root라고 알려줌)

 

순수하게 자바로 만들어지지 않으면 못 돌림 (x86이라서)

돌리려면 arm 에뮬레이터로 돌려야함

에뮬레이터 올라가는데도 엄청 오래걸리고 화면 클릭해도 엄청 오래..걸리고..




shell 명령어 뒤에 명령어 쓸 수 있음

리눅스에서 쓸 수 있는 명령어들! 내부 명령어는 커널안에 다 포함되어있는 것

리눅스는 모두 외부명령어(실행파일로 존재). 각각의 명령어 파일이 있어야만 실행이 가능

이 파일들은 기본적으로 PATH경로에 있으므로 확인해보면



확인해보니 여기 없음

/system/bin에 있음


dd명령어로 이미지 따올 수 있음 (실제 기기는 루팅해서 뜰 수 있음)

여러가지 명령어들이 toolbox로 링크되어있음

toolbox라는 것 하나가 명령어들 다 포함하는 것

ip6tables iptables 리눅스에서 기본적으로 제공하는 방화벽

 

명령어 필요한데 여기 없으면 컴파일해서 여기 올리면 되고

아니면 toolbox 최신거 올리면 됨 or toolbox보다 요새는 BusyBox를 많이 씀 (훨씬 많은 기능)



install 명령어

Test.apk 설치

 

설치된 app 확인

마지막에 com.mix_four.dd-1.apk설치된게 확인됨 (실질적인 패키지 명)


 로 분석

 

AndroidManifest.xml 열어보기


string 밑에 이름을 찾을 수 있다고함

C:\Android\Analysis\dec_Test.apk\res\values strings파일 보면


앱 이름 확인



adb -e logcat

현재 에뮬레이터에서 일어나는 일 모두 로그로 남김 (실시간)


근데 보기 힘듦


ddms 라고 치면 달빅 디버그 모니터 실행


보통 error를 많이 봄


왼쪽에 보면 내가 지정한 프로세스만 볼 수 있도록 할 수도 있음


그 예로 문자함만 볼 때

1337은 프로세스 id (PID)

왼쪽에 필터링 + 이름 편의상 P1337

by PID: 1337



1337만 쭉 뜸



설치된 앱을 Activate 해서 보면


 추가됨



PID 16668 필터링 해두고 문자를 보내보자 문자 리시버가 발동, 문자를 빼오고 

죽었다가 살아나면서PID가 자꾸 바뀜! 에뮬레이터 껐다 켜도 돌아감!

tcp 덤프 떠서 확인 가능





소스 분석

1. AndroidManifest <application 부분의 activity, service, receiver

activity에서 MAIN이면서 LAUNCHER인거 가장 먼저

2. MainActivity 클래스의 onCreate 보기

3. service CoreService onCreate SMSReciever onReceive

SMSReceiver SMS_RECEIVED가 동작

부팅되면 무조건 실행되는 것이 서비스와 리시버이기 때문에 그 쪽 잘 보기

 

이 앱의 경우 설치되자마자 없어졌기 때문에 MainActivity onCreate 잘 보도록

댓글
댓글쓰기 폼