일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- databinding
- mvvm
- Observable
- google play
- paging
- Android 13
- php
- MediaSession
- Reactive
- node.js
- PagingLib
- 테스트 자동화
- SwiftUI Tutorial
- GCP
- Android
- 동영상
- 인앱결제
- node
- rx
- junit
- Animation
- MediaPlayer
- SWIFTUI
- mysql
- list
- MotionLayout
- RxKotlin
- android13
- Kotlin
- Koin
- Today
- Total
목록디버깅 감지 (2)
봄날은 갔다. 이제 그 정신으로 공부하자
서론 저는 핸드폰에 많은 정보를 기록하는 편입니다. 문득 떠오르는 아이디어들과 집에 갈 때 사야 하는 것들 그리고 민감한 개인 정보까지... 이러다보니 핸드폰이 해킹 당하면 내 개인 정보가 그대로 빠져나가는 문제가 생기겠더라구요. 마켓에 암호화를 지원하는 다양한 메모장 앱이 있었지만 왠지 불안하고 마음에 안들더라구요. 그래서 내가 개발자인데 내가 만들자!라는 반쯤 뇌절한 결론을 내리고 앱을 만들기로 했습니다. 내 메모를 보호하는 앱 만들기는 아래 순서로 연재하도록 하겠습니다. - 1편: 내 메모를 보호하는 기술(암호화, 보안) 소개 - 2편: 내 메모를 보호하는 앱 기획 - 3편: 내 메모를 보호하는 앱 소스 코드 설명 내 메모를 보호하는 앱 만들기에 적용된 기술 가장 중요한 것은 메모를 안전하게 보호하..
첫번째 방법은 앱을 실행한 ppid를 확인하는 방법으로 일반적으로 앱은 iOS의 launchd Process에 의해 실행 됩니다. launchd 프로세스는 user mode에서 첫번째로 실행되는 프로세스로 pid는 1입니다. 즉 앱이 실행될 때 ppid를 확인해서 ppid가 1이 아니면 디버거에 의해 실행 될 수 있다고 판단할 수 있습니다. 사용 방법은 아래와 같습니다. func hasDebugger() -> Bool { return getppid() != 1 } 두번째 방법은 sysctl 커널 명령어를 사용한 방법으로 sysctl 명령어는 커널 runtime 시에 커널의 파라미터를 변경할 때 시스템의 /proc/sys 디렉토리밑에 있는 커널 매개변수를 제어하는데 사용됩니다. sysctl 명령어를 사용해..