iOS 앱 점검(ObjC) 24

ios 탈옥탐지1 - 샌드박스 무결성 검사 (잘못 알려진 내용)

ios 탈옥탐지1 - 샌드박스 무결성 검사 (sandbox check) ios 앱 경로는 크게 두가지다. 1. 앱 샌드박스 내에 설치 기본적으로 서드파티 앱들은 신뢰할 수 없다고 가정하고 다양한 기능을 제한함. 2. 루트 파티션의 애플리케이션 폴더에 설치 ( /Applications ) 기본 탑재 앱은 샌드박스 없이 루트 경로 아래인 /Applications 에 설치된다. (샌드박스의 제한을 받지 않는다.) 물론 Cydia 등에서 받은 앱들도 웬만하면 굳이 샌드박스에 설치되지 않고 /Applications에 설치한다. 샌드박스 무결성 검사 ( "X" - 잘못 알려진 내용 ) 알려진 내용 : 샌드박스에선 fork()가 금지되므로, 제대로 동작했다면 샌드박스 제한을 받지 않는 상태다! --> 샌드박스 밖에 ..

ios 디컴파일 성능 비교 Ida, Hopper, Cutter(ghidra)

ios 디컴파일 성능 비교 Ida, Hopper, Cutter(ghidra) 1. 대표적인 디스어셈블러인 IDA에는 Hexray라는 디컴파일러가 있다. 2. Hopper는 IDA에 비해 훨씬 저렴하며 mac과 ios에 초점이 맞춰져 있다. 3. Radare2에서 디스어셈블러로 Cutter를 만들고 있는데, 여기서 r2dec과 ghidra로 디컴파일 옵션을 제공한다. 3가지 툴의 디컴파일 성능을 비교해보자 (ios 기준) DVIA JB 테스트 분석겸 개인적으로 주석을 달아놓았는데, 이걸 빼고 보더라도 다소 난해해 보이기는 하나, 런타임 라이브러리에 익숙하다면 어셈블리어로 보는 것보다야 훨씬 편하다. (x86부터 익숙해진 단축키도 한몫..) ios와 mac에서는 확실히 hopper가 공을 들였다는 게 느껴진..

gdb-peda 설치

gdb-peda 설치 git이 설치되어 있지 않다면 sudo apt install git 으로 깃 먼저 설치 현재 경로 아래에 깃 복사 git clone https://github.com/longld/peda.git ~/peda echo로 gdbinit에 바로 쓰는 경우가 대부분인데, 명령어만 따라했다가 어떻게 되돌리냐고 묻는 경우도 있어 직접 gedit으로 해보자. sudo gedit /etc/gdb/gdbinit 파일을 열고 그냥 gdb인 상태에서는 위 그림처럼 아무것도 없다. gdbinit 파일에 git clone으로 다운받은 source peda경로/peda.py를 적어주고 저장하면, gdb-peda로 변환된다. aslr -- Show/set ASLR setting of GDB checksec -..

기기에서 .ipa 파일 추출하는 방법 4가지

기기에서 .ipa 파일 추출하기 아이폰 앱 파일은 .ipa 인데 사실 .zip 형식임 따라서 1. /var/containers/Bundle/Application/ 경로에서 2. ls * 로 원하는 앱 찾고 3. 목표 앱 압축해서 확장자만 .ipa 로 바꿔주면 됨ㅋㅋㅋㅋ 사실 별도 툴도 필요없음; [fileza 이용] [설치] 1. apt.thebigboss.org/repofiles/cydia/debs2.0/filzafilemanager_3.3.2.deb 디바이스에 파일 다운받아서 dpkg -i deb파일로 설치해도 되지만, 2. cydia에 소스추가 : http://tigisoftware.com/cydia/ 후 fileza-64bit 바로 설치하는게 더 편함. 경로 이동 /var/containers/Bu..

ios앱분석 툴 Clutch 설치 (ios13)

Clutch 설치 (ios 13기준) 0. release 바이너리 그대로 쓴다. https://github.com/KJCracks/Clutch/releases Clutch github : https://github.com/KJCracks/Clutch KJCracks/Clutch Fast iOS executable dumper. Contribute to KJCracks/Clutch development by creating an account on GitHub. github.com 1. xcodebuild로 빌드하는 방법 github 설치 그대로 따라하면 된다. xcodebuild clean build로 빌드가 성공했다면 바이너리만 모바일 기기의 /usr/bin 폴더로 옮겨주면 된다. xcodebuild ..

iOS 아키텍처 패턴 - VIPER

iOS 아키텍처 패턴 - VIPER 원문 출처 : https://medium.com/ios-os-x-development/ios-architecture-patterns-ecba4c38de52 마지막 주자 VIPER는 MV(X) 카테고리가 아니라는 점이 흥미롭다. 이제는 책임 분배가 얼마나 중요한 지에 동의할 것이다. 레고 빌딩 경험이 iOS 앱 디자인에 반영되었다. VIPER는 기존의 MV(X) 패턴들과 다르게 3가지 카테고리가 아니라, 2가지 더 추가되어 총 5가지 카테고리를 가진다. * Interactor : data(Entities) 또는 networking과 관련된 business logic을 포함한다. (Entities의 새로운 instance를 만든다던지, 서버로부터 이들을 fetching 한..

iOS 아키텍처 패턴 - MVVM

iOS 아키텍처 패턴 - MVVM 원문 출처 : https://medium.com/ios-os-x-development/ios-architecture-patterns-ecba4c38de52 우선 기본적으로 MVC, MVP, MVVM와 같이 MV(X) 패턴들은 다음과 같이 3가지 요소로 나뉜다. 일반적인 카테고리 특징은 아래와 같고, 패턴에 따라 조금씩 차이를 보인다. Models - domain data 또는 데이터를 다루는 data access layer를 담당하는 카테고리. - ‘Person’, ‘PersonDataProvider’를 떠올려 보아라. Views - presentation layer (GUI)를 담당하는 카테고리. - iOS 환경에서 접두사 ‘UI’가 붙었던 모든 것을 떠올려 보라. C..

iOS 아키텍처 패턴 - MVP

iOS 아키텍처 패턴 - MVP 원문 출처 : https://medium.com/ios-os-x-development/ios-architecture-patterns-ecba4c38de52 우선 기본적으로 MVC, MVP, MVVM와 같이 MV(X) 패턴들은 다음과 같이 3가지 요소로 나뉜다. 일반적인 카테고리 특징은 아래와 같고, 패턴에 따라 조금씩 차이를 보인다. Models - domain data 또는 데이터를 다루는 data access layer를 담당하는 카테고리. - ‘Person’, ‘PersonDataProvider’를 떠올려 보아라. Views - presentation layer (GUI)를 담당하는 카테고리. - iOS 환경에서 접두사 ‘UI’가 붙었던 모든 것을 떠올려 보라. Co..

iOS 아키텍처 패턴 - Apple's MVC

iOS 아키텍처 패턴 - Apple's MVC 원문 출처 : https://medium.com/ios-os-x-development/ios-architecture-patterns-ecba4c38de52 우선 기본적으로 MVC, MVP, MVVM와 같이 MV(X) 패턴들은 다음과 같이 3가지 요소로 나뉜다. 일반적인 카테고리 특징은 아래와 같고, 패턴에 따라 조금씩 차이를 보인다. Models - domain data 또는 데이터를 다루는 data access layer를 담당하는 카테고리. - ‘Person’, ‘PersonDataProvider’를 떠올려 보아라. Views - presentation layer (GUI)를 담당하는 카테고리. - iOS 환경에서 접두사 ‘UI’가 붙었던 모든 것을 떠올..