Notice : 해당 자료가 저작권등에 의해서 문제가 있다면 바로 삭제하겠습니다.
연구목적으로 사용하지 않고 악의적인 목적으로 이용할 경우 발생할 수 있는 법적은 책임은 모두 본인에게 있습니다.
iOS 앱 보안진단을 위한 환경설정
iOS 앱 정적 분석하기(class-dump-z, clutch)
Objective-C Runtime의 이해와 gdb attach 하기
iOS 앱 Cycript를 이용항 동적분석 및 변조
개발자 등록하지 않고 iOS 기기에 앱 설치 하기
Cycript 를 이용해 iOS 앱 로그인 우회 실습
Snoop-it 을 이용해서 iOS 앱 분석하기
먼저 iOS 기기를 jailbreak 한다.
– http://apollo89.com/wordpress/?p=3766 참고
iPad에 ssh으로 접속하기 위해서 openssh를 설치한다.
설치는 간단하다.
Cydia 의 search 메뉴에 가서 openssh 를 검색하여 설치한다.
원격에서 접속할 PC를 gateway으로 설정하고 iPad 의 IP를 확인한다.
ssh 으로 접속한다. (root/alpine – 기본 비밀번호이므로 변경하는 것이 좋다.)
ㅎㅎ잘된다^^
iPad 화면에서 직접 터미널 접속하기 위해서 MobileTerminal도 설치한다.
몇가지 command line 툴(ps, debugger, make, wget 등..)을 설치하기 위해 BigBoss Recommended tools package 를 설치한다.
설치는 역시 Cydia 의 search 메뉴에 가서 BigBoss 를 검색하여 설치한다.
잘 설치 되었는지 iPad의 Terminal로 접속해서 확인해보자.
MobileTerminal으로 접속시 계정으로 mobile 으로 로그인되어있다.
다음에는 iOS App 클래스 정보를 추출 하는데 사용하는 class-dump-z 를 설치해보자.
class-dump-z는 Cydia에 없으므로 수동으로 설치를 진행했다.
홈페이지에서(https://code.google.com/p/networkpx/wiki/class_dump_z) 다운로드 링크를 복사한 후에, wget으로 다운받는다.
1 2 3 4 5 6 7 8 9 10 11 |
Apollo89uiiPad:~ root# wget http://networkpx.googlecode.com/files/class-dump-z_0.2a.tar.gz --2014-04-07 14:12:23-- http://networkpx.googlecode.com/files/class-dump-z_0.2a.tar.gz Resolving networkpx.googlecode.com... 74.125.128.82, 2404:6800:4005:c00::52 Connecting to networkpx.googlecode.com|74.125.128.82|:80... connected. HTTP request sent, awaiting response... 200 OK Length: 806117 (787K) [application/x-gzip] Saving to: `class-dump-z_0.2a.tar.gz' 100%[================================================>] 806,117 226K/s in 3.5s 2014-04-07 14:12:28 (226 KB/s) - `class-dump-z_0.2a.tar.gz' saved [806117/806117] |
그리고 압축을 풀고 /usr/bin/ 에 iphone 용 명령을 복사한다.
1 2 |
Apollo89uiiPad:~ root#tar xvzf class-dump-z_0.2a.tar.gz Apollo89uiiPad:~ root#cp iphone_armv6/class-dump-z /usr/bin/ |
실행 및 사용법 확인
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 29 30 31 32 33 34 35 36 37 38 39 40 |
Apollo89uiiPad:~ root# class-dump-z Usage: class-dump-z [<options>] <filename> where options are: Analysis: -p Convert undeclared getters and setters into properties (propertize). -h proto Hide methods which already appears in an adopted protocol. -h super Hide inherited methods. -y <root> Choose the sysroot. Default to the path of latest iPhoneOS SDK, or /. -u <arch> Choose a specific architecture in a fat binary (e.g. armv6, armv7, etc.) Formatting: -a Print ivar offsets -A Print implementation VM addresses. -k Show additional comments. -k -k Show even more comments. -R Show pointer declarations as int *a instead of int* a. -N Keep the raw struct names (e.g. do no replace __CFArray* with CFArrayRef). -b Put a space after the +/- sign (i.e. + (void)... instead of +(void)...). -i <file> Read and update signature hints file. Filtering: -C <regex> Only display types with (original) name matching the RegExp (in PCRE syntax). -f <regex> Only display methods with (original) name matching the RegExp. -g Display exported classes only. -X <list> Ignore all types (except categories) with a prefix in the comma-separated list. -h cats Hide categories. -h dogs Hide protocols. Sorting: -S Sort types in alphabetical order. -s Sort methods in alphabetical order. -z Sort methods alphabetically but put class methods and -init... first. Output: -H Separate into header files -o <dir> Put header files into this directory instead of current directory. Apollo89uiiPad:~ root# |
우왕 굳!