2009-10-06 55 views
22

tôi đã tạo sản phẩm của mình và cũng tạo khóa cấp phép cho điều đó nhưng tôi muốn hỏi khóa đó sau 30 ngày. tôi đã làm điều đó với giá trị đăng ký lưu trữ ngày với thêm 30 ngày trong đó. nhưng tôi thấy rằng nếu người dùng thay đổi ngày hệ thống với 30 ngày trước khi logic của tôi không hoạt động.Tôi làm cách nào để sản phẩm của mình được dùng thử trong 30 ngày?

vì vậy có giải pháp nào cho phần mềm dùng thử phiên bản mà không kiểm tra ngày hệ thống và cho phép chỉ 30 ngày dùng thử không?

+0

Chỉ tò mò, giá trị bán hàng mục tiêu cho ứng dụng này là gì? – Lazarus

+2

@Lazarus - 50 lakhs – Nirmal

Trả lời

2

Bạn cần có cách phát hiện nếu người dùng thay đổi ngày kể từ lần đầu tiên bạn dùng thử. Trong các giải pháp mà tôi đã sử dụng trước đây, chúng tôi đã lưu ngày "được thực hiện lần cuối" và ngày "được thực thi đầu tiên" và nếu đồng hồ thay đổi thành bất kỳ điều gì hơn hai ngày "thực hiện lần cuối", chúng tôi sẽ hết hạn dùng thử. Bạn cũng cần một truy cập "ngày thực hiện" để họ không thể tiếp tục di chuyển ngày hai ngày trở lại (quên đề cập đến phần đó) - bộ đếm được tăng lên trên mỗi lần thực thi. Tất nhiên, các hệ thống cấp phép phần mềm như thế này luôn tránh được bằng cách gỡ cài đặt và cài đặt lại bằng cách làm mới registry - mẹo lừa đảo và sao chép thông tin giấy phép của bạn đủ để thực hiện điều này, nhưng cuối cùng, nó sẽ được tìm thấy (đặc biệt là nếu bạn đang sử dụng một codebase .NET không rõ ràng).

+3

Hoặc chỉ chạy nó trong một hình ảnh máy ảo mới. –

+0

@Pete: Chính xác. –

5

Bạn có thể sử dụng thành phần cấp phép. Bạn có thể tự làm một mình (xem LicenseManager class) hoặc mua một cái từ một nhà cung cấp (ví dụ: CryptoLicensing).

+2

Vấn đề với "an ninh sức mạnh quân sự" (như quảng cáo bởi LogicNP) là quân đội sử dụng các thế mạnh khác nhau của mật mã cho các mục đích khác nhau. Bạn cần một giấy phép cho vật liệu nổ ở Anh cho những thứ mạnh mẽ - tất cả các crypto quân sự mạnh mẽ được lưu trữ trong các mô-đun phần cứng nhúng mà tự hủy nếu bị giả mạo; nếu bạn đã xuất bản nó như là phần mềm bạn sẽ bị truy tố theo hành động bí mật chính thức. Hoa Kỳ, nếu có, hạn chế hơn trong việc xử lý mật mã mạnh. Vì vậy, nó là một tuyên bố rất quan trọng, và có lẽ nên là "mật mã yếu nhất mà quân đội đôi khi sử dụng". –

35

Bạn có thể có một khóa đăng ký khác mà bạn đã tăng sau mỗi ngày sử dụng. Bằng cách đó, ngay cả khi họ thay đổi ngày của máy tính, phím này sẽ cho biết chương trình của bạn đang chạy trong> 30 ngày.

Ngoài ra, giá trị này có thể được mã hóa để nếu người dùng cố gắng thay đổi theo cách thủ công, chương trình có thể từ chối chạy vì không thể giải mã giá trị và nhận số hợp lệ.

Để khôi phục cài đặt, bạn có thể thêm một số thông tin vào bất kỳ tệp nào được lưu bằng phiên bản dùng thử của ứng dụng duy nhất cho phiên bản ứng dụng cụ thể đó (có thể là dấu thời gian từ khi được cài đặt). Khi một phiên bản dùng thử của ứng dụng của bạn cố gắng mở một tệp, nó sẽ kiểm tra chữ ký này và đảm bảo rằng nó đã được tạo với cùng một cá thể đó, nếu không sẽ từ chối mở tệp. Điều này về cơ bản trung tính khả năng chỉ đơn giản là cài đặt lại ứng dụng và tiếp tục sử dụng nó.

