본문 바로가기
[android 보안] 권한 #2 [android 보안] 권한 #2 2.7. 시스템 권한 -프레임워크 클래스는 /system/framework/ 폴더에 JAR 파일로 패키지되어 있다. -프레임워크에는 JAR 라이브러리 외에도 framework-res.apk 라는 APK 파일이 있는데, 이름에서 알 수 있듯이 코드 없이 애니메이션, 그림 파일(Drawable), 레이아웃 등 패키지 프레임워크 리소스가 들어 있으며, android 패키지와 시스템 권한처럼 중요한 정보도 정의되어 있다. framework-res.apk 도 APK 파일이므로 AndroidManifest.xml 이 들어 있는데, 여기에서는 권한 그룹과 권한이 선언되어 있다. -권한 그룹은 시스템 UI 에서 관련된 권한을 출력하기 위해 사용될 뿐이며, 권한은 개별적으로 요청해야 한.. 2018. 4. 17.
[android 보안] 안드로이드 보안 모델 #2 [android 보안] 안드로이드 보안 모델 #2 1.2. 안드로이드 보안 모델 -시스템의 나머지 부분과 마찬가지로 안드로이드의 보안 모델은 리눅스 커널이 제공하는 보안기능을 활용한다.다중 사용자 시스템인 리눅스는 프로세스들을 서로 격리시키듯이 사용자 리소스들도 서로 격리시킬 수 있다. -전통적인 리눅스에서는 시스템에 로그인해서 셸을 통해 명령을 실행하는 실제 사용자나 백그라운드에서 실행되는 시스템 서비스에 전용 UID 를 부여했다.그러나 안드로이드는 스마트폰을 위해 만들어졌고, 또 모바일폰은 개인용 기기이기 때문에 시스템에 여러 사용자를 등록할 필요가 없다.사용자는 스마트폰의 소유자를 한 명으로 간주하고, 대신 UID 는 앱을 구분하는 용도로 사용한다. ** 1.2.1. 앱 샌드박스 -안드로이드는 앱을.. 2018. 4. 15.
[android 보안] 안드로이드 보안 모델 #1 [android 보안] 안드로이드 보안 모델 출처 : Android Security Internals 1장개요 목차 1. 안드로이드 보안 모델 1.1. 안드로이드의 아키텍처 1.1.1. 리눅스 커널 1.1.2. 네이티브 사용자 공간 1.1.3. 달빅 가상 머신 1.1.4. 자바 런타임 라이브러리 1.1.5. 시스템 서비스 1.1.6. 프로세스 간 통신 1.1.7. 바인더 1.1.8. 안드로이드 프레임워크 라이브러리 1.1.9. 앱 1.2. 안드로이드 보안 모델 1.2.1. 앱 샌드박스 1.2.2. 권한 1.2.3. IPC 1.2.4. 코드 서명과 플랫폼 키 1.2.5. 다중 사용자 지원 1.2.6. SELinux 1.2.7. 시스템 업데이트 1.2.8. 검증된 부트 1.3. 요약 1.1. 안드로이드의 아.. 2018. 4. 14.
Efficient Android Threading #9 서비스 Efficient Android Threading #9 서비스 이 글은 Efficient Android Threading 의 일부 내용만 발췌한 내용입니다.자세한 내용은 책을 구입해서 보세용.11.1. 비동기 실행을 위해 서비스를 사용해야 하는 이유 -구성요소 생명주기와 스레드 생명주기의 분리호스팅 프로세스의 생명주기 서비스는 메모리 누수에 대한 위험과 너무 빨리 태스크가 종료될 위험을 모두 줄일 수 있다. 11.2. 지역, 원격, 전역 서비스 -전용 원격(다른 프로세스 사용) 서비스는 자신만의 UI 스레드를 가진다.따라서 서비스 UI 스레드는 클라이언트 구성요소의 UI 스레드의 실행을 지연하지 않는다.원격 서비스는 같은 힙 메모리 영역을 공유하지 않는다.따라서 클라이언트는 원격 메서드를 호출하는 데 바.. 2018. 3. 25.
Efficient Android Threading #3 프로세스 간 통신 Efficient Android Threading #3 프로세스 간 통신 이 글은 Efficient Android Threading 의 일부 내용만 발췌한 내용입니다.자세한 내용은 책을 구입해서 보세용. 5.1. 안드로이드 RPC -안드로이드의 변형 리눅스 커널 안에서, 리눅스 IPC 기술은 프로세스 사이의 RPC 메커니즘을 수행하는 바인더 프레임워크로 대체되었다.이를 통해 클라이언트 프로세스는 마치 로컬에서 메서드를 실행하듯 서버 프로세스의 원격 메서드를 호출할 수 있다. -RPC 메서드 호출 자체는 단순하지만, RPC 매커니즘의 하부는 다음과 같은 단계로 구성된다. 1. 메서드 데이터 분해(마샬링, marshalling)2. 원격 프로세스로 마샬링된 정보를 전송3. 원격 프로세스에 정보를 재구성(언마.. 2018. 3. 19.
Efficient Android Threading #1 자바의 멀티스레딩,안드로이드 스레드 Efficient Android Threading #1 자바의 멀티스레딩,안드로이드 스레드 이 글은 Efficient Android Threading 의 일부 내용만 발췌한 내용입니다.자세한 내용은 책을 구입해서 보세용. -동시 실행 설계 자원의 생성과 해체의 빈도를 감소시키기 위해 항상 새로운 스레드를 만드는 것보다 재사용을 권장한다. 필요 이상으로 스레드를 사용하지 않는다. 사용하는 스레드가 많을수록 더 많은 메모리와 프로세서 시간이 소비된다. -App 관점에서 스레드는 UI, 바인더, 백그라운드 thread 로 3가지 유형이 있다. -바인더 스레드는 IPC 에 사용된다.각 프로세스는 Thread pool 을 유지한다.Thread pool 은 종료되거나 재생성되지 않지만, 프로세스 안에서 다른 스레드.. 2018. 3. 17.
[android] Parcelable vs Serializable android, Parcelable vs. Serializable Serializable 은 Java 만 아는 사람이라면 쉽게 알 수 있는 serialization 방법.그냥 Serializable 을 implementation 만 해주면, serialize 가 필요한 순간에 알아서 serialze 해주는 편리한 marker interface. 그러나, mobile 시대가 강림하면서 등장한 유망한 어린이(?) 가 있으니 그는 바로 Parcelable.이 녀석은 IPC ( Inter Process Communication ) 에 최적화된 녀석으로.Serialize 보다 속도가 빠르다.물론, 해야 하는 일은 Serialize 보다 훨씬 많다.직접 serialize 되어야 할 녀석들을 선별해서 그것을 쓰고 읽.. 2014. 2. 15.
[android] process 죽이는 방법. 안드로이드, process 죽이는 방법 옛날 방법 Froyo 로부터 deprecated 되었지만, 혹여나 Froyo 이전도 지원할 경우에 필요할 것 같아 정리했다. 메니페스트에 다음 퍼미션을 주고.. App 에서 다음 코드를 수행한다. ActivityManager am = (ActivityManager)getSystemService(ACTIVITY_SERVICE);am.restartPackage( getPackageName() ); 새로운 방법 메니페스트에 다음 퍼미션을 주고.. 다음 코드로 process 를 죽여준다. ActivityManager am = (ActivityManager)getSystemService(ACTIVITY_SERVICE);am.killBackgroundProcesses (get.. 2013. 11. 13.
반응형