Reverse Engineering, 안드로이드학습 · 2013. 5. 2. ·...

51
Reverse Engineering, 안드로이드 학습 @geekbeast 진성주

Transcript of Reverse Engineering, 안드로이드학습 · 2013. 5. 2. ·...

Page 1: Reverse Engineering, 안드로이드학습 · 2013. 5. 2. · 안드로이드을빨리이해하기위한방법 1. OpenSource활용 2. Reverse Engineering활용하여학습하기 1.

Reverse Engineering, 안드로이드 학습

@geekbeast

진성주

Page 2: Reverse Engineering, 안드로이드학습 · 2013. 5. 2. · 안드로이드을빨리이해하기위한방법 1. OpenSource활용 2. Reverse Engineering활용하여학습하기 1.

요즘 대세는?

1. 클라우드

2. 모바일

1. 아이폰

2. 안드로이드

3.아이유

00 Trend

Page 3: Reverse Engineering, 안드로이드학습 · 2013. 5. 2. · 안드로이드을빨리이해하기위한방법 1. OpenSource활용 2. Reverse Engineering활용하여학습하기 1.

00 Introduce

진성주- OKJSP Android Project

안드로이드 프로그래밍: 제대로 된 안드로이드 앱 개발을 위한

진성주,최종열,백정현,신중훈(공저)

Page 4: Reverse Engineering, 안드로이드학습 · 2013. 5. 2. · 안드로이드을빨리이해하기위한방법 1. OpenSource활용 2. Reverse Engineering활용하여학습하기 1.

01 Motivation

Page 5: Reverse Engineering, 안드로이드학습 · 2013. 5. 2. · 안드로이드을빨리이해하기위한방법 1. OpenSource활용 2. Reverse Engineering활용하여학습하기 1.

01 Motivation

Page 6: Reverse Engineering, 안드로이드학습 · 2013. 5. 2. · 안드로이드을빨리이해하기위한방법 1. OpenSource활용 2. Reverse Engineering활용하여학습하기 1.

01

과연? 이렇게 공부하면,

야근을 줄일 수 있을까?

Motivation

Page 7: Reverse Engineering, 안드로이드학습 · 2013. 5. 2. · 안드로이드을빨리이해하기위한방법 1. OpenSource활용 2. Reverse Engineering활용하여학습하기 1.

01

Android를 처음 접하는 분에게, 빛과 같은 존재

Motivation

Page 8: Reverse Engineering, 안드로이드학습 · 2013. 5. 2. · 안드로이드을빨리이해하기위한방법 1. OpenSource활용 2. Reverse Engineering활용하여학습하기 1.

01 Motivation

하지만, 우리에게 주어진 미션은!!!

Page 9: Reverse Engineering, 안드로이드학습 · 2013. 5. 2. · 안드로이드을빨리이해하기위한방법 1. OpenSource활용 2. Reverse Engineering활용하여학습하기 1.

01 Motivation

그림출처 http://goodhyun.com

Page 10: Reverse Engineering, 안드로이드학습 · 2013. 5. 2. · 안드로이드을빨리이해하기위한방법 1. OpenSource활용 2. Reverse Engineering활용하여학습하기 1.

안드로이드을 빨리 이해하기 위한 방법

1. OpenSource 활용

2. Reverse Engineering 활용하여 학습하기

1. 리버스엔지니어링이 뭔가요?

2. 어떻게 Android Application 리버싱하나요?

3. Reverse Engineering 활용한 학습예제

01 Contents

Page 11: Reverse Engineering, 안드로이드학습 · 2013. 5. 2. · 안드로이드을빨리이해하기위한방법 1. OpenSource활용 2. Reverse Engineering활용하여학습하기 1.

02 Open Source 활용, 구글 코드

http://code.google.com/hosting/

Page 12: Reverse Engineering, 안드로이드학습 · 2013. 5. 2. · 안드로이드을빨리이해하기위한방법 1. OpenSource활용 2. Reverse Engineering활용하여학습하기 1.

02 Open Source 활용, 구글 코드

Page 13: Reverse Engineering, 안드로이드학습 · 2013. 5. 2. · 안드로이드을빨리이해하기위한방법 1. OpenSource활용 2. Reverse Engineering활용하여학습하기 1.