Vào cuối ngày, người dùng có toàn quyền kiểm soát máy của họ và có thể tìm mọi cách xung quanh bất cứ điều gì bạn muốn làm (thiếu truy cập dịch vụ web nơi các chi tiết này được giữ trước khi bạn để người dùng sử dụng ứng dụng). Bạn có lẽ không nên tốn quá nhiều năng lượng để ngăn chặn những kẻ sẵn sàng vượt qua rắc rối thêm này, nhưng thay vào đó hãy dành thêm thời gian/tiền/năng lượng để cải thiện ứng dụng cho những người sẵn sàng trả tiền.

+17

+1 cho lời khuyên cuối cùng –

+0

Tệp hàng loạt đơn giản Lưu ngày hiện tại C, bắt buộc ngày D, khởi động ứng dụng hơn khôi phục ngày C một lần nữa sẽ mở nó ...:/ –

2

Khó xử lý 30 ngày mà không tham chiếu đến ngày/giờ của hệ thống. Bạn luôn có thể giữ một danh sách các ngày mà ứng dụng được bắt đầu và đếm 1 cho mỗi lần nó khác với lần trước. Bằng cách này, người dùng của bạn sẽ phải đặt cùng một ngày mỗi khi họ kích hoạt ứng dụng của bạn.

Ngoài ra, bạn có thể, cung cấp có truy cập internet, truy vấn một máy chủ thời gian tốt đã biết cho ngày hiện tại. Điều này có thể được phá vỡ bằng cách ngắt kết nối nhưng bạn luôn có thể yêu cầu kết nối Internet trước khi ứng dụng của bạn bắt đầu.

Cuối cùng, nguồn thời gian bên ngoài, cục bộ qua khóa phần cứng hoặc tương tự nhưng tôi nghĩ bạn đang đi sâu vào nơi bạn muốn trực tiếp quản lý trực tiếp các thử nghiệm.

0

NẾU bạn có thể đảm bảo kết nối internet, bạn có thể triển khai chương trình trực tuyến (kiểm tra máy chủ thời gian hoặc máy chủ xác thực của riêng bạn). Tất nhiên là giới thiệu một sự phụ thuộc khác - nếu internet biến mất, người dùng của bạn không thể làm việc.

Cuối cùng tôi muốn nói mua một giải pháp cấp phép của bên thứ ba - nó vẫn không thể phá vỡ nhưng nó có thể sẽ mạnh mẽ hơn cái bạn có thể tự làm mà không cần nhiều thời gian và công sức.

0

Lưu trữ ngày chạy cuối cùng và bất cứ khi nào ngày hệ thống trước ngày đó, hết hạn dùng thử.

duy nhất phương pháp không an toàn là để xác nhận ứng dụng chống lại một dịch vụ mà bạn sở tại, giả sử không có ai bị nứt mã kết nối của bạn;)

Chừng nào họ có thể xóa giá trị registry/file lưu trữ bị cô lập/lưu cài đặt: họ chỉ có thể khởi động lại bản dùng thử. Không có nhiều bạn có thể làm về điều đó. Đó là lý do tại sao mọi người chọn giảm chức năng trong phần mềm dùng thử, ngoài thời gian dùng thử dựa trên thời gian.

4

Tôi có một giải pháp đơn giản cho bạn.

Take 2 biến cho registry: 1. ngày 2. quầy

bước sau:

  1. Đặt một bộ đếm = 1

  2. Sao chép hệ thống cập nhật cho đến nay

  3. Kiểm tra mỗi lần nếu ngày khác với ngày hiện tại, hơn là sao chép ngày đó vào sổ đăng ký ry date, cũng tăng bộ đếm lên 1. Nếu ngày tháng giống nhau, đừng làm gì cả.

  4. Bây giờ bạn có thể kiểm tra xem bạn truy cập trong nhiều ngày xét xử hết hạn

Bằng cách sử dụng những thủ thuật, nếu người dùng thay đổi ngày hệ thống đến thời điểm trước đó hơn cũng nó hoạt động.

Để đăng ký, bạn có thể mã hóa ngày & để người kỹ thuật không nhận ra logic của bạn!

cổ vũ ...

THÊM

Logic này không chỉ khi người dùng không thay đổi ngày cho mỗi ngày! Một lần nữa chúng tôi có giải pháp cho điều đó!

