2011-12-23 45 views
25

Tôi vừa mới phát hành một ứng dụng, một ứng dụng trả tiền, 4 ngày sau đó một người dùng đã nói với tôi rằng có một trang web khác ở Trung Quốc lưu trữ ứng dụng của tôi. Tôi đã tải xuống từ đó và nó hoạt động tốt trên thiết bị của tôi!Vi phạm bản quyền, vi phạm bản quyền, vi phạm bản quyền. Tôi có thể làm gì?

Có các bài đăng ở đây cho biết mọi người có thể thay đổi tên gói và xuất bản lại một gói ứng dụng. Nhưng đây không phải là trường hợp của tôi, phiên bản nứt vẫn sử dụng cùng một tên gói. Tôi đã sử dụng Cấp phép bán hàng tự động của Android trong chương trình, nhưng phiên bản bị nứt không thực hiện kiểm tra cấp phép. Tôi đã sử dụng ProGuard để làm xáo trộn nó, nhưng điều đó không ngăn cản các tin tặc.

Câu hỏi số 1: Tôi đã ký tệp APK theo hướng dẫn của Google. Tuy nhiên, họ vẫn sửa đổi mã và lấy phần kiểm tra giấy phép. Tôi có sai khi ký một tập tin apk được thiết kế để ngăn mọi người giả mạo nội dung tập tin không?

Câu hỏi # 2: Đối với các chương trình Win32 .exe, tôi đã sử dụng tổng kiểm tra để xác định xem tệp đã bị thay đổi chưa. Đây là cách nó hoạt động: Khi một .exe được tạo ra, tôi đã sử dụng một công cụ để tính tổng của nội dung byte của tệp, sau đó chèn nó vào một nơi nào đó trong tệp, ví dụ, 4 byte sau mẫu văn bản "CHỮ KÝ CỦA TÔI" . Sau đó, tại thời gian chạy, chương trình sẽ mở tệp .exe và tính toán tổng byte, so sánh nó với số nguyên sau chữ ký.

Có ai đã thử phương pháp này trên tệp APK không? Chăm sóc để chia sẻ kinh nghiệm của bạn?

Trả lời

28

Cuối cùng, tính năng bảo vệ ứng dụng được tích hợp sẵn trong Android rất kém. Dưới đây là các phương pháp hay nhất của bạn.

1) Có đề nghị của Google để sử dụng mã obfuscation, ký mã hóa, và máy chủ xác minh giấy phép của họ được thiết kế để ngăn chặn hành vi trộm cắp phần mềm. Tuy nhiên, việc triển khai của họ rất thiếu sót. Yêu cầu duy nhất mà APK phải chạy là nó được ký. Nó không quan trọng ai đã ký nó mặc dù. Không có kiểm tra nào cho thấy chữ ký của bạn là chữ ký của nó. Vì vậy, để crack nó, bạn chỉ cần loại bỏ việc kiểm tra giấy phép và ký lại với bất cứ điều gì cert bạn muốn. Sau đó, người dùng có thể tải nó trên điện thoại của họ với "cho phép các ứng dụng phi thị trường" được chọn.

Không sử dụng giấy phép của Google như hiện tại. Sửa đổi mã rất nhiều. Thêm một số tham số mới để sử dụng khi tạo khóa. Di chuyển mã xung quanh/tái kiến ​​trúc nó. Không bao gồm thư viện cấp phép của Google làm dự án thư viện. Đặt nó trực tiếp trong mã của bạn. Làm cho mã càng khắt khe và kludgy càng tốt. Thêm các hàm không làm gì, nhưng sửa đổi các giá trị khi đang di chuyển. Thực hiện các chức năng khác sau đó để chuyển đổi chúng trở lại. Xác minh giấy phép lan truyền trong toàn bộ cơ sở mã của bạn.

Nếu bạn không thực hiện các bước đó thì mã có thể tự động bị bẻ khóa. Bằng cách làm những bước đó ít nhất là cracker cần phải dành thời gian để crack nó. Điều đó có lẽ sẽ chỉ mất vài giờ. Nhưng một vài giờ là nhiều thời gian hơn nhiều so với việc ngay lập tức bẻ lớp cấp phép chuẩn của Google. Có những công cụ cracker sẽ thực sự chỉ tự động tải xuống các gói android mới được phát hành và, nếu chúng sử dụng giấy phép android chuẩn, hãy crack chúng và tải lên các APK bị nứt cho các loại trang web này. Bằng cách thực hiện triển khai của bạn không phải việc thực hiện vani bạn làm cho mọi thứ trở nên khó khăn hơn, chỉ với một vài giờ nỗ lực vào cuối của bạn.

