안드로이드에 관하여/안드로이드 공부
JEB2 or JEB3가 안될때
안드로이드를 공부해 보기 위해 검색을 하던중 "JADX"와 JEB라는게 있다는 것을 들었다. 그런데 Jadx는 잘 되는데 JEB는 잘 안된다. 이런 두개의 창이 뜨면서 안된다. 만약 JDK를 설치 했는데도 이것만 뜨면 경로를 살펴 보자. 경로에 단 하나라도 한글이 있으면 이건 안된다!
Android Hacker's Handbook 2장 -2-
* 주의 : 나는 영어를 잘 하지 못한다. 이걸 번역한것은 뇌에서 고등학교 수준의 영어로 번역해낸 것이다. 더욱 자세한 내용을 볼려면 원문을 읽어라. Android Permissions android 권한 모델은 API 사용권한, 파일 시스템 사용 권한 및 IPC 사용 권한 같은 기능을 제공한다. 이것들은 각각이 얽혀 있기도 하다. 앞에서 말한것 처럼 일부 high-level 수준의 사용권한은 low-level 수준의 OS 기능으로 다시 매핑 된다. 여기에는 소켓 열기,Bluetooth 장치 및 특정 파일 시스템 경로와 같은 작업이 포함 될 수 있다. 앱 사용자의 권한과 추가적인 그룹을 결정 하기 위해 ANdroid는 앱 패키지의 Android Manifest.xml 파일에 지정된 high-level 권..
Android Hacker's Handbook 2장 -1-
* 주의 : 나는 영어를 잘 하지 못한다. 이걸 번역한것은 뇌에서 고등학교 수준의 영어로 번역해낸 것이다. 더욱 자세한 내용을 볼려면 원문을 읽어라. 안드로이드는 보안 검사 및 수행에 역할을 하는 서로 상호작용하는 매커니즘으로 이루져 있다. 이러한 매커니즘들은 수행할 대상(app/user), 객체(other apps, files,devices) , 수행할 작업(read, write, delete 등) 과 정보를 교환 합니다. 대부분 실행 할 때는 멀쩡하지만 가끔씩 벌어진 틈새로 정보가 흘러나가 공격할 기회를 주기도 한다. Understanding Android System Architecture(안드로이드 아키택처 이해하기) 일반적으로 안드로이드 아키텍처는 때때로 Linux의 자바로 묘사 되었지만 그건 ..
Where is my arm ?
오늘 해볼 내용은 안드로이드 기기 내부의 cpu인 ARM에 대한 내용이다. 제목이랑 사진은 arm 하니까 생각난게 팔이라서 그냥 넣어 봤다. 귀여운 눈사람과 함께 arm에 대해서 알아보자 ARM이란 무엇일까? 일단 ARM은 adavanced RISC Machine의 약자로 CPU의 한 종류다. 안드로이드 뿐만 아니라 다양한 기기에도 이용 되고 있는 ARM 프로세서의 특징으로는 1. 전력 소모가 적다. 2. 성능에 따라 다양한 CPU를 제공한다. 더 다양하게 특징들이 있지만 안드로이드 공부인 관계로 안드로이드와 관 련된 것 같은 것 만 적어 보았다. 또한 ARM이 advanced RISC Machine의 약자라고 했었는데 중간에 있는 RISC도 약자가 Reduced instuction Set compute..
Android Hackers Handbook 1장
* 주의 : 나는 영어를 잘 하지 못한다. 이걸 번역한것은 뇌에서 고등학교 수준의 영어로 번역해낸 것이다. 더욱 자세한 내용을 볼려면 원문을 읽어라 Looking at the Ecosystem Understanding Android’s Roots ~ Version History Android는 다양한 뜻을 포함 한다. 모바일 운영 체제인 Android를 만든 회사와 Android의 버전의 이름에 대한 역사이야기가 초반에 나온다. 읽어 보면 재미는 있다. Examining the Device Pool 스마트 시계, 텔레비전 액세서리, 게임 콘솔, 오븐, 인공위성, 그리고 새로운 구글 글라스와 같은 장치들은 안드로이드에 의해 작동된다. 자동차 업계는 안드로이드를 차량의 인포테인먼트 플랫폼으로 사용하기 시작했..
APK 보호기법
안드로이드 앱은 자바로 이루어 져서 쉽게 디컴파일이 되는데 그걸 막기 위해 보안 솔루션을 사용합니다. 디컴파일을 하여 나온 코드를 보기 힘들게 만들기(난독화,암호화) 1. 이름 난독화 필드 , 메소드 , 클래스의 이름을 의미 없는 이름으로 변경합니다. ex) setText -> ab() 2. API 은닉 Java Reflection를 이용합니다. *Java Reflection : 리플렉션이란 객체를 통해 클래스의 정보를 분석해 내는 프로그램 기법을 말합니다. Class a = Class.forName("AAClass") 3. 흐름제어 클래스 속의 메소드 등의 영역을 바꾸거나, 의미 없는 더미 코드를 삽입하여 코드 흐름 파악을 어렵게 한다 //흐름제어 전 a = 0; while(a
what is Smali code?
Smali code 는 무엇인가요 Smali는 dalvik에서 사용하는 dex 형식의 어셈블러입니다. Dex 파일은 기계어로 되어있으니까 이걸 읽기 쉽게 해주는 것이 Smali code 입니다. 가끔 CTF 를 보면 dex 파일만 주는 경우가 있는데 smali code로 변경 해서 풀거나 pallergabor.uw.hu/androidblog/dalvik_opcodes.html Dalvik opcodes 4B aput vx,vy,vz Puts the integer value in vx into an element of an integer array. The element is indexed by vz, the array object is referenced by vy. 4B00 0305 - aput v0,..
Dex 파일 구조는 어떻게 되어 있는가
일단 Dex 파일이란 무엇일까에 대해 알아 봅시다. 1.Dex 란? Dex에는 Android 런타임에서 궁극적으로 실행되는 코드가 포함 되어 있습니다. 즉 기계어로 되어있습니다. 이것을 디컴파일 하면 smail 코드가 되는 것입니다. 2. Dex 파일의 구조 어느 파일이나 비슷하겠지만 dex 파일은 헤더와 섹션으로 나뉩니다. (이러고 보면 ole 파일 구조와도 비슷해보이네) 2-1) File Magic Number 위 파일이 무슨 파일인지 알려주는 부분이다. 처음에 dex라는 텍스트와 버전 번호가 있습니다. 2-2) Checksum - uint 체크섬은 이 파일이 변조 되었는지 확인하는 부분입니다. 파일의 바이트 값이 손상 된 경우 체크섬 값이 맞지 않아 Android Framework에서 Apk 설치를..