Gỡ lỗi một ứng dụng không thể gỡ lỗi
- Gần đây tôi gặp một ứng dụng không thể gỡ lỗi. Ứng dụng này chặn việc gắn trình gỡ lỗi, thoát sớm khi có chèn mã và làm sập toàn bộ điện thoại khi chạy trên thiết bị đã jailbreak.
- Ứng dụng iOS thường chứa thêm các cơ chế bảo vệ như phát hiện jailbreak hoặc làm rối mã. Ứng dụng này đặc biệt kết hợp rất nhiều lớp bảo vệ.
Phiên bản video
- Có một phiên bản video của bài viết này, trình bày quy trình chi tiết hơn.
Mục lục
PT_DENY_ATTACH
- Vượt qua
PT_DENY_ATTACH (chế độ dễ)
- Vượt qua
PT_DENY_ATTACH (chế độ khó)
- Điện thoại bị sập
- Chèn mã
- Kết luận
PT_DENY_ATTACH
- Gắn trình gỡ lỗi là bước đầu tiên. Trên điện thoại đã jailbreak, việc gắn trình gỡ lỗi thường khá dễ.
- Một hàm tên là
ptrace chặn việc gắn trình gỡ lỗi. Hàm này dùng yêu cầu PT_DENY_ATTACH để ngăn các lần gắn trình gỡ lỗi trong tương lai.
Vượt qua PT_DENY_ATTACH (chế độ dễ)
PT_DENY_ATTACH chỉ chặn trình gỡ lỗi sau khi được gọi. Nếu đặt breakpoint trước khi nó được gọi thì trình gỡ lỗi vẫn có thể gắn bình thường.
- Có thể đặt breakpoint ngay trên chính hàm
ptrace để vượt qua lời gọi này.
Vượt qua PT_DENY_ATTACH (chế độ khó)
- Một số nhà phát triển triển khai cơ chế chặn trình gỡ lỗi bằng cách dùng syscall trực tiếp thay vì
ptrace.
- Trong trường hợp này, cần tìm syscall tương ứng trong binary rồi vượt qua nó.
Điện thoại bị sập
- Ứng dụng khiến điện thoại soft reboot trong những điều kiện nhất định. Điều này xảy ra do nó gọi một phương thức ngốn bộ nhớ trong vòng lặp vô hạn.
- Có thể dùng
lldb để vượt qua phương thức này.
Chèn mã
- Ứng dụng bị crash khi chèn mã. Đây có thể là vấn đề do app group identifier không đúng.
- Trên điện thoại đã jailbreak, có thể chèn mã mà không cần ký lại ứng dụng. Nếu không, có thể giải quyết vấn đề bằng cách swizzle method.
1 bình luận
Ý kiến Hacker News
Bryce Bostwick làm những công việc rất ngầu và đầy cảm hứng trong lĩnh vực gỡ lỗi và đảo ngược ứng dụng
Trên DOS/Windows, các thủ thuật chống gỡ lỗi đã phổ biến từ rất lâu
Thật ngạc nhiên khi quy trình kiểm tra App Store của Apple không từ chối các ứng dụng thực hiện syscall trực tiếp
Tôi thắc mắc vì sao tác giả lại tìm
svc 0x80thay vìmov w16, #26Tác giả sẵn sàng trả lời câu hỏi
Video ở đầu là một video lập trình rất xuất sắc
Tôi thắc mắc liệu đây có phải là một ứng dụng hợp pháp hay là thứ bị nghi là malware nên mới bị gỡ lỗi
Vượt qua PT_DENY_ATTACH (Hard Mode)
Tôi thắc mắc về thông báo "com.apple.tw.twrr"
Tôi thắc mắc có ai đang đảo ngược mã JavaScript của các trang web hay không
Tôi thắc mắc liệu có thể chạy kext tùy chỉnh trên iPhone đã jailbreak hay không