본문 바로가기

프로그래밍 놀이터/안드로이드, Java1090

[android] ViewModel & LiveData 의 pattern & anti-pattern Views and ViewModels Distributing responsibilities -이상적으로 ViewModel 은 Android 에 대한 어떤 것도 알아서는 안 된다.이는 testability 를 늘려주고, 더 안전하며, module 화하기 편해진다.이를 가장 쉽게 확인할 수 있는 방법은 android.arch.* 외에는 android.* import 가 없어야 한다. -조건문, loop, 동작 결정 등은 Activity, Fragment 가 아닌 ViewModel 이나 다른 layer 에서 수행해야한다.View 는 어떻게 data 를 display 할지만 신경쓰고, user event 를 ViewModel 이나 Presenter 로 전달하는 역할만 해야 한다.이것이 Passive View p.. 2021. 1. 22.
[android] ViewModel 에 대해 알아보자 -ViewModel 은 activity 나 fragment 에서 사용되는 data 를 준비하고 관리하는 역할을 하는 클래스이다.이 녀석은 activity 와 fragment 를 비롯한 앱 전반과의 통신을 관리한다. -ViewModel 은 항상 fragment 나 activity 와 같은 scope 안에서 생성된다.그리고 scope 이 살아있는 동안 계속 유지된다.이 말은 Configutation change 로 인해 destory 되더라도, ViewModel 은 destroy 되지 않는다.새로운 owner instance (재생성된 Activity)는 존재하는(기존 Activity 에 의해 생성된) ViewModel 에 재연결된다. -ViewModel 의 목적은 Activity 나 Fragment 에서 .. 2021. 1. 21.
[android] LiveData 에 대해 알아볼까 -LiveData 는 주어진 lifecycle 에 의해 observed 될 수 있는 data holder 이다.이 말은 LifecycleOwner 와 함께 하는 Observer 라고 보면 된다. 그리고 이 observer 는 감싸고 있는 data 의 변경을 LifecycleOwener 의 상태가 active 상태일 때만 알려준다. -LifecycleOwner 는 LifeCycle.State.STARTED 나 LifeCycle.State.RESUMED 일 때만 active 상태이다.observeForever(Observer) 를 통해 observer 가 추가되면 이 observer 는 항상 active 상태로 여겨지며, 따라서 변경에 대해 항상 notify 를 받을 수 있다.이 경우에는 수동으로 remov.. 2021. 1. 20.
#5 모바일 앱 보안 강화 - 안드로이드 모바일 앱 모의해킹 5.1. 시큐어 코딩 개요 -시큐어 코딩이란 개발 단계에서 보안 취약점을 사전에 제거하여 안전한 소프트웨어를 개발하는 코딩 기법으로, CENT 에서 처음 제안되어 현재는 국내외에서 다양한 표준 코딩 기법들이 발표되고 있다. -대부분의 보안 취약점은 개발자의 미숙한 코딩에서 비롯되어 발생하는 것으로, 개발 단계에서 안전하게 개발할 경우, 대부분의 보안 취약점을 예방할 수 있다.물론 프로그램 언어나, Platform적 문제나, 소프트웨어 설계상의 문제점으로 발생하는 취약점들도 있다.투자 비용 대비 가장 안전하게 소프트웨어를 개발할 수 있는 방법은 개발 단계에서 제거하는 것이다. -한국인터넷진흥원에서 발행하고 있는 시큐어 코딩 가이드는 다음과 같다. 소프트웨어 개발 보안 가이드 JAVA 시큐어 코딩 가이드 C.. 2020. 11. 23.
#4 앱 자동 분석 시스템 - 안드로이드 모바일 앱 모의해킹 4.1. 샌드드로이드 -SandDroid 는 안드로이드 앱 온라인 자동 분석 시스템으로, apk 또는 zip 파일을 업로드하면 정적 및 동적 분석을 해준다. -분석이 끝나면 분석 결과를 종합하여 위험 행위 분석과 위험 점수를 알려준다. -sanddroid.xjtu.edu.cn 을 통해 수행한다. -결과물은 샌드로이드 분석 결과, 파일의 분석 시간, 해시값(추후 다시 이력을 찾을 때 사용), 패키지 이름, pcap 파일, 로그캣 정보 등이다.pcap 파일은 네트워크 트래픽을 모두 기록하여 저장한 정보이다. 4.2. QARK 4.2.1. QARK 이란? -QARK(Quick Android Review Kit)은 데프콘 23 USA 2015 라는 이름으로 발표되면서 주목받은 오픈소스 안드로이드 앱 취약점 진단.. 2020. 11. 22.
#3 취약점 항목별 상세 실습 part 2. - 안드로이드 모바일 앱 모의해킹 3.11. 안전하지 않은 로깅 메커니즘 3.11.1. 취약점 소개 -안드로이드의 커널 공간 안에 있는 로거(Logger)라는 커널 드라이브는 main, radio, event, system 이라는 네 가지 종류의 버퍼를 관리하고 있다.또한 사용자 공간에 있는 앱들은 보안 정책에 의해 커널의 버퍼에 접근할 수 없기 때문에 “/dev” 디렉터리에 리눅스 디바이스 노드들을 제공하여 앱이 로그를 읽고 쓸 수 있도록 하고 있다. -각 버퍼에 저장되는 내용은 아래와 같다.Main : 메인 앱 로그로서 앱이나 플랫폼 내부에서 android.util.Log 클래스로 기록된 로그Event : 시스템에서 발생하는 이벤트 정보를 위한 로그Radio : 이동통신망과 관련된 이벤트 로그System : 안드로이드 플랫폼 내부의 .. 2020. 11. 21.
#3 취약점 항목별 상세 실습 part 1. - 안드로이드 모바일 앱 모의해킹 3.1. 브로드캐스트 리시버 결함 3.1.1. 취약점 소개 -악의적인 목적을 갖고 수행하는 경우에는 사용자가 받는 알림을 중간에서 가로채는 행위를 할 수 있으며, 특정한 상황에서만 발생하는 작업을 우회하여 수행하도록 조작할 수 있다. 3.1.2. 취약점 진단 과정 * ADB를 이용한 브로드캐스트 생성 -> am broadcast -a actionName -n pkgName/className —es stringExtraKey stringValue * 드로저를 이용한 브로드캐스트 생성 -dz> run app.package.attacksurface pkgName// exported 된 component 들이 결과값으로 나온다. -dz> run app.broadcast.info -a pkgName// pkgNa.. 2020. 11. 20.
#2 취약점 진단 및 분석 도구 part 2. - 안드로이드 모바일 앱 모의해킹 2.2. 드로저를 활용한 취약점 진단 2.2.1. 드로저란? -드로저(drozer)는 MWR InfoSecurity 에서 개발한 모바일 앱 취약점 진단 프레임워크인 머큐리(Mercury)의 새로운 업데이트 버전이다.윈도우와 리눅스를 지원하며 JRE, JDK, 안드로이드 SDK 가 설치되어 있어야 사용할 수 있다.안드로이드 단말에 에이전트(Agent)를 설치한 후 PC 에서 ADB 로 명령을 내리는 서버와 클라이언트 방식으로 동작한다. 드로저는 가상 디바이스뿐만 아니라 실제 디바이스에서도 테스트할 수 있고 자동 테스팅도 가능하다.안드로이드 익스플로잇과 같은 다양한 시나리오를 통해 취약점을 점검할 수 있다. 2.2.2. 드로저를 활용한 앱 패키지 정보 확인 -설치된 패키지 목록을 보여준다.dz> run ap.. 2020. 11. 19.
#2 취약점 진단 및 분석 도구 part 1. - 안드로이드 모바일 앱 모의해킹 2.1. ADB 살펴보기 -ADB 는 Android Debug Bridge.안드로이드 에뮬레이터나 PC 에 실제 연결된 장치를 제어하기 위한 안드로이드 디버깅 도구 중 하나이다. -ADB 는 클라이언트, 서버, 데몬의 세 요소를 포함하는 클라이언트-서버 프로그램이다. ADB 클라이언트는 ADB 명령을 입력하는 개발 PC 이다.ADB 서버는 안드로이드 개발 시스템의 백그라운드 프로세서로, 장치의 ADB 데몬 사이의 통신을 관리한다.ADB 데몬은 장치의 백그라운드 프로세서로 동작하는 인스턴스다. -ADB 클라이언트가 시작되면 가장 먼저 ADB 서버 프로세서가 실행 중인지 점검한다.실행 상태가 아니면 서버 프로세스를 구동하며, TCP 5037 포트에 바인드 시키고, 모든 클라이언트는 5037 포트를 통해 AD.. 2020. 11. 18.