기본 콘텐츠로 건너뛰기

라벨이 모바일인 게시물 표시

앱 안에 인증문자 받아오기

회원 가입이 필요한 앱을 만들다 보면 문자로 본인 인증을 하게 하는 경우가 있다. 그런데 이 때 문자가 오면 자동으로 입력칸에 인증번호가 채워지는 앱이 있는데 별 건 아니지만 참 편한 기능이지 않은가. 안드로이드는 BroadCastReceiver 라는 것을 이용해서 구현할 수 있다. BroadCastReceiver 는 간단히 말하면 폰 내에서 어떤 일이 생기면 알려주는 일을 수행할 수 있는 녀석이다. 문자가 온다거나 화면이 꺼진다거나 하는 것 말이지. 어쨌든 오늘 할 거는 문자(SMS)를 받아오는 것이니 거기에만 집중해봅시다. 일단 문자를 받아오기 위해서는 권한이 필요하다. AndroidManifest.xml 에 권한을 추가하자. <uses-permission android:name="android.permission.RECEIVE_SMS"/> 다음으로는 아까 말한 BroadCastReceiver 를 상속하는 클래스를 만들어야 한다. 여기서는 SMS를 받아올 거니까 적당히 SMSReceiver라는 이름을 주도록 하자. public class SMSReceiver extends BroadCastReceiver { // 지정한 특정 액션이 일어나면 수행되는 메서드 @Override public void onReceive(Context context, Intent intent) { // SMS를 받았을 경우에만 반응하도록 if문을 삽입 if (intent.getAction().equals( "android.provider.Telephony.SMS_RECEIVED")) { StringBuilder sms = new StringBuilder(); // SMS문자를 저장할 곳 Bundle bundle = intent.getExtras(); // Bundle객...

안드로이드 APK 디컴파일

안드로이드는 JAVA기반이기 때문에 런타임 후 코드가 실행되는 구조로 코드를 역으로 컴파일가능하다. 그중 가장 흔하게 사용하는 Dex2Jar이 있다. 이를 이용하면 dex파일을 jar로 변환이 가능하다. jar로 변환 후 JD GUI툴을 이용하여 코드를 볼 수있다. 아래 2가지 툴을 다운받아서 사용하면 되고 Windows와 Mac모두 지원이 된다. dex2jar http://code.google.com/p/dex2jar/downloads/list dex2jar-0.0.9.12-a.zip JD GUI http://jd.benow.ca/ jd-gui-0.3.5.osx.i686.dmg   jd-gui-0.3.6.windows.zip apk파일을 jar로 변환하여 JDGUI로 어떻게 코드를 보는지 하나씩 설명 하겠다. 1) 소스를 볼 apk파일을 준비한다음 apk->zip파일로 확장자를 변환하여 압축을 푼다. 참고로  http://www.apkmirror.com  사이트를 이용하면 구글플레이에 올라온 앱을 모두 구할 수 있다. 2) 압축을 풀면 classs.dex파일이 보인다. 이파일을 dex2jar툴을 이용하여 jar로 변형한다. 위에서 받은 dex2jar압축을 풀면 dex2jar.bat(windows용)파일과 dex2jar.sh(mac용)을 볼 수 있다. 3) 명령어를 통해 dex파일을 jar로 변경 해보자.(mac) $>./dex2jar.sh <apk압축을 푼 위치>/classes.de 이렇게 명령어를 실행 하고 나면 classes.dex의 같은 폴더내에 classes_dex2jar.jar파일이 생성된다. JD-GUI를 통해서 디컴파일된 jar파일을 불러와서 코드를 보면된다. 이렇게 디컴파일이 쉽다 보니 코드를 난독화 하여 빌드되는 앱이 대부분일 것이다. 예를 들어 클래스명이나 메서드 명을 알아보지 못하게 바꿔버리는 해당클래스나 메서드가 어떤역할을 하는지 ...

앱이 파일을 읽고 쓰는 위치

파일을 읽고 쓰는 위치들의 종류 안드로이드에서 파일들이 저장되는 저장 장치는 크게 두 가지로 구별 됩니다.  내부 메모리 (internal memory):  기기 내 보드에 장착된  플래시 메모리 외부 메모리 (external memory):  기기의 슬롯에 삽입 또는 제거될  수 있는 기기 외부 저장 장치  내부 메모리 (Internal Memory) 접근하고자 하는 파일의 위치가 내부 메모리의 어디인가에 따라 호출해야 할 메소드가 달라집니다. 크게 세 가지 경우를 들 수 있습니다. 어플리케이션 고유의 경로 어플리케이션 파일(APK) 내에 있는 리소스 파일 내부 메모리 안 임의의 위치 어플리케이션 고유의 경로 안드로이드 어플리케이션은 자신의 고유한 경로에 파일을 읽거나 기록할 수 있습니다. 경로는 다음과 같습니다. /data/data/앱의 패키지 이름/files 예를 들어 보죠. 어플리케이션의 패키지가 me.blog.netrance.file_test_app이면, 그것의 고유 경로는 /data/data/me.blog.netrance.file...