2012-03-26 38 views
35

Tôi đang phát triển một ứng dụng Android và tôi đang lên kế hoạch xuất bản ứng dụng đó (ứng dụng trả tiền). Tôi đã nghe nói rằng rất dễ dàng để cướp biển các ứng dụng Android (dễ dàng hơn nhiều so với iphone). Tôi đã tự hỏi từ kinh nghiệm của bạn hoặc những gì bạn biết, làm thế nào có thể tăng tính bảo mật của ứng dụng của tôi? Tôi biết rằng tôi không bao giờ có thể được bảo đảm 100% nhưng tôi muốn làm cho nó khó khăn hơn cho mọi người để cướp biển hoặc phân phối nó bất hợp pháp Bất kỳ ý tưởng, kinh nghiệm, ý kiến ​​bạn có thể chia sẻ?Cách bảo mật ứng dụng của tôi chống lại vi phạm bản quyền

+0

bạn sẽ phải đi với một loạt các kỹ thuật và bạn sẽ vẫn không thể ngăn chặn nó hoàn toàn. sử dụng 'google play license' và' code obfuscation' để bắt đầu. Tôi sẽ đề nghị kiểm tra các trang web vi phạm bản quyền phổ biến và yêu cầu các chủ nhà nhấp chuột để lấy các tệp xuống, nhưng tôi không chắc chắn về cách họ xử lý việc này. Và nó sẽ sớm trở lại bất cứ nơi nào khác, nó khá là vô vọng. – stefan

+0

tôi sẽ tư vấn để xây dựng phần cốt lõi của ứng dụng của bạn bằng cách sử dụng C++ và sử dụng NDK android, bạn sẽ sử dụng mạng để xác thực người mua hợp lệ. –

Trả lời

64

Tôi đã phát hành một ứng dụng chống phần mềm độc hại miễn phí cho Android và đảm bảo không ai tấn công nó là thiết yếu cho thành công của nó. Các mối đe dọa lớn nhất một lần nữa một ứng dụng trên Android Market bao gồm mã nguồn bị rò rỉ, sao chép/phân phối các ứng dụng trả tiền, và tái keying. Tôi giải thích từng cách dưới đây và cách giải quyết chúng.

Thứ nhất, this paper mô tả cách đảo ngược ứng dụng Android bằng cách giải nén mã đã biên dịch và xem mã nguồn. Bạn sẽ không thể chặn điều này xảy ra với ứng dụng của mình. Giai đoạn. Người nào đó có ý chí luôn có thể xem mã nguồn của bạn nếu họ nhận được bản sao của gói ứng dụng của bạn (dễ dàng có sẵn trên điện thoại gốc). Tin vui là bạn có thể làm xáo trộn những phần quan trọng trong mã của bạn khiến kỹ sư đảo ngược khó hơn. Proguard là một công cụ được cung cấp bởi Android cho phép bạn làm xáo trộn (khó đọc hơn) mã của bạn trong quá trình đóng gói. Tuy nhiên, để ngăn chặn mã quan trọng của bạn được đọc, bạn sẽ cần di chuyển tất cả các phương thức hoặc biến dễ bị tổn thương đến một tệp không phải là Activity, Service hoặc BroadcastReceiver. Để biết thông tin đầy đủ, hãy đọc tài liệu.

Để bảo vệ những bản sao chép trái phép và phân phối ứng dụng của bạn, Google Play cung cấp một số licensing options. Thật không may, LVL cũng không hoàn toàn an toàn. Hướng dẫn chi tiết về cách bẻ khóa (pre-Google Play) có sẵn here.

Cuối cùng, bài báo được liên kết ở trên, cũng như nhiều bài báo học thuật và blog trực tuyến mô tả cách thức, một khi mã nguồn (hoặc thậm chí mã nguồn bị xáo trộn) bị rò rỉ, một khi chỉ có thể thêm một số mã độc hại ứng dụng và xuất bản ứng dụng trên Android Market. Tin tốt ở đây là, trừ khi mật khẩu khóa cấp phép Android của bạn dễ đoán, hoặc nếu bạn đưa nó cho người khác, kẻ tấn công sẽ không thể xuất bản một ứng dụng có cùng khóa cấp phép. Điều này không chỉ bảo vệ bạn khỏi bị đổ lỗi, nhưng nó cũng sẽ làm cho nó để ứng dụng độc hại không thể truy cập dữ liệu có sẵn thông qua ứng dụng ban đầu của bạn (chẳng hạn như SharedPreferences).