02 Open Source 활용, 코드 검색

http://google.com/codesearch

Page 14: Reverse Engineering, 안드로이드학습 · 2013. 5. 2. · 안드로이드을빨리이해하기위한방법 1. OpenSource활용 2. Reverse Engineering활용하여학습하기 1.

02 Open Source 활용, 코드 검색

Page 15: Reverse Engineering, 안드로이드학습 · 2013. 5. 2. · 안드로이드을빨리이해하기위한방법 1. OpenSource활용 2. Reverse Engineering활용하여학습하기 1.

03 Reverse Engineering 활용하여 학습하기, 리버스엔지니어링이 뭔가요?

Reverse Engineering

Page 16: Reverse Engineering, 안드로이드학습 · 2013. 5. 2. · 안드로이드을빨리이해하기위한방법 1. OpenSource활용 2. Reverse Engineering활용하여학습하기 1.

03 Reverse Engineering 활용하여 학습하기, 리버스엔지니어링이 뭔가요?

Reverse + Engineering

Page 17: Reverse Engineering, 안드로이드학습 · 2013. 5. 2. · 안드로이드을빨리이해하기위한방법 1. OpenSource활용 2. Reverse Engineering활용하여학습하기 1.

03 Reverse Engineering 활용하여 학습하기, 리버스엔지니어링이 뭔가요?

*.java *.class

javac

Java Complier

Page 18: Reverse Engineering, 안드로이드학습 · 2013. 5. 2. · 안드로이드을빨리이해하기위한방법 1. OpenSource활용 2. Reverse Engineering활용하여학습하기 1.

03

*.class

Java Virtual Machine

Reverse Engineering 활용하여 학습하기, 리버스엔지니어링이 뭔가요?

Page 19: Reverse Engineering, 안드로이드학습 · 2013. 5. 2. · 안드로이드을빨리이해하기위한방법 1. OpenSource활용 2. Reverse Engineering활용하여학습하기 1.

03

*.java *.class

javac

jad

Java Decomplier

Reverse Engineering 활용하여 학습하기, 리버스엔지니어링이 뭔가요?

Page 20: Reverse Engineering, 안드로이드학습 · 2013. 5. 2. · 안드로이드을빨리이해하기위한방법 1. OpenSource활용 2. Reverse Engineering활용하여학습하기 1.

03 Reverse Engineering 활용하여 학습하기, 리버스엔지니어링이 뭔가요?

http://java.decompiler.free.fr

Page 21: Reverse Engineering, 안드로이드학습 · 2013. 5. 2. · 안드로이드을빨리이해하기위한방법 1. OpenSource활용 2. Reverse Engineering활용하여학습하기 1.

03

자바 코드를 디컴파일하여,

원소스를 볼 수 있다.

Reverse Engineering 활용하여 학습하기, 리버스엔지니어링이 뭔가요?

Page 22: Reverse Engineering, 안드로이드학습 · 2013. 5. 2. · 안드로이드을빨리이해하기위한방법 1. OpenSource활용 2. Reverse Engineering활용하여학습하기 1.

03

*.java *.class dex

Resources

Library

*.apk

Reverse Engineering 활용하여 학습하기, 어떻게 Android Application 리버싱하나요?

Page 23: Reverse Engineering, 안드로이드학습 · 2013. 5. 2. · 안드로이드을빨리이해하기위한방법 1. OpenSource활용 2. Reverse Engineering활용하여학습하기 1.

03

*.java *.class dex

Resources

Library

*.apk

12

1. ApkToolhttp://code.google.com/p/android-apktool/

2. Dex2Jarhttp://code.google.com/p/dex2jar/

3. Java Decompilerhttp://java.decompiler.free.fr

3

Reverse Engineering 활용하여 학습하기, 어떻게 Android Application 리버싱하나요?

Page 24: Reverse Engineering, 안드로이드학습 · 2013. 5. 2. · 안드로이드을빨리이해하기위한방법 1. OpenSource활용 2. Reverse Engineering활용하여학습하기 1.

03 Reverse Engineering 활용하여 학습하기, 예제

