Cách tốt nhất để bảo vệ mã NET của bạn (dlls) cho APK là cho phép Ahead Of Time (AOT) biên soạn:
Biên dịch AOT sẽ biên dịch các ứng dụng của bạn mã IL (.dlls) thành các hướng dẫn gốc. Mã cuối cùng được đóng gói vào APK sau đó là X86, hướng dẫn bằng tay vv thay vì mã IL được quản lý.
Biên soạn AOT chỉ có sẵn trong Giấy phép doanh nghiệp và các giấy phép cao hơn.
Trong khi AOT làm tăng độ khó của kỹ thuật đảo ngược, nó vẫn không phải là 100% chống lừa đảo. Các tập tin nhị phân cuối cùng vẫn có thể được kéo từ một thiết bị gốc và đảo ngược thiết kế bằng cách sử dụng phần mềm như IDA pro. Nó khó hơn rất nhiều so với sử dụng DotPeek nhưng vẫn có thể.
Điều quan trọng cũng cần lưu ý là các mặt bên dưới của việc bật biên dịch AOT. Thời gian xây dựng ứng dụng tăng đáng kể vì mọi assembly được tham chiếu bởi ứng dụng của bạn cần được biên dịch; kinh nghiệm của tôi chỉ ra rằng bạn nên dự kiến tăng 200% -300% thời gian xây dựng khi bật AOT.
Ngoài ra, việc biên dịch AOT sẽ tăng kích thước APK cuối cùng.
Hầu hết (tất cả?) Obfuscators sẽ làm việc kể từ khi bạn đang nói chuyện CIL dựa trên hội đồng (w/cùng một pro/khuyết điểm của bất kỳ. Net/Mono môi trường). Đối với Xamarin.Android, bạn cũng có thể kích hoạt "Enable assemblies in native code" nếu bạn là người dùng VS Enterprise. Điều này sẽ nhúng các assembly vào thư viện runtime NDK. Các kỹ sư ngược lại sẽ phải mất nhiều thời gian hơn để tìm ra các điểm trỏ/điểm kết thúc để trích xuất, nhưng giống như bất kỳ ai làm bất cứ ai muốn dành thời gian để RE nó có thể, bất kể bạn sử dụng obfuscation nào. – SushiHangover
Tại sao lại sử dụng thẻ iOS? Xamarin.iOS sử dụng AOT để biên dịch thành bản địa. –
@LexLi cảm ơn vì đã đề cập đến nó. Tôi vừa xóa thẻ. –