Linux C 에서 arm 크로스 컴파일 시 system() 함수 사용하기 흔히 컴퓨터에서 쓰는 Intel CPU 와 휴대폰의 ARM CPU 에서 사용하는 어셈블리어가 다르기 때문에 컴퓨터에서 작성한 프로그램이 폰에 심어 제대로 작동하기 위해서는 arm 크로스 컴파일러를 이용하여 컴파일하여야 한다. 그런데 sendevent 처럼 이벤트 보내기 등을 위하여 system() 함수를 쓰려고하면 제대로 동작하지 않는다.그 이유는 system() 함수는 리눅스에서 내부적으로 /bin/sh 를 호출하여 인자값을 처리하도록 한다.하지만 안드로이드는 /system/bin/mksh 가 쉘의 위치이다. 제대로 동작을 시키기 위해서는 안드로이드에 /bin에 sh 라는 쉘을 만들어주거나 system() 함수를 직접 만드는 방..
adb getevent를 이용한 터치 이벤트 분석 및 sendevent 로 터치, 드래그이벤트 보내기 adb shell getevent 를 이용하여 터치 이벤트를 먼저 분석해보겠습니다. 그림처럼 "adb shell getevent" 명령어를 치면 event 번호별로 무엇에 해당되는지 화면에 출력이 됩니다. 화면 아무곳에 한번 터치를 하면 그림의 아랫부분 처럼 /dev/input/event0: 0003 0039 00000000 이런식으로 이벤트들이 출력되게 됩니다. event의 번호는 폰마다 다르며 저같은 경우에 event0이 터치에 해당하는 이벤트입니다. 한번 터치 후 때면 9줄이 출력되는데 여기에는 Down 과 Up 으로 구분이 되어있습니다. 숫자의 첫번째 두번째 라인은 이벤트 종류이고 3번째 줄이 해..
adb를 이용한 안드로이드 화면 추출 및 분석 준비 도구 : Android-SDK 휴대폰 화면의 데이터를 이용하여 프로그램을 만들기 등에 사용할 수 있습니다.우선 android-SDK 를 설치하면 platform-tools 폴더 안에 adb.exe 가 있습니다.adb 는 원격기기(ex. 컴퓨터)에서 휴대폰에 접속을 할 수 있게 해주는 프로그램입니다.그냥 프로그램을 눌려 실행을 하면 안되고 cmd를 이용하여 옵션을 넣어 주어야 합니다. cmd 를 실행시켜 adb.exe 가 존재하는 디렉터리로 이동한 후 "adb shell" 명령어를 치시면 그림과 같이 휴대폰에 접속하는 것을 보실 수 있습니다. 아시다싶히 리눅스 계열은 파일, 디바이스 등 모든 것을 파일로 관리합니다.그러므로 화면도 /dev/graphics..