2) Đây là kỹ thuật chống nứt phổ biến. Bạn có thể làm điều này trên Android nếu bạn muốn. Nhưng nó có thể bị nứt trong khoảng 5 phút. Nếu bạn Google có hướng dẫn về cách để crack kỹ thuật cụ thể này. Về cơ bản bạn chỉ cần tìm các cuộc gọi CRC trong mã và loại bỏ các kiểm tra sau khi CRC trở lại.

Android không có bảo mật vốn có. Bạn có thể root bất kỳ điện thoại nào và tải xuống APK. Bạn có thể dễ dàng hack APK để bật gỡ lỗi và chỉ cần bước mã để xem bất kỳ khóa nào bạn đã lưu trữ trong mã. Vì vậy, cuối cùng tôi sẽ không dành quá nhiều thời gian cho việc này. Không thể bảo mật Ứng dụng Android.Tôi sẽ chỉ làm công cụ thông thường trong danh sách ở trên và tiếp tục.

3) Nếu bạn thực sự hoang tưởng, bạn có thể thực hiện cấp phép của riêng bạn trên máy chủ cấp phép của riêng bạn. Đây là phương pháp tôi đã thực hiện, nhưng không nhiều để bảo vệ ứng dụng vì trộm cắp, vì nó cho tôi cơ chế bán ứng dụng trực tiếp từ trang web của tôi để người dùng không có Google Play vẫn có thể mua ứng dụng của tôi.

+0

chàng trai thảo luận vĩ đại .... – himanshu

+0

@metalideath câu trả lời thoải mái ....... + 1. –

+0

+1 thông tin đẹp ... –

0

Sự hiểu biết của tôi khi xem xét các điều khoản của thị trường Google là bạn không thể bán ứng dụng của mình trực tiếp từ trang web của bạn vì nó vi phạm điều khoản thị trường ứng dụng của Google. Tôi nghĩ rằng việc triển khai các biện pháp bảo vệ tùy chỉnh trong mã của bạn là cách tốt nhất để thực hiện. Các phương thức chuẩn không hiệu quả vì mã có thể dễ dàng được tách rời

+2

Chào mừng bạn đến với StackOverflow! Cố gắng tránh các câu như "sự hiểu biết của tôi" và thay vào đó hãy thử liên kết với các tuyên bố thực tế hoặc tài liệu hỗ trợ. – ajacian81

+1

Bạn đang đề cập đến phần không thể liên kết với một ứng dụng từ Google Market/Cửa hàng Play không cung cấp cho họ sự cắt giảm doanh thu. Nếu bạn không muốn cung cấp cho Google hoa hồng, bạn chỉ có thể làm như Amazon App Store và thiết lập phân phối của riêng bạn trên trang web của bạn mà không liên kết đến nó từ ứng dụng của bạn trên Google Play. Sau đó, nếu bạn không phụ thuộc vào Cửa hàng Google Play để được khám phá thì ứng dụng của bạn không vi phạm bất kỳ điều khoản nào của họ. –

1

Tôi đã liên lạc với Google và được hướng dẫn đến một cuộc trò chuyện hữu ích về cách thay đổi LVL giấy phép cơ bản. Kiểm tra this talk từ Google I/O 2011.

10

Passive/Aggressive bị đánh đắm

Tôi đồng ý với @metalideath rằng Obfuscating và cludging mã cấp phép là không đơn giản.

Đây là một kỹ thuật ẩn dễ dàng mà tôi gọi là 'scuttling' hoạt động cho các ứng dụng được triển khai cho Google AND Amazon. Scuttling là phát hiện vi phạm bản quyền mặt trước của ứng dụng. Việc cần làm một khi được phát hiện là trong mục đích của người tạo ứng dụng.

  • Đánh lừa hung hăng: Ví dụ: Chấm dứt và/hoặc báo động trên ứng dụng vi phạm bản quyền. Giao tiếp mạng không cần thiết.
  • Thám hiểm thụ động: Không sửa đổi ứng dụng. Ví dụ. cho phép theo dõi.
  • Scuttling thụ động/bạo lực: sửa đổi ứng dụng tinh tế. Ví dụ. âm thầm vô hiệu hóa các tính năng chính. Dẫn dắt bọn cướp biển vào suy nghĩ họ bungled và hủy xuất bản ứng dụng lậu.

Nếu ứng dụng của bạn được đổi tên và/hoặc cài đặt từ bất kỳ nguồn nào khác ngoài Google hoặc Amazon, scuttle() trả về giá trị true.

// Dont just copy/paste this code - that is what automated crackers look for - cludge it! 
// No network communication is required at runtime. 
// myPackageName should decode at runtime to "com.yourpackagename" 
// google  should decode at runtime to "com.android.vending"; 
// amazon  should decode at runtime to "com.amazon.venezia"; 

