2011-01-10 39 views
6

Tôi muốn lưu trữ mật khẩu trong ứng dụng để mã hóa ngày cài đặt và lưu trữ nó trong một số thư mục và có thể trong sổ đăng ký cho phiên bản ứng dụng 30 ngày của tôi. Tôi đã googling xung quanh rất nhiều và hầu hết mọi người đề nghị để lưu trữ ngày cài đặt được mã hóa. Tôi biết bất cứ điều gì tôi làm vẫn có thể bị bẻ khóa nhưng tôi muốn nó chỉ là hợp lý khó crack mà không cần gọi điện thoại nhà hoặc các công cụ như thế. Tôi có thể, ví dụ, có một chuỗi const lưu trữ một mật khẩu được mã hóa với một mật khẩu được lưu trữ trong một chuỗi const và như vậy. Điều này sẽ làm cho nó phức tạp hơn một chút. Nhưng vì sự xáo trộn chuỗi dường như là một nhiệm vụ phổ biến cho obfuscators, tôi muốn biết nếu có một cách tốt hơn để làm điều đó trong trường hợp bất kỳ bạn có bất kỳ ý tưởng làm thế nào obfuscators thường obfuscate chuỗi trong mã để tôi có thể lặp lại các thủ tục.Làm thế nào để chuỗi obfuscation trong obfuscators làm việc?

(Tôi sẽ không mua một bộ obfuscator. Tôi đang sử dụng phiên bản miễn phí của dotfuscator không làm xáo trộn dây và điều đó tốt, nhưng tôi sẽ không mua phiên bản trả tiền chỉ để làm xáo trộn một chuỗi đơn lẻ (trong trường hợp phiên bản trả tiền làm xáo trộn các chuỗi mà tôi không quan tâm).)

(Và tôi vẫn muốn dùng thử 30 ngày. Tôi đã đọc rất nhiều về các tùy chọn khác như tạo phiên bản ánh sáng miễn phí và các nội dung như Đó là phiên bản 30 ngày là tùy chọn tốt nhất trong trường hợp của tôi.)

+0

Bất cứ ai biết một lick về IL sẽ có thể phá vỡ bất kỳ bảo vệ như vậy trong vài phút chỉ bằng cách tiêm mã để viết ra các khóa mã hóa. Thành thật mà nói, dù bạn phức tạp thế nào đi chăng nữa, nó cũng không thành vấn đề. Chỉ cần đi với một cái gì đó người dùng trung bình sẽ không thể đánh bại. – cdhowie

+3

có bao nhiêu chữ in đậm và nghiêng "Tôi biết" của tôi cần phải như thế nào? – Juan

+0

Tôi chỉ đang chỉ ra rằng bạn không thực sự cần bất kỳ loại khóa mã hóa trùng lặp hoặc bất cứ điều gì như thế. Người dùng trung bình của bạn thậm chí không biết mã hóa thực sự là gì. Chỉ cần một cái gì đó đơn giản như để lại ngày trong plaintext và cũng viết ra một băm mật mã của ngày concatenated với một bí mật là đủ. – cdhowie

Trả lời

3

Tôi đồng ý với nhận xét trước đó nói rằng bất kỳ ai có kỹ năng kỹ thuật và một chút thời gian rảnh sẽ đánh bại bất kỳ chương trình mã hóa/phân loại sai nào mà bạn đặt lại với nhau nếu tất cả các phần chuyển động là cục bộ cho ứng dụng của bạn. Các công cụ Obfuscation (giống như SKU thương mại Dotfuscator) làm tất cả bao gồm "mã hóa chuỗi" nhưng biến đổi đặc biệt này được coi là yếu nhất của lô (so với kiểm soát dòng chảy hoặc quá trình đổi tên cảm ứng quá tải). Khi một chuỗi bị xâu chuỗi, chức năng "giải mã" được tiêm vào ngăn xếp trước khi văn bản được xuất hiện trong thời gian chạy - bất kỳ ai muốn dành thời gian để theo dõi bất kỳ quy trình nào bạn trải qua sẽ sớm có tất cả các thủ thuật được đặt trước mặt chúng (trừ khi một số thủ thuật ở xa). Vì vậy, bạn đã đề cập rằng bạn không cố gắng làm bất cứ điều gì bằng chứng đạn - chỉ cần làm chậm người và ngăn chặn hacks cơ hội - đó là trường hợp, sau đó loại kỹ thuật này là tốt - bạn sẽ ngăn chặn "hacker cơ hội" vui vẻ nhưng dễ dàng cất cánh (nhưng đó sẽ là mức độ của nó).

