분류 전체보기
-
MITRE ATT&CK 프레임워크에 대해보안 2023. 2. 13. 04:27
Cybertech Tel Aviv 2023 박람회에 참석해서 여러가지 보안 솔루션들을 구경하다가 MITRE ATT&CK 프레임워크를 이용해 개발한 솔루션들을 많이 보았다. MITRE ATT&CK 프레임워크가 뭔지 몰랐던 나라서 전시회에선 그냥 신기해하면서 보다가 호텔에 와서 후다닥 찾아보았다. MITRE ATT&CK 프레임워크를 한 문장으로 요약하면? 실제 공격 사례를 바탕으로 여러가지 환경에서의 취약점을 정의하고, 해당 취약점의 킬체인들을 정리해둔 데이터베이스 MITRE 는 보안 취약점 리스트인 CVE 를 관리하는 비영리 단체이다. 이 MITRE 에서 이때까지 축적된 모든 데이터들을 이용해 세상에 존재하는 취약점들을 공격 단계별로 분류하고, 이 취약점을 공격하는 방법들에 대해 정리한 것이 MITRE A..
-
[Jetpack Compose] 위젯에 대해안드로이드 2023. 1. 6. 23:26
기존의 명령형 UI 개발 방식에서는 setContentView() 함수를 이용해 Activity 에 표시할 xml 을 불러왔었다. 선연형 UI 개발 방식인 Jetpack Compose 에서는 xml 을 사용하지 않으므로 setContentView() 함수 대신 setContent {} 를 사용하고 이 내부에 여러 위젯들을 작성하는 방식으로 레이아웃을 표시한다. class MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContent { // 여기에 위젯들 선언 } } } 위젯이 뭔데 Jetpack Compose 는 여러가지 위..
-
[Jetpack Compose] 너는 뭐냐안드로이드 2023. 1. 6. 22:16
지금까지 UI 를 개발할 땐 계속 틀딱처럼 xml 만을 이용해 왔었다. 그런데 이번에 새 프로젝트에 들어가기 전, 조금 여유 시간이 생겨 Jetpack Compose 를 공부해 다음 프로젝트에 적용해보고자 한다. 그래서 Jetpack Compose 가 뭔데 Jetpack Compose 를 한 줄로 설명하면 Android 개발을 위한 선언형 UI Kit 이라고 한다. 선언형 UI 가 뭔데 원래도 뭐 선언같은거 했었잖아 기존의 xml 을 이용한 명령형 UI 개발 시에는 화면의 상태가 변경되면 상태가 저장되어 있던 변수의 값을 변경하고, 변경된 값을 뷰에 반영하도록 뷰 객체를 가져와 setText() 등의 함수를 호출하는 작업이 필요했다. username = "재빈" // 값 바뀜 textView.setTex..
-
살면서 처음 써보는 2022년 회고기타 2022. 12. 14. 00:24
살면서 처음 써보는 회고록이다. 다들 적길래 적어보는것도 있고, 이번년도에는 워낙 많은 일이 있었어서 좀 정리하면서 되돌아보고자 작성해보게 됐다. 크라켄 개발 2022년의 시작은 크라켄을 개발하면서 시작됐다. 작년 말부터 꾸준히 개발해왔지만 시범 운영하면서 나오는 피드백에 따라 계속 업데이트하면서 최종 개발은 1월 즈음에 완료되었다. 크라켄은 매크로를 이용한 댓글 여론 조작을 탐지하는 프로그램인데 왠지 재미있을것 같아서 개발해보겠다고 나섰다. 이렇게 크게 이슈화 될지 몰랐는데 이슈화 되니 나름 재밌었다. Python, PHP 등 여러 언어를 사용하면서 개발을 진행했는데 데이터가 많이 쌓이면 쌓일수록 분석 속도가 느려져서 다음에 혹시나 또 비슷한걸 개발할 수 있는 기회가 온다면 빅데이터 처리에 대해 조금 ..
-
[Swift] 클로저란?iOS 2022. 1. 4. 21:43
스위프트에는 '클로저(Closure)' 라는 개념이 존재한다. 클로저는 코드의 블럭이라고 볼 수 있는데, 우리가 흔히 사용하는 함수도 클로저이다. 클로저는 크게 Named Closure 와 UnNamed Closure 이렇게 2가지로 나눠진다. 우리가 주로 클로저를 말할땐 UnNamed Closure 를 지칭하고 함수는 Named Closure 에 포함된다. 클로저의 기본 구조는 아래와 같다. { (매개변수 리스트) -> 반환타입 in 실행할 코드 } 클로저는 1급 객체로, 변수 형태로 저장할 수 있고 함수의 파라미터로도 넘길 수 있다. 여기서 말하는 1급 객체란 함수형 프로그래밍에서 쓰이는 개념으로, 아래의 조건을 만족하는 객체를 말한다. 1. 변수나 상수에 저장 및 할당이 가능하다. 2. 함수의 파라..
-
Android Native 모듈 React Native 에서 사용하기안드로이드 2021. 6. 21. 11:31
최근 개발중인 플랫폼이 React Native 라 Native 모듈 형태로 제공하는 우리 라이브러리를 사용할 수 없다는 얘기를 들었다. 이럴때 공부 해봐야지 언제 할까 라는 생각으로 당장 시작해 보았다. 먼저, 기존에 사용하던 메소드들을 Wrapping 해주는 Wrapper 클래스가 필요하다. 이때, Wrapper 클래스는 ReactContextBaseJavaModule 이라는 클래스를 상속 받아야 하는데 해당 클래스를 상속받기 위해선 gradle 에 아래 코드를 추가해 주어야 한다. implementation 'com.facebook.react:react-native:+'; Wrapper 클래스를 개발할 때 context 값을 주의해야 한다. 기존에 context 값을 인자로 받던 메소드가 있었다면 여..
-
Android 전화 수신 차단하기안드로이드 2020. 12. 7. 15:35
이번 포스트에서는 Android 에서 전화 수신을 차단시키는 방법에 대해 알아보겠습니다. 우리는 때때로 전화를 받기 싫을때도 있고 받기 싫은 특정 번호가 있을 수 있습니다. 이 방법은 원천 차단이 아닌 전화 수신 중 자동적으로 거절버튼을 누르는 방식이라는 점을 알아두시기 바랍니다. 먼저 리시버 코드를 작성합니다. CallReceiver 라는 클래스를 만들고 BroadcastReceiver 를 상속받도록 합니다. public class CallReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { try { String state = intent.getStringExtra(Tel..
-
안드로이드 서비스 앱 삭제 및 강제종료 방지하기안드로이드 2020. 8. 24. 16:04
일단 기본적으로 꽤 위험할 수 있는 내용이라고 생각한다. 그럼에도 불구하고 부득이하게 이런 기술을 사용해야 하는 경우도 있으므로 내가 구현한 방법에 대해 정리해보려고 한다. 전체적인 루틴은 아래와 같다. 디바이스 관리자 권한 받음 -> UsageStatsManager를 이용한 현재 최상단의 화면 정보 가져옴 -> 디바이스 관리자 권한 제거 액티비티가 올라왔을 때 화면 전환 * 디바이스 관리자 권한을 얻으면? - 해당 디바이스를 제어할 수 있는 권한을 얻음 - 디바이스 관리자 권한을 받으면 강제종료 버튼이 비활성화 됨 * UsageStatsManager란? - 디바이스의 사용 기록 및 현재 상태에 대한 정보를 가지고 있는 Class - 이를 이용해 현재 최상단에 있는 액티비티의 클래스명을 가져올 수 있음 ..