2008-09-20 43 views
14

Trong một thời gian chúng tôi đã sử dụng một công cụ gọi là CodeVeil. Tôi chỉ tự hỏi nếu có lựa chọn thay thế tốt hơn ra khỏi đó.Bạn sử dụng những gì để bảo vệ mã .NET khỏi kỹ thuật đảo ngược?

Chỉnh sửa: Trước khi có nhiều người hiểu nhầm câu hỏi, tôi biết rằng một cái bánh quy xác định có thể sẽ đánh bại bất kỳ công cụ nào trong số này. Tôi không quá lo lắng về họ mặc dù. Những công cụ này chỉ có nghĩa là để ngăn chặn "cracker bình thường", và để ngăn chặn mọi người ăn cắp IP của công ty chúng tôi. Nếu họ đủ tốt để vượt qua một công cụ tốt, họ có thể không quan tâm đến việc ăn cắp mã crappy của chúng tôi :-P

Trả lời

5

Tôi đã có rất nhiều thành công với Xenocode Postbuild. Công cụ có thể làm xáo trộn các assembly .NET, bảo vệ agaist Reflas disassembly, kết hợp các assembly .NET thành một file thực thi ("virtualization") và thậm chí biên dịch các ứng dụng .NET thành các file thực thi độc lập không cần .NET runtime.

-2

Tôi nghe nói Obfusticator là tốt; nó được sử dụng trên .Net Reflector.

3

Thành thật mà nói, bạn không thể làm gì ngoài việc làm xáo trộn một số công cụ như bạn đã đề cập. .NET chỉ là một bước trên các ngôn ngữ kịch bản lệnh, ngoại trừ các lệnh script là nhị phân và được gọi là IL. Đó là một chút đơn giản hóa, nhưng nó không quá xa thực tế. Bất kỳ chương trình tốt nào được viết bằng Reflection đều có thể được sử dụng để đảo ngược các ứng dụng .NET, hoặc nếu bạn có đủ kiến ​​thức, một trình soạn thảo hex tốt.

4

Tôi vẫn không thuyết phục bởi giá trị của những công cụ này. Không có giải pháp công nghệ nào ngăn cản kỹ thuật đảo ngược tốt hơn các bảo vệ pháp lý như giấy phép, nhãn hiệu, bằng sáng chế, bản quyền, v.v.

.NET thực sự là nguồn chuyển động trong suốt lớn. Tốt hơn hết là thay vào đó bạn phải đặt các điều khoản sử dụng xung quanh IP của mình như cấp phép và bản quyền.

+0

Và khi bạn xuất phần mềm của mình sang một quốc gia không tuân thủ các quy tắc tương tự như quốc gia của bạn? (Trung Quốc f.ex). Vui lòng không nêu rõ các sự thật hiển nhiên là không đúng sự thật. –

+0

Casper, vấn đề là không có công cụ nào trong số này sẽ bảo vệ phần mềm của bạn khỏi dân gian được xác định để đảo ngược kỹ sư/crack chúng. Đồng ý rằng có rất nhiều quốc gia không thực thi/tôn trọng bất kỳ luật IP nào - nhưng như tôi đã chỉ ra, những công cụ này cũng sẽ không bảo vệ bạn tốt hơn.Tốt nhất là họ kiểm tra thường xuyên. – stephbu

+0

Một lần nữa với sự thật: Một lắp ráp đúng xáo trộn sẽ là thứ tự của các cường độ khó hơn để đảo ngược kỹ sư hơn so với các cụm không bị xáo trộn. Đó là một thực tế mà bạn có thể tự kiểm tra. Nếu bạn cảm thấy bạn có một số hiểu biết về lý do tại sao đây không phải là trường hợp, xin vui lòng cung cấp tranh luận, thay vì nêu rõ sự thật. Tuy nhiên tôi chia sẻ tình cảm của bạn, rằng chúng ta không nên lãng phí thời gian và tiền bạc của chúng tôi với obfuscation, nhưng điều đó không thay đổi thực tế là làm như vậy S make làm cho nó khó hơn để đảo ngược kỹ sư. –

2

Có một số công cụ phổ biến để làm mờ, bao gồm Dotfuscation, có phiên bản "ánh sáng" đi kèm với Visual Studio 2005 và 2008. Họ có phiên bản Pro không chỉ đổi tên và đổi tên hàm. Tuy nhiên, mã vẫn có thể xem được, nó chỉ là tranh giành một chút để làm cho nó khó đọc và bẻ khóa luồng logic của phần mềm.

Kỹ thuật khác là sử dụng các chương trình khác sẽ mã hóa chương trình và giải mã nó khi chạy. Tuy nhiên, đây không phải là một giải pháp hoàn hảo. Trên thực tế, không có giải pháp hoàn hảo nào mà tôi nhận thức được sẽ ngăn cản một kỹ sư được xác định từ kỹ thuật đảo ngược phần mềm, nếu đủ thời gian và công sức được áp dụng cho nó.

Điều gì thực sự xảy ra là xác định mức độ bảo vệ sẽ làm cho nó khó khăn để can thiệp vào hacker thông thường, và làm cho kỹ sư đảo ngược trở nên đắt tiền như bạn có thể. trong cả hai thời gian hoặc tiền bạc, hoặc lý tưởng, cả hai. Chi phí kỹ thuật đảo ngược càng tốn kém, số lượng cá nhân sẽ sẵn sàng nỗ lực càng ít. Và đó là điểm lớn để obfuscation.

