목록전체 글 (420)
외로운 Nova의 작업실
- 태스크 액티비티 태스크란 앱이 실행될때 시스템에서 액티비티의 각종 정보를 저장하는 공간입니다. 시스템의 stack처럼 뒤돌아가기 버튼을 눌렀을때 어떤 액티비티로 돌아가야하는지를 저장하는 공간입니다. 예를 들어 A_OneActivity와 A_TwoActivity가 한 앱에 있을때 순서대로 A_OneActivity -> A_TwoActivity를 실행한다면 태스크에는 아래와 같이 저장됩니다. 그렇다면 실행하는 앱마다 태스크는 하나만 존재할까요? 그렇지는 않습니다. 이번에는 앱과 앱이 연동되어 실행되는 구조를 알아보겠습니다. 아래와 같은 실행 구조가 있다고 가정해보겠습니다. 그러면 아래와 같이 태스크가 구성됩니다. 그렇다면 아래와 같은 경우는 어떨까요? 아래와 같이 태스크가 구성됩니다. - 태스크 제어 원..
- 동적 분석 저번 1장에서 안드로이드 앱을 apk > dex > .class 파일로 변경해서 자바 디컴파일로 파일을 봐보았습니다. 하지만 이는 정적 분석으로 코드만 볼 수 있습니다. ollydbg같이 프로그램을 실행시키면서 동적으로 분석하는 방법이 있는지 찾아보았습니다. IDA Pro로 가능하다는 것을 알게 되었습니다. 그 방법을 소개해드리겠습니다. - 사전 준비 먼저 동적 분석을 하려면 IDA pro, 통합USB드라이버, 안드로이드 단말기, adb 프로그램이 필요합니다. IDA pro가 있으신 분들만 가능합니다. 이제 통합 USB 드리이버를 다운로드 해보겠습니다. 스마트폰 제조사에 맞춰 통합 usb드라이버를 다운로드해줍니다. 저의 경우에는 삼성이므로 아래의 링크에서 다운로드가 가능합니다. https:..
안녕하세요. 이번 시리즈는 안드로이드 앱을 리버싱해보고 작동 원리를 알아내려고합니다. 안드로이드 앱 리버싱 관련해서는 예제가 많이 없어서 제가 직접 예제를 만들고 리버싱을 해서 작동 부분을 알아내보려고합니다. 그전에 사전 지식 이있습니다. - 사전 지식 구글은 태블릿, pc, 자동차에 들어가는 안드로이드 운영체제를 만들고싶었습니다. 따라서 열악한 환경에서도 잘 돌아가는 운영체제를 만들고싶었습니다. 이에따라 jvm을 사용하고싶었지만 저작권때문에 사용하지못하고 Dalvik 가상머신을 새롭게 만들었습니다. 하지만 Dalvik 가상머신또한 jvm에 영향을 받고 있습니다. jvm은 자바 가상 머신으로 프로그램을 해석하는 기능을 합니다. 이때 기계어가 일반적인 cpu와는 다르다는 특징이 있습니다. 따라서 jvm에서..