반응형

반디집 : apk 압축 파일 내에 어떤 파일들이 있는지 보거나 수정(ex. 파일 이름 변경)하기 위함

jadx-gui : apk 파일을 디컴파일하여 JAVA 소스 코드로 보기 위함(소스 코드를 수정하진 않는다.)

apktool : 디컴파일 및 리패키징을 위함(디컴파일하여 파일들을 폴더에 담아 생성해준다.)

vs code : 디컴파일 한 후 생성된 smali 파일들의 내용을 수정할 때 사용하기 위함

 

apktool 설치하는 법 : https://ibotpeaches.github.io/Apktool/install/

jadx-gui 다운로드 : https://github.com/skylot/jadx/releases/tag/v1.4.5

 


 

동영상.apk

 

위의 apk 파일은 동영상.zip 파일 안에 있던 apk 파일이다.

 

apk 파일을 jadx-gui에 올려본 결과이다.(다음 글에 jadx-gui에 올리는 방법이 포함되어 있을 것이다.)

 

android.support 패키지 : 소스 코드 중에서 프로그래머가 직접 작성한 것이 아니라 기본적으로 안드로이드 구동에 필요한 소스 코드들이 포함된 패키지이다.

com 패키지 : 소스 코드 중에서 실제로 프로그래머가 작성하거나 다른 모듈을 위해 외부에서 불러온 전체 소스 코드가 포함된 패키지이다.

AndroidManifest.xml : 리소스 파일 중에서 전체 안드로이드 앱의 환경 설정을 담당하는 파일이다.

META-INF : 암호화 서명 등의 설정 정보가 포함되는 파일이다.

res 폴더 : 안드로이드 소스 코드에서 불러와 사용하기 위한 색상, 레이아웃, 이미지, 애니메이션 등의 모든 리소스가 담기는 폴더이다.

 


 

가장 먼저 봐야 할 건 환경 설정 파일인 AndroidManifest.xml 파일이다.

 

해당 파일에서 어플리케이션의 진입점(Launcher)을 확인할 수 있다.

 

"android.intent.category.LAUNCHER" 문자열이 있는 부분에서 어떤 클래스가 진입점으로 사용되고 있는지 확인할 수 있다.

 


 

안드로이드를 개발할 때는 R(Resource)이라는 객체를 사용해서 리소스(image, XML layout file, audio file 등)에 접근할 수 있다고 한다.

 

그리고 모든 리소스는 개별적으로 모두 ID 값을 가지고 있다.

 

예를 들어 res -> layout 폴더에 example.xml 파일이 있고, 진입점 클래스에서 해당 xml 파일을 사용하는 것은 해당 xml 파일이 진입점 자바 클래스의 디자인으로 사용되었다는 의미이다.

 


 

다음 포스팅에서는 악성 파일을 디컴파일하고 코드를 봐보도록 한다.

 


나동빈님 apk 파일 분석 시리즈 글 : https://m.blog.naver.com/ndb796/221162547471

반응형

+ Recent posts