https://github.com/jsherman212/ktrw
1. KTRW git clone / make all
$ git clone --recursive https://github.com/jsherman212/ktrw
2. 컴파일 빌드에러 수정 및 gdb-remote시 패닉 수정
deprecated 관련 오류 발생시 해당 소스코드 파일 맨 상단에 다음 코드를 추가
#pragma clang diagnostic push #pragma clang diagnostic ignored "-Wdeprecated-declarations"
https://github.com/jsherman212/ktrw/issues/2
pongo_kextload/source/pongo_kextload.c 코드 중
static void command_ktrwpf(const char *cmd, char *args) 함수에서 마지막 다음 코드를 추가
g_mhaddr = va_for_sa(g_mhaddr);
3. checkra1n에서 pongoOS 모드로 부팅 / 모듈 업로드 / LLDB USB 포트 구축
$ /Applications/checkra1n.app/Contents/MacOS/checkra1n -c -p $ pongo_kext_loader/pongo_kext_loader \ -l pongo_kextload/kextload.pongo-module \ -k ktrw_gdb_stub/ktrw_gdb_stub.ikext $ ktrw_usb_proxy/ktrw_usb_proxy 39399
4. ipsw로부터 커널 다운받아 압축풀기 (jtool2 2.1 구버전 이용)
$ brew tap stek29/homebrew-idevice $ brew install partialzipbrowser $ pzb -d -g kernelcache.release.iphone10 https://updates.cdn-apple.com/2021WinterFCS/fullrestores/071-23198/C10D1954-77D2-4340-B0B3-17EFD3ED957B/iPhone_4.7_P3_14.4.2_18D70_Restore.ipsw $ ./jtool2_old -dec kernelcache.release.iphone10 $ mv /tmp/kernel .
5. lldb 디버거 실행
$ ktrw_usb_proxy/ktrw_usb_proxy 39399 (다른 터미널 창에서) $ lldb kernel (lldb) target create "kernel" (lldb) settings set plugin.dynamic-loader.darwin-kernel.load-kexts false (lldb) gdb-remote 39399
아이폰 커널 디버깅 attach 성공한 모습