Page 25: Reverse Engineering, 안드로이드학습 · 2013. 5. 2. · 안드로이드을빨리이해하기위한방법 1. OpenSource활용 2. Reverse Engineering활용하여학습하기 1.

03 Reverse Engineering 활용하여 학습하기, 예제

Page 26: Reverse Engineering, 안드로이드학습 · 2013. 5. 2. · 안드로이드을빨리이해하기위한방법 1. OpenSource활용 2. Reverse Engineering활용하여학습하기 1.

03 Reverse Engineering 활용하여 학습하기, 예제

Page 27: Reverse Engineering, 안드로이드학습 · 2013. 5. 2. · 안드로이드을빨리이해하기위한방법 1. OpenSource활용 2. Reverse Engineering활용하여학습하기 1.

준비물1.Dolphin Browser APK 파일2.Dex2Jar 툴3.Java Decompiler 툴

03 Reverse Engineering 활용하여 학습하기, 예제

Page 28: Reverse Engineering, 안드로이드학습 · 2013. 5. 2. · 안드로이드을빨리이해하기위한방법 1. OpenSource활용 2. Reverse Engineering활용하여학습하기 1.

Firefox APK 파일 추출

03 Reverse Engineering 활용하여 학습하기, 예제

Page 29: Reverse Engineering, 안드로이드학습 · 2013. 5. 2. · 안드로이드을빨리이해하기위한방법 1. OpenSource활용 2. Reverse Engineering활용하여학습하기 1.

03 Reverse Engineering 활용하여 학습하기, 예제

DolphinBrowser APK 파일 추출

Page 30: Reverse Engineering, 안드로이드학습 · 2013. 5. 2. · 안드로이드을빨리이해하기위한방법 1. OpenSource활용 2. Reverse Engineering활용하여학습하기 1.

Dolphin Browser APK 파일 추출

03 Reverse Engineering 활용하여 학습하기, 예제

Page 31: Reverse Engineering, 안드로이드학습 · 2013. 5. 2. · 안드로이드을빨리이해하기위한방법 1. OpenSource활용 2. Reverse Engineering활용하여학습하기 1.

DolphinBrowser APK 파일 추출

03 Reverse Engineering 활용하여 학습하기, 예제

Page 32: Reverse Engineering, 안드로이드학습 · 2013. 5. 2. · 안드로이드을빨리이해하기위한방법 1. OpenSource활용 2. Reverse Engineering활용하여학습하기 1.

03 Reverse Engineering 활용하여 학습하기, 예제

Dex2Jar Tool 설치http://code.google.com/p/dex2jar/

Page 33: Reverse Engineering, 안드로이드학습 · 2013. 5. 2. · 안드로이드을빨리이해하기위한방법 1. OpenSource활용 2. Reverse Engineering활용하여학습하기 1.

Dex2Jar Tool 설치

03 Reverse Engineering 활용하여 학습하기, 예제

Page 34: Reverse Engineering, 안드로이드학습 · 2013. 5. 2. · 안드로이드을빨리이해하기위한방법 1. OpenSource활용 2. Reverse Engineering활용하여학습하기 1.

03 Reverse Engineering 활용하여 학습하기, 예제

Dex2Jar Tool 설치

Page 35: Reverse Engineering, 안드로이드학습 · 2013. 5. 2. · 안드로이드을빨리이해하기위한방법 1. OpenSource활용 2. Reverse Engineering활용하여학습하기 1.

03 Reverse Engineering 활용하여 학습하기, 예제

Dex2Jar Tool 설치

Page 36: Reverse Engineering, 안드로이드학습 · 2013. 5. 2. · 안드로이드을빨리이해하기위한방법 1. OpenSource활용 2. Reverse Engineering활용하여학습하기 1.

unzip

03 Reverse Engineering 활용하여 학습하기, 예제

Page 37: Reverse Engineering, 안드로이드학습 · 2013. 5. 2. · 안드로이드을빨리이해하기위한방법 1. OpenSource활용 2. Reverse Engineering활용하여학습하기 1.

03 Reverse Engineering 활용하여 학습하기, 예제

Dex2Jar 실행

