2016-04-05 43 views
8

Như bạn đã biết, các dự án Xamarin được biên dịch thành tập hợp dll net dot và nó sẽ được gói vào tập tin apk và có thể dễ dàng phản ánh bởi các phản xạ như DotPeek.Obfuscation trong các dự án Xamarin

Câu hỏi đầu tiên của tôi là: Làm cách nào để bảo vệ mã của chúng tôi?

Câu hỏi thứ hai của tôi là: Các công cụ obfuscator như SmartAssembly có thể sử dụng trong các dự án Xamarin hoặc Xamarin không hỗ trợ chúng?

+0

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

+0

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. –

+0

@LexLi cảm ơn vì đã đề cập đến nó. Tôi vừa xóa thẻ. –

Trả lời

4

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:

enter image description here

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.

+0

Như chúng ta đều biết AOT biên dịch chỉ có sẵn cho doanh nghiệp giấy phép. Bây giờ Xamarin là miễn phí như vậy là nó có sẵn trong cộng đồng Visual Studio? –

+0

Cảm ơn bạn đã nêu bật điều đó, AOT thực sự chỉ có sẵn cho giấy phép Doanh nghiệp. Đang cập nhật câu trả lời. – matthewrdev

+0

Theo điều này: https://developer.xamarin.com/guides/android/deployment%2C_testing%2C_and_metrics/publishing_an_application/part_1_-_preparing_an_application_for_release/#aot mã gốc có được bao gồm trong APK cùng với các hội đồng chưa được biên dịch. Điều này có nghĩa là cả hai phiên bản biên dịch và chưa được biên dịch đều được bao gồm, và AOT không thực sự giúp đỡ cho việc làm xáo trộn? – HelloWorld

3

Đối với câu hỏi đầu tiên của bạn, bạn có thể sử dụng một số công cụ để làm xáo trộn mã Xamarin của bạn. Ví dụ: Crypto Obfuscator, Babel ObfuscatorDotfuscator

Đối với câu hỏi thứ hai của bạn, có vẻ như có thể xảy ra sự cố che giấu SmartAssembly. Kiểm tra phần Windows Phone here.

1

Không có cách nào bạn hoàn toàn có thể bảo vệ mã của bạn khỏi bị giải mã và xem xét.

Bạn có thể mất rất nhiều thời gian để băm tất cả các phương pháp và biến của bạn và sau đó dành nhiều thời gian khác để tạo một số thông dịch viên ứng dụng sẽ hiểu mã của bạn, nhưng ngay cả điều đó sẽ được xem xét, điều tra và cuối cùng bị bẻ khóa .

Xem thêm: How can I protect my .NET assemblies from decompilation?

Protect .NET code from reverse engineering?

2

Máy chấm công có hỗ trợ Xamarin và hướng dẫn trực tuyến (đối với Dotfuscator Professional hoặc miễn phí Community Edition) để biết cách tích hợp nó.Về bản chất, quá trình này là:

  1. Configure xây dựng để chạy Dotfuscator qua một AfterBuild nhắm mục tiêu
  2. Configure Dotfuscator:
    1. Xác định các yếu tố đầu
    2. Loại trừ mọi thứ từ việc đổi tên, như thường lệ/khi cần thiết
    3. Chỉ sử dụng các phép biến đổi tương thích Mono (Chỉ dành cho Pro)
  3. Định cấu hình a Copy nhiệm vụ hoặc sau xây dựng sự kiện để sao chép các tập tin nhị phân obfuscated trở lại vị trí ban đầu của họ
  4. xây dựng, thẩm định gây rối, và thử nghiệm

Họ và tiết lộ: Tôi làm việc cho giải pháp ưu tiên.

Các vấn đề liên quan