두가지 방법이 있음.
(1) 아이폰에 로컬 환경 구축.
(2) mac에 원격 환경 구축.
■iPhone에 iOS App 로컬 lldb 환경 구축
cydia에서 lldb-10 검색하여 설치하면 끝.
아이폰 단말기에서 lldb-10 -n <process name> 명령어로 attach 가능.
이후 lldb 명령어 참조하여 대상 앱 동적 디버깅 수행.
■mac에 iOS App 원격 lldb 환경 구축
macOS 10.14.4 VM / iOS 12.4(checkra1n JB) 에서 테스트
- mac에서
터미널에서 다음 명령어 수행
hdiutil attach /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport/12.4/DeveloperDiskImage.dmg
현재 디렉터리로 debugserver 복사
cp /Volumes/DeveloperDiskImage/usr/bin/debugserver ./
다음 entitlements.plist 파일 이용하여 debugserver 사이닝
codesign -s - --entitlements entitlements.plist -f debugserver
debugserver 실행파일을 아이폰의 /usr/bin/ 디렉터리 하위로 옮겨주고, 실행권한 755 할당
- 아이폰에서
appName은 앱 실행하고 나서 ps -ef 로 확인. 포트는 임의 지정가능. IP를 wildcard("*")로 지정 불가하므로, mac IP주소를 정확히 지정해줘야 함
debugserver <mac IP>:6666 -a <appName>
- mac에서
lldb
platform select remote-ios
process connect connect://<아이폰 IP>:6666
process attach 된 후에는 lldb 명령어 참조하여 동적디버깅 수행
※ lldb 주요 명령어
po $x0 |
객체(ex. x0 레지스터)의 description 메서드 호출 |
|
p |
primitive 값 출력 |
|
br list |
브레이크 포인트 리스트 출력 |
|
br delete 1 |
브레이크 포인트 삭제 |
|
br set -n viewDidLoad |
특정 메서드이름을 가지는 곳에 브레이크 설정 |
|
br set -a <address> |
특정 주소값에 브레이크 설정 |
|
c |
Process Continue |
|
n |
Next(Step Over). branch 포인트가 있다면 branch된 함수 안으로 들어가지 않고 다음으로 넘어감 |
|
s |
Step In. branch 포인트가 있다면 branch된 함수 안으로 들어감 |
|
finish |
Step out. 함수에서 빠져나옴 |
|
bt |
backtrace. 브레이크 포인트를 통해 멈춰진 곳이 어떤 경로를 통해 호출되었는지 보여줌 |
|
bt all |
모든 thread의 backtrace 출력 |
|
thread list |
thread 목록 출력 |
|
thread select 1 |
1번째 thread로 이동 |
|
frame info |
frame 정보 출력 |
|
frame select 2 |
2번째 frame 선택 |
|
watchpoint list |
watchpoint 목록 출력 |
|
watchpoint delete 1 |
1번째 watchpoint 삭제 |
|
watchpoint set variable _x |
watchpoint 설정 |
|
register read -A |
모든 레지스터에 저장된 값 출력 |
|
register read x0 |
x0 레지스터에 저장된 값 출력 |
※ 출처
https://kov4l3nko.github.io/blog/2016-04-27-debugging-ios-binaries-with-lldb/
'Information Security > iOS' 카테고리의 다른 글
Clutch(iOS 12.4) (2) | 2020.07.08 |
---|---|
DVIA-v2 Jailbreak Detection Test1 Using LLDB (0) | 2020.06.27 |
appinst 트윅 이용한 IPA 파일 설치 (5) | 2020.05.31 |
iOS 13.4.1 탈옥 - CheckRa1n + BootRa1n (1) | 2020.05.30 |
iOS 13.4.1 탈옥 - Checkra1n + Linux (11) | 2020.04.27 |