앵하니의 더 나은 보안
iOS LLDB 본문
서론
안티 디버깅 항목을 진단하려면 어떻게해야하는지 슥 보다가
lldb라는 좋은 디버깅 을 발견해서 정리하려한다.
본론
Attach 및 BP 설정
- 먼저 cydia, sileo, zebra 등의 트윅 설치 어플리케이션에서 lldb를 검색하면 어렵지않게 찾을 수 있으니 설치부한다.
- attach 하고자하는 앱 이름 혹은 pid를 입력해 lldb를 실행한다.
#lldb -p [pid] 혹은
#lldb -n [AppName]
- image list를 입력해 메모리에 로드된 모듈들의 메모리 적재 주소를 불러온다.
(lldb) image list
또는 모듈 이름만 선택적으로 리스팅할 수 있다.
(lldb) image list | grep UnityFramework
- Unity 게임을 대상으로 디버깅을 진행하고 있으므로 UnityFramework의 Base Address 확인
- 그리고 복원한 심볼릭 정보를 통해 디버깅에 사용하고자하는 함수의 RVA 값 확인
- Base Address + RVA 값을 계산해 메모리 내 해당 함수가 존재하는 주소 계산
- 계산한 주소에 break point 설정
(lldb) b 0x10C6E4698
- 이후 해당 함수가 동작하면 break point에서 레지스트리 값, 함수의 인자 값 등 다양한 정보 확인 가능
유용한 lldb 명령어들
(lldb) po $arg1 형식으로 함수의 인자 값 확인 가능
(lldb) register read 형식으로 레지스터 데이터 확인 가능
(lldb) register write [target] [value] 명령을 사용해 특정 레지스터의 값 수정 가능
(lldb) dis -p 명령으로 현재 break point 이후의 어셈블리 코드 출력
(lldb) memory write -s [수정할 바이트 수] [수정할 메모리 주소] [해당 메모리 주소에 삽입할 데이터]
형태로 실시간으로 어셈블리 코드 패치 가능
시연에서는 mov x1, #0x0를 mov x1, #0x1로 수정
(lldb) memory write -s 4 0x10d3e0698 0xd2800021로 바이트 데이터 수정 후
(lldb) dis -p 로 해당 메모리 주소 내 수정된 어셈블리어 확인
결론
iOS 안티 디버깅 테스트는 lldb로 하자
참고
'보안 기술 > iOS' 카테고리의 다른 글
How to analyze Unity Based iOS Games (2) | 2024.06.23 |
---|---|
24년 4월 기준 iOS 탈옥법(trollstore/BootStrap/roothide) (4) | 2024.05.10 |
테스트 단말기 iOS를 특정 버전으로 업그레이드(다운그레이드) (2) | 2023.10.01 |
iOS에서 USER CA의 완전 신뢰 기능을 확인할 수 없을 때 (0) | 2022.07.18 |
Comments