Tôi không biết liệu nó có thể hay không nhưng bạn luôn có thể có một số giải pháp:

  1. đếm tổng thời gian cho thời gian dùng thử & lưu trữ nó trong registry.
  2. Bây giờ, tính tổng thời gian cho mỗi lần chạy và thêm nó vào một biến khác. (Tôi hy vọng rằng nó có thể được thực hiện bởi bộ đếm thời gian)
  3. So sánh hai giá trị trên để quyết định hết hạn.
+2

Giải pháp thú vị trừ khi đồng hồ chỉ chạy về phía trước .. Tôi khởi chạy ngày hôm sau và ngày trong sổ đăng ký hiện nay, nó không khác và vì vậy tôi không tăng bộ đếm? Ngoài ra, điều gì sẽ xảy ra nếu tôi khởi chạy ứng dụng hai lần (hoặc hơn) trong 1 ngày? Mỗi lần khởi chạy sẽ tăng bộ đếm. – Lazarus

+2

OK, tôi đã thực hiện một thay đổi nhỏ với logic. – Vikas

0

Nếu được chấp nhận cho phép sử dụng 8 giờ dùng thử (thay vì 30 ngày dùng thử), thì một cách để loại bỏ sự phụ thuộc vào Ngày giờ hệ thống là sử dụng bộ hẹn giờ trong ứng dụng của bạn. phút. Đếm số này và cứ mỗi khi ứng dụng được chạy, nó sẽ tích lũy tổng số phút sử dụng. Sau đó bạn có thể lưu trữ giá trị đếm này ở đâu đó, chẳng hạn như trong sổ đăng ký.

0

Đó là cửa hàng thẩm định ngày kết thúc đơn giản và kiểm tra nó mỗi ngày. Để tránh sử dụng mở rộng bằng thao tác ngày, hãy duy trì số giờ trong ứng dụng; tiếp tục tăng và ghi nó vào sổ đăng ký. Việc kiểm tra nên được thực hiện đối với cả ngày kết thúc đánh giá và số giờ không vượt quá 24 (có thể là 30 với một số khoản nợ).

0

Nghĩ Cũng Về:

Cứu DateTime của việc đóng cửa của ứng dụng, lần tới khi ăn trưa ứng dụng của bạn sẽ có thể phát hiện nếu cài đặt Datetime bị thay đổi hay không (ít nhất là họ không thể thay đổi nó trước một thứ trước thời điểm đóng cửa). Ví dụ:

Mở Application Bế mạc:

Saving The Time => 15:34 2014/03/31 (lưu)

khởi điểm tiếp theo của ứng dụng:

Kiểm tra Datime.Now> 15:34 31/03/2014. (Vì vậy họ không thể đi dưới đó ...)

thêm:

Hãy thử bằng cách nào đó để tích hợp các thiết lập datetime của hệ thống vào sử dụng ứng dụng của bạn: Tạo Hoá đơn, Vé, biên nhận ... bất cứ điều gì !

0

Bạn có thể sử dụng dự án miễn phí Libprot. Trang web là https://github.com/libprot/trunk.

Ý tưởng là nó phải được đơn giản và dễ sử dụng. Bạn có thể chi tiêu $$$ để bảo vệ nhưng có thể bị tấn công trong một tuần. Nếu ai đó muốn làm kỹ thuật đảo ngược mã của bạn thì không ai có thể ngăn chặn nó. Lời khuyên của tôi để sử dụng các phương thức đơn giản hoạt động.

Viết một chuỗi như:

Công ty X | 2014/10/02 | 1.12.2015

nơi 2014/10/02 là ngày hiện tại và nếu thời gian hệ thống là ít hơn đồng hồ một người nào đó đã thay đổi hệ thống => chúng ta nên không chạy

1.12.2015 - cho đến khi thời gian những gì mà quan trọng là hợp lệ

và tên của công ty đã mua/tải về nó.

chuỗi đó phải được làm rối loạn bằng thuật toán không đối xứng với khóa riêng/khóa công khai và được mã hóa thành chuỗi mà bạn có thể gửi qua e-mail chẳng hạn.

bạn cũng có thể muốn có một số dịch vụ web để xác thực. khi kết nối internet được bật, bạn có thể xác thực khóa, nếu nó bị tấn công và có sẵn cho công chúng trên internet, bạn có thể cấm nó. Hoặc nếu ai đó sẽ viết trình tạo khóa, bạn có thể xác thực rằng khóa đó là có thật.

bạn có thể thêm một số tập lệnh PHP/java vào trang web của mình để tự động gửi mã dùng thử.

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