Cuối cùng, nếu ứng dụng của bạn, tình cờ, ứng dụng WP7 - thì phiên bản thương mại đầy đủ của Dotfuscator có sẵn miễn phí (và bao gồm mã hóa chuỗi, luồng điều khiển, v.v.) tại www.preemptive.com/ windowsphone7.html

+0

OP không hỏi về ý kiến ​​của sức mạnh obfuscator - ** anh hỏi tại sao họ làm việc. ** Tôi không chắc chắn tại sao đây là câu trả lời được chấp nhận, vì nó hoàn toàn không có chủ đề. Nó sẽ là một phụ lục tốt đẹp để nói * sau khi * trả lời, nhưng không phải là câu trả lời chính. –

4

Bạn cũng sẽ cần xem xét điều gì xảy ra khi người dùng xóa tất cả khóa đăng ký của mình và cài đặt lại ứng dụng của bạn để nhận thêm 30 ngày nữa. Tùy chọn "tốt nhất" là tạo các khóa đăng ký có ngày được tích hợp vào chúng. Nếu họ quyết định cài đặt lại ứng dụng của bạn, họ phải sử dụng khóa đăng ký hợp lệ và người duy nhất họ có là người đăng ký có ngày cũ hơn.

Sau đó, bạn phải chắc chắn rằng họ không giữ đăng ký cho các phím mới vv

Bất cứ điều gì hơn điều này có thể bị phá vỡ bởi dịch ngược và biên dịch lại ứng dụng của bạn.

xây dựng trong một ngày

tôi làm điều gì đó một chút phức tạp hơn với việc xác định các tính năng của máy tính người sử dụng. Tôi sẽ giải thích một cách đơn giản. Hãy ghi nhớ nếu họ thực sự muốn dịch ngược/biên dịch lại điều này sẽ không làm việc, nhưng tôi muốn nói nó rơi dưới hợp lý khó khăn.

  • Tạo khóa mã hóa cho sản phẩm của bạn.
  • Chuyển đổi nó thành một byte [] để nó không phải là một Chuỗi. (Nhưng cũng nên nhớ rằng "sự tối tăm không phải là bảo mật", nhưng chúng tôi không thực sự cố gắng để có một kết thúc tất cả là tất cả các chương trình cấp phép)
  • Mang tên người dùng đầy đủ và concat nó vào ngày hiện tại và concat rằng với số ngày giấy phép của họ là hợp lệ. Bạn có thể kết thúc với 01/10/2011 30 Andrew Finnell làm chuỗi cuối cùng.
  • Mã hóa chuỗi đó và chuyển đổi thành Base64.

Đây là khóa cấp phép mới của bạn. Bạn chỉ có thể cắt và dán chúng vào ứng dụng của bạn khi họ đăng ký.

Nếu khóa đó quá khó để quản lý, bạn sẽ làm được điều gì đó hơi khác một chút. Về cơ bản bạn làm những gì tôi nói, nhưng chỉ có 16 ký tự hex đầu tiên. Sau đó bạn lưu trữ với tên, ngày tháng và số ngày trong sổ đăng ký. Khi ứng dụng của bạn tải lên, bạn tạo ra một khóa mới với những giá trị được lưu trữ (tên, ngày tháng, ngày, vv) và so sánh 16 ký tự đầu tiên với những gì được lưu trữ trong sổ đăng ký.

Hãy ghi nhớ đây chỉ là một cách đơn giản để ngăn người dùng chia sẻ hoặc tận dụng phần mềm của bạn. Không ai trong số này là kỹ thuật cấp bảo mật cao và sẽ dẫn đến bánh quy giòn nếu họ thực sự muốn.

+0

Làm thế nào để bạn "xây dựng" chìa khóa một ngày cài đặt? Họ không thể luôn thay đổi nó sao? Tôi đã cho rằng nếu họ làm một cái gì đó giống như một hệ thống khôi phục họ sẽ có thể khởi động lại khoảng thời gian 30 ngày. Không có gì. – Juan

+0

Điều gì sẽ xảy ra nếu họ đặt lại đồng hồ hệ thống? – xbonez

+0

@xbonex Bạn có lưu trữ bất kỳ thông tin nào trên đĩa của họ khi họ chạy ứng dụng của bạn không? Nếu bạn làm như vậy, nó sẽ có một dấu thời gian mới hơn so với những gì máy tính đang đọc. Hoặc bạn có thể kiểm tra một số địa điểm phổ biến cho tem thời gian trong tương lai. Tôi nghĩ điều này có thể khiến bạn đau đầu hơn, điều đó rất đáng giá. Nhưng bạn sẽ cần phải tìm thấy sự pha trộn đúng đắn của việc giữ những người trung thực thành thật và điều đó cho bạn quyết định. –

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