안녕하세요? 초짜프로그래머의 초짜프로그래밍 '수표' 입니다!!(우와~)
일단 소개할 앱은 'Apk Editer' 라는 앱입니다.
디컴파일이란 과연 무엇일까요?
'디컴파일'이란?
먼저 알아야 할것은 컴파일 이라는 용어인데요?
컴파일이란 간단히 정의 하자면, '인간이 보기 편하게 만든 소스코드를 컴퓨터가 이해 할 수 있는 기계어 구조로 변환하는 일련의 과정' 을 말합니다.
예를 들어 보통 저같은 초보자 분들이 입문용으로 많이 쓰시는 C언어 같은것이 인간이 보기 쉽게 만든 소스코드 입니다.
저희들은 보통
#include <stdio.h>
int main(void){
printf("안녕하세요? 수표입니다!");
return 0;
}
와 같이 사람들이 이해하기 쉽게 만드는데요, 컴퓨터는 2진법 외에는 인식하지 못합니다.
오직 0, 1 외에는 인식이 불가능 하죠.
그래서 이 소스코드를 기계어로 바꾸어 주는것이 컴파일러 입니다.
그리고 이 컴파일 하는 과정을 컴파일링이라고 합니다.
이렇게 컴파일을 해놓으면 기계어로 번역이 되어 일반적인 경우라면 자체적으로 실행이 가능합니다.
그러나 jar파일과 같이 JRE가 없으면 실행이 않되는 경우도 있지만 아직 설명은 하지 않겠습니다.
그런데 이것들의 소스를 보고싶다? 그래서 디컴파일이라는 말이 탄생했습니다
디컴파일은 영어로 Decompile!!
말그대로 '컴파일(compile)을 해제(De)한다.' 라는 뜻입니다.
역으로 컴파일 한다는 말도 가능합니다!
그러나 이런행위는 개인 또는 회사가 만든 저작물을 훼손 하는 행위임으로 학습용 또는 아예 사용을 하지 말아주시기 바랍니다..
일단 본론으로 들어와서 디컴파일이 구조적으로 가능한것과 불가능한것이 있는데요?
다행스럽기도 안드로이드는 JAVA기반이기 때문에 런타임 후 코드가 실행되는 구조로 코드를 디컴파일 하는것이 가능합니다.
저는 이전에 컴퓨터가 없었을때 안드로이드 공부를 하기위해 이 앱을 사용한적이 있습니다.
제가 생각하기로는 직접 소스를 뜯어보는것이 가장 배우는 속도가 빠르다고 생각합니다.
일단 앱을 실행해보면 아래와 같은 화면이 뜹니다.
그 이외는 읽으실줄 아시죠??
일단 저는 제가 만든 앱을 불러와 보도록 하겠습니다.
4가지 메뉴가 뜹니다.
Full Edit : 이는 말그대로 리소스를 전부다 편집할수 있는것 입니다!
가장 많이 쓰입니다!
Simple Edit : 파일 편집 기능은 없고요, 단지 파일 확인하고 이름바꾸고 파일 재배치 하는 정도 입니다. 실질적으로 잘 쓰이지 않습니다.
Common Edit : 앱 이름, 패키지 이름(예 : com.android.블라블라), 앱 버전 등등을 바꿀수 있는 메뉴입니다.
Edit Data [Root] : 이는 루트 권한을 필요로 합니다.
/data/data/ 속에 앱 데이터를 마구 주무르게 해줍니다.
게임 핵같은거 쓸꺼 아니면 필요 없습니다.
일단 저희는 가볍게 편집 하기위해 Common Edit을 클릭해줍니다!
Launcher Icon : 앱 아이콘을 변경할수 있습니다.
App name : 앱 이름을 변경하실수 있습니다.
Package Name : 패키지 네임을 변경하실수 있습니다.
특별한 이유가 없는이상 건들지 마세요.
Install location : 설치 장소를 말합니다.
절대 건들지 마세요.
설치가 않될수도 있습니다.
Version Code : 버전 코드입니다. 안드로이드 운영체제에서는 이를 버전으로 봅니다.
Version Name : 버전 네임입니다.
이는 사용자에게 보여줄 버전입니다.
이곳에는 Version Code와 달리 문자가 들어가도 상관 없습니다.
예) b2017.05.13.rel
모두 수정을 하셨다면, Save 버튼을 눌러주세요.
단, 이미 앱이 설치되어 있을경우!! 이를 삭제해주시고 다시 깔아주셔야 합니다!!
이로서 Apk Editer 설명을 마칩니다!!
좋아요와 덧글 꼭 부탁드립니다!!
일단 소개할 앱은 'Apk Editer' 라는 앱입니다.
이 앱은 휴대폰의 앱을 디컴파일하는 앱인데요, 일단 짚고 넘어가야 할것이 있지 않나요?
디컴파일이란 과연 무엇일까요?
'디컴파일'이란?
먼저 알아야 할것은 컴파일 이라는 용어인데요?
컴파일이란 간단히 정의 하자면, '인간이 보기 편하게 만든 소스코드를 컴퓨터가 이해 할 수 있는 기계어 구조로 변환하는 일련의 과정' 을 말합니다.
예를 들어 보통 저같은 초보자 분들이 입문용으로 많이 쓰시는 C언어 같은것이 인간이 보기 쉽게 만든 소스코드 입니다.
저희들은 보통
#include <stdio.h>
int main(void){
printf("안녕하세요? 수표입니다!");
return 0;
}
와 같이 사람들이 이해하기 쉽게 만드는데요, 컴퓨터는 2진법 외에는 인식하지 못합니다.
오직 0, 1 외에는 인식이 불가능 하죠.
그래서 이 소스코드를 기계어로 바꾸어 주는것이 컴파일러 입니다.
그리고 이 컴파일 하는 과정을 컴파일링이라고 합니다.
이렇게 컴파일을 해놓으면 기계어로 번역이 되어 일반적인 경우라면 자체적으로 실행이 가능합니다.
그러나 jar파일과 같이 JRE가 없으면 실행이 않되는 경우도 있지만 아직 설명은 하지 않겠습니다.
그런데 이것들의 소스를 보고싶다? 그래서 디컴파일이라는 말이 탄생했습니다
디컴파일은 영어로 Decompile!!
말그대로 '컴파일(compile)을 해제(De)한다.' 라는 뜻입니다.
역으로 컴파일 한다는 말도 가능합니다!
그러나 이런행위는 개인 또는 회사가 만든 저작물을 훼손 하는 행위임으로 학습용 또는 아예 사용을 하지 말아주시기 바랍니다..
일단 본론으로 들어와서 디컴파일이 구조적으로 가능한것과 불가능한것이 있는데요?
다행스럽기도 안드로이드는 JAVA기반이기 때문에 런타임 후 코드가 실행되는 구조로 코드를 디컴파일 하는것이 가능합니다.
저는 이전에 컴퓨터가 없었을때 안드로이드 공부를 하기위해 이 앱을 사용한적이 있습니다.
제가 생각하기로는 직접 소스를 뜯어보는것이 가장 배우는 속도가 빠르다고 생각합니다.
일단 앱을 실행해보면 아래와 같은 화면이 뜹니다.
메뉴를 위에서부터 읽어보면 'Select an Apk File' Apk 파일에서 선택하기! ,'Select Apk from App' 설치된 앱중에서 선택하기!
그 이외는 읽으실줄 아시죠??
일단 저는 제가 만든 앱을 불러와 보도록 하겠습니다.
일단 편집할 앱을 눌러 주시면 이렇게 뜨는데요?
4가지 메뉴가 뜹니다.
Full Edit : 이는 말그대로 리소스를 전부다 편집할수 있는것 입니다!
가장 많이 쓰입니다!
Simple Edit : 파일 편집 기능은 없고요, 단지 파일 확인하고 이름바꾸고 파일 재배치 하는 정도 입니다. 실질적으로 잘 쓰이지 않습니다.
Common Edit : 앱 이름, 패키지 이름(예 : com.android.블라블라), 앱 버전 등등을 바꿀수 있는 메뉴입니다.
Edit Data [Root] : 이는 루트 권한을 필요로 합니다.
/data/data/ 속에 앱 데이터를 마구 주무르게 해줍니다.
게임 핵같은거 쓸꺼 아니면 필요 없습니다.
일단 저희는 가볍게 편집 하기위해 Common Edit을 클릭해줍니다!
위에서부터 설명 드리겠습니다.
Launcher Icon : 앱 아이콘을 변경할수 있습니다.
App name : 앱 이름을 변경하실수 있습니다.
Package Name : 패키지 네임을 변경하실수 있습니다.
특별한 이유가 없는이상 건들지 마세요.
Install location : 설치 장소를 말합니다.
절대 건들지 마세요.
설치가 않될수도 있습니다.
Version Code : 버전 코드입니다. 안드로이드 운영체제에서는 이를 버전으로 봅니다.
Version Name : 버전 네임입니다.
이는 사용자에게 보여줄 버전입니다.
이곳에는 Version Code와 달리 문자가 들어가도 상관 없습니다.
예) b2017.05.13.rel
모두 수정을 하셨다면, Save 버튼을 눌러주세요.
그 후 이런화면과 함께 저장 경로가 나옵니다.
그 다음에는 그 바뀐 앱을 설치해주시면 변경점과 함께 바뀝니다!!
단, 이미 앱이 설치되어 있을경우!! 이를 삭제해주시고 다시 깔아주셔야 합니다!!
이로서 Apk Editer 설명을 마칩니다!!
좋아요와 덧글 꼭 부탁드립니다!!
'안드로이드 Android' 카테고리의 다른 글
[안드로이드] 토스트(Toast) 사용하기 (0) | 2018.05.06 |
---|---|
Android 웹 브라우저 링크로 앱 실행 방법 (1) | 2018.05.06 |
Theme.NoDisplay 테마 사용시 안드로이드 API 23에서 did not call finish() prior to onResume() completing 오류 발생 (0) | 2018.05.06 |
Android 투명 / 보이지 않는 Activity 만들기(Theme.Translucent / Theme.NoDisplay) (0) | 2018.05.06 |
Cannot Resolve Symbol 'R' : 해결 (0) | 2018.05.02 |
댓글