Một số người nghĩ rằng việc sử dụng trình biên dịch như trình biên dịch C++ để biên dịch thành mã gốc sẽ ngăn chặn kiểu kỹ thuật đảo ngược này, nhưng không. Một bộ tách rời tốt sẽ cho phép ngay cả các tệp thực thi nhị phân thuần túy được thiết kế ngược, do đó, một giải pháp hoàn hảo không tồn tại. Nếu máy tính có thể đọc và thực thi nó thì bộ nhớ máy tính đang sử dụng có thể được quét và theo dõi, bỏ qua mọi nỗ lực mã hóa, làm xáo trộn hoặc bất kỳ phương tiện nào khác để giữ mã của bạn khỏi tay của một kỹ sư được xác định.

4

Biên dịch các kết quả ứng dụng .NET của bạn trong các tập hợp đầu ra chứa rất nhiều thông tin meta. Thông tin này làm cho nó rất dễ dàng để tái tạo lại một cái gì đó rất gần với mã ban đầu. Một công cụ miễn phí tuyệt vời gọi là .NET Reflector có thể được sử dụng để làm chính xác điều đó và là một cách phổ biến để kiểm tra cách các thư viện lớp cơ sở hoạt động như thế nào. Tải xuống và sử dụng công cụ đó để xem các phiên bản C#/VB.NET được xây dựng lại của nội dung lắp ráp.

Nếu bạn là một tổ chức thương mại thì bạn không muốn mọi người thấy dễ dàng khi nhìn vào mã sản xuất tốn kém của bạn. Một phương pháp phổ biến là sử dụng Obfuscation để tranh giành các nội dung theo cách không thay đổi cách nó chạy nhưng làm cho nó khó hiểu. Obfuscation sử dụng các kỹ thuật như đổi tên biến và phương thức. Làm việc với mục đích của các phương thức 'a1', 'a2', 'a3' khó hơn nhiều so với 'GetName' gốc, 'UpdateInterestRate' và 'SetNewPassword'.

Vì vậy, việc sử dụng sự làm xáo trộn làm cho mọi người khó hiểu mã bạn đang làm và thuật toán sử dụng. Tuy nhiên nó không làm cho nó không thể. Trong cùng một cách mã C + + vẫn có thể được hiểu bởi một chuyên gia lắp ráp người sẵn sàng dành thời gian làm việc thông qua nhị phân của bạn, một chuyên gia MSIL cuối cùng có thể làm việc ra mã obfuscated của bạn. Nhưng nó làm tăng rào cản đến mức mà ít người sẽ cố gắng.

2

Xin lỗi bạn đã hồi sinh lại bài đăng cũ, nhưng tôi nghĩ lò phản ứng .NET của Eziriz hoạt động rất tốt.

Trong thực tế, tôi sử dụng nó bản thân mình cho tất cả các ứng dụng .net của tôi và dường như không có công cụ hiện có ra có thể dịch ngược một chương trình được bảo vệ bằng .net reactor. Bạn có thể tìm thêm chi tiết trên trang thông tin, http://www.eziriz.com/dotnet_reactor.htm. Kiểm tra nó ra với phiên bản dùng thử và .net phản xạ và bạn có thể xem cho chính mình.

+0

Giá cả chắc chắn có vẻ hấp dẫn hơn CodeVeil – ilitirit

+0

Yep trị giá mỗi xu, và đi kèm với người quản lý cấp phép cơ bản :) – GONeale

-1

Một số khác là Crypto Obfuscator - giá phải chăng hơn một số loại khác, và có nhiều phương pháp bảo vệ và bảo vệ khác nhau để cản trở các tin tặc nhân quả và không thường xuyên.

1

KHUYẾN CÁO: Tôi không làm việc cho RedGate các nhà sản xuất SmartAssembly. Tôi chỉ là một khách hàng rất hạnh phúc đã tìm thấy một giải pháp tốt, giá cả phải chăng.

Lựa chọn rất đơn giản, chọn SmartAssembly! Đừng lãng phí thời gian hoặc tiền bạc của bạn với các obfuscators khác trên thị trường. Tôi đã dành nhiều tiền hơn trong những giờ không thể lập hóa đơn để đánh giá các sản phẩm cạnh tranh. Tất cả chúng đều có sai sót nghiêm trọng và không thể gỡ lỗi. SmartAssembly là một ứng dụng được đánh bóng dễ sử dụng, có tài liệu, được đánh bóng với sự hỗ trợ tuyệt vời. Đăng câu hỏi trên diễn đàn của họ và mong đợi câu trả lời hợp lý nhanh chóng bởi các nhà phát triển thực tế.

SmartAssembly không chỉ là một người quan sát viên. Nó có một loạt các tính năng, bao gồm trình tạo báo cáo sự cố được tạo sẵn, có khả năng tùy chỉnh cao mà khách hàng của bạn có thể tự động gửi email cho bạn. Bạn có thể xem các báo cáo này trên máy chủ của riêng bạn hoặc trên các máy chủ cổng đỏ. Tôi không thể cho bạn biết mức độ hữu ích của việc này khi bạn thử nghiệm beta hoặc phát hành sản phẩm cho khách hàng. Nó cũng tạo ra các tệp trình gỡ lỗi để bạn có thể gỡ lỗi mọi vấn đề sau khi phát hành mà bạn có thể gặp phải với sản phẩm bị theo dõi của mình.

Nếu bạn đang phân phối một ứng dụng thương mại, bạn nên chi tiêu tiền cho một người quan sát phong nha. Một lựa chọn tồi ở đây có thể làm tổn hại tài sản trí tuệ của bạn hoặc tệ hơn dẫn bạn đến những ngày gỡ lỗi khủng khiếp. Chi phí này sẽ như thế nào so với chi phí của SmartAssembly?

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