Page 38: Reverse Engineering, 안드로이드학습 · 2013. 5. 2. · 안드로이드을빨리이해하기위한방법 1. OpenSource활용 2. Reverse Engineering활용하여학습하기 1.

03 Reverse Engineering 활용하여 학습하기, 예제

dex2jar

Page 39: Reverse Engineering, 안드로이드학습 · 2013. 5. 2. · 안드로이드을빨리이해하기위한방법 1. OpenSource활용 2. Reverse Engineering활용하여학습하기 1.

03 Reverse Engineering 활용하여 학습하기, 예제

http://java.decompiler.free.frJD-GUI 설치

Page 40: Reverse Engineering, 안드로이드학습 · 2013. 5. 2. · 안드로이드을빨리이해하기위한방법 1. OpenSource활용 2. Reverse Engineering활용하여학습하기 1.

03 Reverse Engineering 활용하여 학습하기, 예제

JD-GUI 설치

Page 41: Reverse Engineering, 안드로이드학습 · 2013. 5. 2. · 안드로이드을빨리이해하기위한방법 1. OpenSource활용 2. Reverse Engineering활용하여학습하기 1.

03 Reverse Engineering 활용하여 학습하기, 예제

JD-GUI 실행

Page 42: Reverse Engineering, 안드로이드학습 · 2013. 5. 2. · 안드로이드을빨리이해하기위한방법 1. OpenSource활용 2. Reverse Engineering활용하여학습하기 1.

03 Reverse Engineering 활용하여 학습하기, 예제

Page 43: Reverse Engineering, 안드로이드학습 · 2013. 5. 2. · 안드로이드을빨리이해하기위한방법 1. OpenSource활용 2. Reverse Engineering활용하여학습하기 1.

03 Reverse Engineering 활용하여 학습하기, 예제

Page 44: Reverse Engineering, 안드로이드학습 · 2013. 5. 2. · 안드로이드을빨리이해하기위한방법 1. OpenSource활용 2. Reverse Engineering활용하여학습하기 1.

03 Reverse Engineering 활용하여 학습하기, 예제

Page 45: Reverse Engineering, 안드로이드학습 · 2013. 5. 2. · 안드로이드을빨리이해하기위한방법 1. OpenSource활용 2. Reverse Engineering활용하여학습하기 1.

열심히분석…

03 Reverse Engineering 활용하여 학습하기, 예제

Page 46: Reverse Engineering, 안드로이드학습 · 2013. 5. 2. · 안드로이드을빨리이해하기위한방법 1. OpenSource활용 2. Reverse Engineering활용하여학습하기 1.

03 Reverse Engineering 활용하여 학습하기, 예제

Page 47: Reverse Engineering, 안드로이드학습 · 2013. 5. 2. · 안드로이드을빨리이해하기위한방법 1. OpenSource활용 2. Reverse Engineering활용하여학습하기 1.

03 Reverse Engineering,

proguardhttp://proguard.sf.net/

Page 48: Reverse Engineering, 안드로이드학습 · 2013. 5. 2. · 안드로이드을빨리이해하기위한방법 1. OpenSource활용 2. Reverse Engineering활용하여학습하기 1.

아!! 이건 이렇게 만든 거구나…Reverse Engineering 활용하여안드로이드를 학습할 수 있음!!

04 Summary

Page 49: Reverse Engineering, 안드로이드학습 · 2013. 5. 2. · 안드로이드을빨리이해하기위한방법 1. OpenSource활용 2. Reverse Engineering활용하여학습하기 1.

04 Summary

Reverse Engineering,안드로이드학습

모두 웃을 수 있길 기원합니다!

Page 50: Reverse Engineering, 안드로이드학습 · 2013. 5. 2. · 안드로이드을빨리이해하기위한방법 1. OpenSource활용 2. Reverse Engineering활용하여학습하기 1.

Q & A질의응답

Twitter : http://twitter.com/geekbeastMail : [email protected]

Blog : http://softwaregeeks.org

Page 51: Reverse Engineering, 안드로이드학습 · 2013. 5. 2. · 안드로이드을빨리이해하기위한방법 1. OpenSource활용 2. Reverse Engineering활용하여학습하기 1.

Thank you!:D