Tất cả trong tất cả, cách tốt nhất để thực sự đảm bảo ứng dụng của bạn từ vi phạm bản quyền là để cấu hình và sử dụng Proguard, Google Play Cấp Giấy Phép, và đăng nhập bạn apk cuối cùng với một chìa khóa giấy phép rất an toàn chính xác.

+4

Wow .. Thông tin tuyệt vời và câu trả lời rất chi tiết. Tôi thích thực tế là nó được chứng minh bằng một bài báo. Tôi sẽ làm theo những gì bạn đề nghị. Tôi vẫn đang cổ vũ mọi người chia sẻ kinh nghiệm của họ – Snake

+6

Tôi muốn chỉ ra rằng bạn không cần một thiết bị gốc để có được một bản sao của một APK. 'ADB pull com.example.coolappdude'. Ngoài ra, Proguard là một obfuscator bytecode Java. Các nhà sản xuất ProGuard có một chương trình không miễn phí DexGuard là một obfuscator Dalvik bytecode. Có thể xem xét một hay khác tùy thuộc vào mức độ hoang tưởng của bạn. – CatShoes

+0

Dan Galpin đã có một cuộc nói chuyện tuyệt vời tại I/O 2011 mà đi qua các cách để làm cho LVL an toàn hơn: http://www.youtube.com/watch?v=TnSNCXR9fbY – keyboardr

6

hãy xem khuôn khổ cấp phép chơi google.

http://developer.android.com/guide/market/licensing/index.html

đây là lựa chọn tốt nhất của bạn.

Google Play Licensing là một dịch vụ dựa trên mạng cho phép một truy vấn ứng dụng Google tin cậy Chơi máy chủ cấp phép để xác định liệu ứng dụng được cấp phép cho người sử dụng thiết bị hiện hành. Dịch vụ cấp phép dựa trên khả năng của máy chủ cấp phép của Google Play để xác định liệu một người dùng cụ thể có được phép sử dụng một ứng dụng nhất định hay không. Google Play coi người dùng được cấp phép nếu người dùng là người mua được ghi lại của ứng dụng.

+0

Tôi nghe nói rằng việc cấp phép google (thông qua ký ứng dụng) thực sự vô giá trị. Có các công cụ tự động, tải xuống ứng dụng, xóa giấy phép và ký tên với người dùng mới chỉ bằng một cú nhấp chuột (tôi đọc nó ở một trong các diễn đàn) .. Tôi chắc chắn sẽ sử dụng giấy phép nhưng tôi cần một lớp bảo vệ khác .. – Snake

+1

cơ chế ký ứng dụng bị ngừng sử dụng. hệ thống cấp phép mới dựa trên mạng và khá vững chắc. –

8

Bạn có thể thêm các kiểm tra giả mạo kết hợp với sự làm xáo trộn để cảnh báo người dùng/tắt chức năng/báo cáo cho máy chủ nếu ứng dụng đã bị sao chép lậu. Tôi sử dụng DexGuard để làm cứng obfuscation.

Tamper kiểm tra

  • ứng dụng cài đặt - Sử dụng quản lý gói để đảm bảo các ứng dụng cài đặt là cửa hàng ứng dụng chơi/amazon
  • Emulator kiểm tra - Kiểm tra thuộc tính hệ thống cho dấu hiệu ứng dụng đang được chạy trên giả lập mà bên ngoài dev có thể cho biết tấn công/giả mạo
  • Kiểm tra có thể gỡ lỗi - Sử dụng trình quản lý gói để kiểm tra cờ có thể gỡ lỗi, điều này sẽ bị tắt trong sản phẩm để có thể cho biết tấn công/giả mạo
  • Kiểm tra chứng chỉ ký - Sử dụng trình quản lý gói Xác minh ứng dụng được ký với chứng phát triển của bạn (điều này sẽ bị phá vỡ nếu ai đó giải nén và repacked/từ chức ứng dụng)

update: Kể từ khi trả lời câu hỏi này, tôi đã viết một nhiều detailed article trên phát hiện xáo trộn.

+0

Cảm ơn bạn, bạn có ví dụ về mã không? Tôi sử dụng proguard cho obfuscation – Snake

+0

Cuốn sách này có một số ví dụ http://www.packtpub.com/android-security-cookbook/book * disclaimer Tôi đã viết các chương làm cứng * Bạn có thể tải xuống các mẫu mã miễn phí trên phần hỗ trợ của cuốn sách trang mạng. – scottyab

+0

@scottyab Điều này không làm tăng đáng kể khả năng người dùng hợp pháp không thể sử dụng phần mềm sau khi họ đã thanh toán? –

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