Để mở rộng các nhận xét của yonel và Benjie ở trên:
1) Phương pháp của Landon Fuller dựa vào kiểm tra mã hóa, được liên kết ở trên bởi yonel, dường như là phương pháp duy nhất vẫn chưa bị đánh bại bởi các công cụ bẻ khóa tự động. Tôi sẽ không quá lo lắng về việc Apple sẽ sớm thay đổi trạng thái của tiêu đề LC_ENCRYPTION_INFO. Nó dường như có một số tác động không thể đoán trước đối với điện thoại đã bẻ khóa (ngay cả khi người dùng đã mua một bản sao ...)
Bằng mọi giá, tôi sẽ không thực hiện bất kỳ hành động hấp tấp nào chống lại người dùng dựa trên mã đó ...
2) Để bổ sung cho nhận xét của Benjie lại. obfuscation (điều cần thiết tuyệt đối khi xử lý bất kỳ giá trị chuỗi nào trong mã chống vi phạm bản quyền của bạn): một cách tương tự nhưng có lẽ còn dễ dàng hơn là luôn kiểm tra phiên bản băm muối của giá trị bạn đang tìm kiếm. Ví dụ: (mặc dù việc kiểm tra đó không còn hiệu quả), bạn sẽ kiểm tra tên khóa của từng MainBundle là md5 (keyName + "một số muối bí mật") với hằng số thích hợp ... Thay vì cơ bản, nhưng chắc chắn sẽ đánh bại mọi nỗ lực tìm kiếm chuỗi.
Tất nhiên, điều này yêu cầu bạn có thể truy vấn gián tiếp giá trị mà bạn muốn so sánh (ví dụ: bằng cách đi qua một mảng chứa nó). Nhưng điều này thường xảy ra nhất.