public boolean scuttle(Context context, String myPackageName, String google, String amazon) 
{ 
    //Scallywags renamed your app? 

    if (context.getPackageName().compareTo(myPackageName != 0) 
    return true; // BOOM! 

    //Rogues relocated your app? 

    String installer = context.getPackageManager().getInstallerPackageName(myPackageName); 

    if (installer == null) 
    return true; // BOOM! 

    if (installer.compareTo(google) != 0 && installer.compareTo(amazon) != 0) 
    return true; // BOOM! 

    return false; 
} 

KẾT QUẢ

Ảnh chụp màn hình sau đây được lấy từ Google Analytics cho thấy một sao chép lậu theo dõi ứng dụng miễn phí từ playstore (com.android.vending) đã được tái triển khai với bị đánh đắm tích cực (không playstore bản cài đặt phát hiện và chấm dứt) . Không theo dõi (không đặt) theo dõi giảm xuống. Theo dõi không bắt buộc, nhưng được bật cho các phép đo này.

enter image description here

THẢO LUẬN

dịch vụ Lưu ý ký đóng một vai trò trong việc phá thủng: Người quản lý gói thực thi tên gói độc đáo với chữ ký độc đáo.

Điều này trình bày câu hỏi phải làm gì khi ứng dụng bị đánh lừa (cướp biển được ứng dụng phát hiện). Vi phạm bản quyền là một hình thức lan truyền (phân phối không kiểm soát được) của ứng dụng của bạn. Nó đã được phát hiện bằng cách bật back-end theo dõi phân tích. Scuttling cho phép người tạo ứng dụng tùy chỉnh phản hồi front-end có hoặc không có theo dõi.

Việc đánh lừa hung hăng rõ ràng là có thể phát hiện được bởi những tên cướp biển (BOOM!). Điều này khuyến khích nứt thêm. Thám tử thụ động là ít rõ ràng hơn, nhưng có thể liên quan đến theo dõi.

vi phạm bản quyền có thể không phòng ngừa được nhưng nó là có thể dự đoán, phát hiện và theo dõi được.

Tracking có thể trình bày những vấn đề không thể vượt qua để cướp biển, mà còn trình bày các vấn đề đạo đức riêng của nó.

thụ động/bị đánh đắm hung hăng đòi hỏi không có giao tiếp mạng như đã nêu ở trên có lẽ là giải pháp tốt nhất. Nó dễ dàng ẩn (không giống như cấp phép) và có thể được điều chỉnh để trở nên không rõ ràng nhất có thể.

+2

+1 cho các hiệu ứng đặc biệt minh họa. –

+1

Câu trả lời hay nhất tôi đọc trong một thời gian dài! Bạn nên gọi nó là "Ramming" khi bạn có hiệu quả đang nói "bạn muốn ứng dụng của tôi? Ở đây 'ave nó !!" –

+0

Như đã đề cập, scuttling cho phép các nhà thiết kế ứng dụng bị động và/hoặc hung hăng khi phát hiện một tên cướp biển. Kể từ khi vi phạm bản quyền cũng là một kênh phân phối virus, một số suy nghĩ nên đi vào các hành động thực hiện. Có thể chuyển hướng đến trang web của người sáng tạo hoặc trang PlayStore là tốt nhất ... –

0

Điều tốt nhất cần làm là đừng lo lắng về điều đó. Những người lậu nó ở Trung Quốc không phải là khách hàng của bạn, và sẽ không bao giờ. Nếu không có phiên bản cướp biển, họ vẫn sẽ không trả tiền cho bạn một bản sao, trong mọi xác suất. Bên cạnh đó nếu ứng dụng của bạn trở nên phổ biến, nó sẽ được sao chép, giống như các ứng dụng iOS. Các hệ thống bảo mật bạn đã triển khai là tất cả những gì bạn cần vì chúng ngăn chặn hầu hết người dùng vi phạm bản quyền ứng dụng.

Cố gắng để làm bằng chứng vi phạm bản quyền ứng dụng của bạn sẽ chỉ gây tổn hại cho các cơ sở mã và làm cho nó khó khăn hơn để duy trì, cũng như có khả năng giới thiệu các vấn đề cho khách hàng trả tiền chính hãng của bạn. Thay vào đó, hãy tập trung vào việc quảng bá ứng dụng của bạn và giúp khách hàng dễ dàng thanh toán và sử dụng. Bằng cách đáp ứng các yêu cầu tính năng và báo cáo lỗi, bạn thêm giá trị mà mọi người sẵn sàng trả tiền, thay vì tìm ra một số bản sao bị xé nhỏ từ một trang web Trung Quốc có thể là một trojan.

Cuối cùng, báo cáo các bản sao cướp biển để các nhà cung cấp chống virus. Cung cấp bản sao của APK. Họ sẽ thêm chữ ký vào cơ sở dữ liệu của họ để nó được gắn cờ là có khả năng nguy hiểm.

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