Chiến lược / công cụ obfuscation .NET [đã đóng]


160

Sản phẩm của tôi có một số thành phần: ASP.NET, Windows Forms App và Windows Service. 95% hoặc hơn mã được viết bằng VB.NET.

Vì lý do Sở hữu trí tuệ, tôi cần làm xáo trộn mã và cho đến bây giờ tôi đã sử dụng một phiên bản của dotfuscator hiện đã hơn 5 tuổi. Tôi nghĩ rằng đã đến lúc chuyển sang một công cụ thế hệ mới. Những gì tôi đang tìm kiếm là một danh sách các yêu cầu mà tôi nên xem xét khi tìm kiếm một obfuscator mới.

Những gì tôi biết tôi nên tìm kiếm cho đến nay:

  • Tuần tự hóa / Khử nối tiếp . Trong giải pháp hiện tại của tôi, tôi chỉ đơn giản nói với công cụ không làm xáo trộn bất kỳ thành viên dữ liệu lớp nào vì nỗi đau của việc không thể tải dữ liệu đã được tuần tự hóa trước đó đơn giản là quá lớn.
  • Tích hợp với quá trình xây dựng
  • Làm việc với ASP.NET . Trước đây, tôi đã phát hiện ra vấn đề này do thay đổi tên dll (bạn thường có một trang trên mỗi trang) - điều mà không phải tất cả các công cụ đều xử lý tốt.

Một số bản sao: google.com/ Kẻ
John Rasch


Xem Agile.net .NET Obfuscator để biết giải pháp thay thế cho việc làm xáo trộn mã của bạn. Đặc biệt kiểm tra tính năng ảo hóa mã của nó.
sutton bernard

Xem danh sách tốt các obfuscators từ ArmDot đến Xenocode tại đây trên SO: stackoverflow.com/a/60054/1480104
Artem Razin

Câu trả lời:


43

Quay lại với .Net 1.1 obfuscation là điều cần thiết: dịch ngược mã rất dễ dàng và bạn có thể chuyển từ lắp ráp, sang IL, sang mã C # và biên dịch lại với rất ít nỗ lực.

Bây giờ với .Net 3.5 Tôi không chắc chắn. Hãy thử dịch ngược một cụm 3,5; những gì bạn nhận được là một chặng đường dài từ biên dịch.

Thêm các tối ưu hóa từ 3.5 (tốt hơn nhiều so với 1.1) và cách các loại ẩn danh, đại biểu, v.v được xử lý bằng phản xạ (chúng là một cơn ác mộng để biên dịch lại). Thêm các biểu thức lambda, trình biên dịch 'ma thuật' như Linq-cú pháp và các varhàm C # 2 như yield(kết quả là các lớp mới có tên không thể đọc được). Mã dịch ngược của bạn kết thúc một chặng đường dài từ khả năng biên dịch.

Một đội ngũ chuyên nghiệp với nhiều thời gian vẫn có thể đảo ngược kỹ sư trở lại, nhưng điều tương tự cũng đúng với bất kỳ mã bị xáo trộn nào. Mã họ nhận được từ đó sẽ không thể nhận ra và rất có thể sẽ rất có lỗi.

Tôi muốn giới thiệu khóa ký hợp đồng của bạn (có nghĩa là nếu tin tặc có thể biên dịch lại một tập hợp chúng phải biên dịch lại tất cả) nhưng tôi không nghĩ rằng obfuscation đáng giá như vậy.


127
Hoàn toàn không đồng ý. Ký không thể thay thế obfuscation. Việc ký là nhằm mục đích hack mã của bạn. Nhưng nếu bạn che giấu ý tưởng của mình, thuật toán, vv thì obfuscation là cách duy nhất.
Shrike

24
Tôi không nghĩ rằng việc ký có thể thay thế obfuscation, nó chỉ khiến việc hack khó khăn hơn nhiều. Obfuscation không thể che giấu ý tưởng của bạn - nếu họ muốn sao chép rằng họ sẽ làm điều đó, và obfuscation thậm chí sẽ không làm cho nó khó khăn hơn nhiều. Đặc biệt là các thuật toán là tất cả các toán tử obfuscation không ảnh hưởng nhiều đến chúng - chúng thường là một trong những thứ dễ nhất để trích xuất.
Keith

6
Obfuscation có thể không có giá trị nếu bạn nói về một nhóm có nhiều tài nguyên chỉ dùng một lần, nhưng obfuscation là tuyệt vời để bảo vệ chống lại nhà phát triển "trung bình" không muốn gì hơn là sử dụng Reflector để mở hội đồng của bạn và lưu mã nguồn như một dự án và thực hiện điều chỉnh. Obfuscation có chỗ của nó và loại trừ nó hoàn toàn là thái độ sai lầm cần có. Đó là một lớp phòng thủ.
Dao cạo

5
Khi bạn dịch ngược, nguồn ở trạng thái lộn xộn nhưng theo logic thì nó vẫn đi theo cùng một đường dẫn. Không có trình biên dịch 'ma thuật' voodoo. Tôi biết bởi vì tôi đã mất một kho lưu trữ gần đây và sử dụng phản xạ để khôi phục mã nguồn. Obfuscation chỉ là một nỗi đau để "duy trì", nếu đó không phải là một phần của quá trình xây dựng của bạn. Nó không thêm chi phí, nhưng tất cả chúng ta có đang viết các ứng dụng chuyên sâu tính toán không? Không. Đó là lớp phòng thủ yếu cho kẻ tấn công yếu.
Dao cạo

8
Thật là một câu trả lời khủng khiếp. Bạn đã thực sự cố gắng dịch ngược thời gian gần đây? Trình dịch ngược đã trở nên tốt hơn , không tệ hơn. Reflector cung cấp gần chất lượng nguồn gốc, tất nhiên bình luận sans.
BlueRaja - Daniel Pflughoeft

50

Chúng tôi đã thử một số obfuscators. Không ai trong số họ làm việc trên một ứng dụng khách / máy chủ lớn sử dụng điều khiển từ xa. Vấn đề là máy khách và máy chủ chia sẻ một số dll và chúng tôi không tìm thấy bất kỳ obfuscator nào có thể xử lý nó.

Chúng tôi đã thử DotFuscator Pro, SmartAssugging, XenoCode, Salamander và một số ứng dụng thời gian nhỏ có tên thoát khỏi tôi.

Thành thật mà nói, tôi tin rằng obfuscation là một hack lớn.

Ngay cả những vấn đề mà nó giải quyết không hoàn toàn là một vấn đề thực sự. Điều duy nhất bạn thực sự cần bảo vệ là chuỗi kết nối, mã kích hoạt, những thứ nhạy cảm bảo mật như thế. Điều vô lý này là một công ty khác sẽ thiết kế ngược lại toàn bộ cơ sở mã của bạn và tạo ra một sản phẩm cạnh tranh từ đó là một điều gì đó từ cơn ác mộng của người quản lý hoang tưởng, không phải là thực tế.


14
Bravo Judah! Cách duy nhất để đi trước là phát triển mã mới, tốt hơn, không bám vào mã bạn đã viết. Cuối cùng, bạn đầu tư thời gian, công sức và thậm chí có thể kiếm tiền vào những thứ không liên quan. Obfuscation không đáng
David Rutten

180
Đó là lý do tại sao tôi không thích hệ thống danh tiếng này, bạn có 19 phiếu và bạn chưa cung cấp một cái gạt. Người dùng không hỏi ý kiến ​​của bạn về obfuscation, anh ta muốn biết thêm về các kỹ thuật obfucation.
dấu gạch chéo17

32
Tôi đã cung cấp thông tin về kinh nghiệm của tôi bằng cách sử dụng một số obfuscators hiện có. Và ý kiến ​​của tôi bắt nguồn từ kinh nghiệm đó.
Judah Gabriel Himango

6
+1 cho "Thành thật mà nói, tôi tin rằng obfuscation là một vụ hack lớn." Bạn không thể đặt nó tốt hơn thế này.
Andrei Rînea

15
Một nhu cầu rất hợp lệ để bảo vệ mã của bạn là bán các ứng dụng chuyên dụng đắt tiền cho các công ty sẽ sử dụng chúng trong nội bộ chỉ với một vài người dùng. Sự cám dỗ là đảo ngược mã để cho phép hack và sửa đổi nội bộ cho mục đích riêng của họ, tránh các hợp đồng bảo trì hoặc thậm chí hack các phiên bản dùng thử để lấy các tính năng mà họ cần.
Brady Moritz

44

Bây giờ tôi đang 'Đầu gối sâu', cố gắng tìm một giải pháp tốt. Đây là những ấn tượng của tôi cho đến nay.

Xenocode - Tôi có một giấy phép cũ cho Xenocode2005 mà tôi đã từng sử dụng để làm xáo trộn các cụm .net 2.0 của mình. Nó hoạt động tốt trên XP và là một giải pháp tốt. Dự án hiện tại của tôi là .net 3.5 và tôi đang dùng Vista, bộ phận hỗ trợ đã nói với tôi rằng hãy dùng thử nhưng phiên bản 2005 thậm chí không hoạt động trên Vista (gặp sự cố) vì vậy tôi và bây giờ tôi phải mua 'PostBuild2008' với mức giá quá cao $ 1900. Đây có thể là một công cụ tốt nhưng tôi sẽ không tìm hiểu. Quá đắt.

Reactor.Net - Đây là một mức giá hấp dẫn hơn nhiều và nó hoạt động tốt trên Độc lập thực thi của tôi. Mô-đun cấp phép cũng tốt và sẽ giúp tôi tiết kiệm rất nhiều nỗ lực. Thật không may, nó thiếu một tính năng quan trọng và đó là khả năng loại trừ các thứ khỏi obfuscation. Điều này làm cho không thể đạt được kết quả mà tôi cần (Hợp nhất nhiều cụm lại với nhau, làm xáo trộn một số, không làm cho người khác khó hiểu).

SmartAssugging - Tôi đã tải xuống Eval cho việc này và nó hoạt động hoàn hảo. Tôi đã có thể đạt được mọi thứ tôi muốn và Giao diện là lớp học đầu tiên. Điểm giá vẫn còn một chút nặng.

Dotfuscator Pro - Không thể tìm thấy giá trên trang web. Hiện đang thảo luận để có được một báo giá. Âm thanh đáng ngại.

Confuser - một dự án nguồn mở hoạt động khá tốt (để gây nhầm lẫn với ppl, đúng như tên gọi của nó).

Lưu ý: ConfuserEx được báo cáo là "bị hỏng" theo Vấn đề # 498 trên repo GitHub của họ.


8
bạn có thể gửi bao nhiêu dotfuscator trích dẫn?
Anthony Johnston

6
@Anthony Gần đây tôi đã mua một giấy phép vào đầu năm 2011. Báo giá là $ 2475 USD cho tối thiểu 1 máy xây dựng + 1 giấy phép nhà phát triển. Bao gồm 12 tháng nâng cấp và hỗ trợ.
Yoshi

2
Tôi đã không sử dụng .NET Reactor khi bài đăng này được thực hiện, nhưng bây giờ bạn có thể loại trừ các phần mã của bạn khỏi obfuscation bằng thuộc tính System.Reflection.Obfuscation. Ngoài ra còn có một số cài đặt cho phép bạn thực hiện những việc như loại trừ tất cả các phương thức hoặc tất cả các kiểu tuần tự hóa.
năm11

5
DotFuscator báo giá cho tôi $ 4999, đã giảm xuống còn $ 4500 vì giảm giá 10%. Đây là cho 1 giấy phép dev! Trong các cuộc thảo luận, nó đã giảm xuống còn 2500 đô la nhưng vẫn còn quá đắt.
Oliver

3
.NET Reactor hiện có Trình soạn thảo quy tắc loại trừ cho phép loại trừ các lớp, phương thức hoặc thuộc tính nhất định khỏi obfuscation. Ngoài ra, bạn có thể sử dụng hộp kiểm "Chỉ hợp nhất" để loại trừ một dll cụ thể khỏi obfuscation
avitenberg


18

Tôi đã được sử dụng thông minh. Về cơ bản, bạn chọn một dll và nó trả lại nó bị xáo trộn. Nó dường như hoạt động tốt và cho đến nay tôi không có vấn đề gì. Rất, rất dễ sử dụng.


6
Smartassugging khá vô dụng. Một cracker đặt ứng dụng của bạn vào DumbAssugging và tất cả "bảo vệ" được gỡ bỏ bằng cách nhấp chuột: woodmann.com/collaborative/tools/index.php/Dumbassugging
Elmue

2
Đến bây giờ, Google duyệt cờ an toàn trang web của Woodmann là không an toàn. Ngoài ra, trang web của Woodmann có toàn bộ bài viết về anh ta trước đây bị nhiễm phần mềm độc hại, vì vậy tôi không thực sự muốn điều hướng trang web của mình khi Google không tin tưởng điều đó.
Brian

10

Tôi đã thử hầu hết mọi obfuscator trên thị trường và SmartAssugging là tốt nhất theo quan điểm của tôi.


6
Smartassugging khá vô dụng. Một cracker đặt ứng dụng của bạn vào DumbAssugging và tất cả "bảo vệ" được gỡ bỏ bằng cách nhấp chuột: woodmann.com/collaborative/tools/index.php/Dumbassugging
Elmue

3
Đến bây giờ, Google duyệt cờ an toàn trang web của Woodmann là không an toàn. Ngoài ra, trang web của Woodmann có toàn bộ bài viết về anh ta trước đây bị nhiễm phần mềm độc hại, vì vậy tôi không thực sự muốn điều hướng trang web của mình khi Google không tin tưởng điều đó.
Brian

9

Tôi cũng đã sử dụng SmartAssugging. Tôi thấy rằng Ezrinz .Net Reactor tốt hơn cho tôi trên các ứng dụng .net. Nó che giấu, hỗ trợ Mono, hợp nhất các hội đồng và nó cũng có một mô-đun cấp phép rất đẹp để tạo phiên bản dùng thử hoặc liên kết giấy phép với một máy cụ thể (rất dễ thực hiện). Giá cả cũng rất cạnh tranh và khi tôi cần hỗ trợ thì nhanh đâu. Eziriz

Nói rõ hơn, tôi chỉ là một người chăm sóc thích sản phẩm và không liên quan đến công ty.


Tôi có một số bạn bè người thề bởi Net Reactor - mặc dù không phải trên trang web sản phẩm có một nhóm google hữu ích cho sản phẩm cũng như: groups.google.com/group/net-reactor-users?hl=en
Bittercoder

2
+1 cho Eziriz. Tôi đã có kết quả tuyệt vời với nó. Đó là thứ tốt nhất hiện tại, IMO.
Druid

4
Lò phản ứng .NET Sucks. Tôi đã thay đổi máy tính của mình, gửi email hai lần liên quan đến tệp giấy phép và không có câu trả lời. Bạn thấy giấy phép .NET Reactor bị khóa phần cứng.
OrElse

2
Điều đó là bình thường. Làm thế nào để bạn mong đợi rằng họ tin bạn? Làm thế nào để họ biết rằng bạn thực sự đã thay đổi máy tính của bạn và không cố chạy giấy phép của bạn bè trên máy tính của bạn? Đối với đó là một khóa phần cứng! Nếu nó có thể được sử dụng trên nhiều máy tính thì khóa phần cứng sẽ vô dụng.
Elmue

(PS. Chúng tôi đã chọn Lò phản ứng chủ yếu dựa trên phản hồi SO này.)
Chris

7

Câu trả lời ngắn gọn là bạn không thể.

Có nhiều công cụ khác nhau sẽ khiến người khác khó đọc mã của bạn hơn - một số trong đó đã được chỉ ra bởi các câu trả lời khác.

Tuy nhiên, tất cả những điều này làm cho nó khó đọc hơn - chúng làm tăng số lượng nỗ lực cần thiết, đó là tất cả. Thường thì điều này là đủ để ngăn chặn những người đọc bình thường, nhưng ai đó quyết tâm đào sâu vào mã của bạn sẽ luôn có thể làm như vậy.


51
if (nỗ lực. Yêu cầu> codeFromScratch.Costs) DoNoReverseEngineer ();
Nicolas Dorier

41
@NicolasDorier,Operator '>' cannot be applied to operands of type 'System.TimeSpan' and 'decimal'
Saeb Amini

21
@Saeb chắc chắn họ có thể, chuyển từ TimeSpan sang tiền (thập phân) là điều mà hầu hết các doanh nghiệp hướng tới.
hultqvist

6

Chúng tôi có một ứng dụng nhiều tầng với giao diện asp.net và winform cũng hỗ trợ từ xa. Tôi không gặp vấn đề gì với việc sử dụng bất kỳ trình obfuscator nào ngoại trừ loại mã hóa tạo ra trình tải có thể gây rắc rối theo tất cả các cách bất ngờ và theo quan điểm của tôi. Trên thực tế, lời khuyên của tôi sẽ phù hợp hơn với dòng chữ "Tránh mã hóa các bộ lọc obfuscators như bệnh dịch". :)

Theo kinh nghiệm của tôi, bất kỳ trình obfuscator nào cũng sẽ hoạt động tốt với bất kỳ khía cạnh nào của .net bao gồm asp.net và từ xa, bạn chỉ cần trở nên thân mật với các cài đặt và tìm hiểu xem bạn có thể đẩy nó đến đâu trong khu vực của mã của bạn. Và dành thời gian để thử kỹ thuật đảo ngược về những gì bạn nhận được và xem cách nó hoạt động với các cài đặt khác nhau.

Chúng tôi đã sử dụng nhiều năm qua trong các ứng dụng thương mại của mình và giải quyết trên chương trình obfuscator từ 9rays.net vì giá cả phù hợp, công việc và họ có hỗ trợ tốt mặc dù chúng tôi thực sự không cần hỗ trợ trong nhiều năm nữa nhưng phải trung thực Tôi không nghĩ rằng bạn thực sự sử dụng obfuscator nào, các vấn đề và đường cong học tập đều giống nhau nếu bạn muốn nó hoạt động đúng với điều khiển từ xa và asp.net.

Như những người khác đã đề cập, tất cả những gì bạn thực sự làm là tương đương với ổ khóa, tránh cho những người trung thực khác hoặc làm cho việc biên dịch lại ứng dụng trở nên khó khăn hơn.

Cấp phép thường là lĩnh vực quan trọng đối với hầu hết mọi người và bạn chắc chắn nên sử dụng một số loại hệ thống chứng chỉ được ký điện tử để cấp phép bằng mọi cách. Mất mát lớn nhất của bạn sẽ đến từ việc chia sẻ giấy phép thông thường nếu bạn không có một hệ thống thông minh, những người phá vỡ hệ thống cấp phép sẽ không bao giờ mua ở nơi đầu tiên.

Thật sự dễ dàng để đưa điều này đi quá xa và có tác động tiêu cực đến khách hàng và doanh nghiệp của bạn, hãy làm những gì đơn giản và hợp lý và sau đó đừng lo lắng về điều đó.


5

Trong hai ngày qua, tôi đã thử nghiệm với Dotfuscator Community Edition nâng cao (bản tải xuống miễn phí sau khi đăng ký CE cơ bản đi kèm với Visual Studio).

Tôi nghĩ lý do nhiều người không sử dụng obfuscation như một tùy chọn mặc định là vì đó là một rắc rối nghiêm trọng so với rủi ro. Trong các dự án thử nghiệm nhỏ hơn, tôi có thể có được mã bị xáo trộn đang chạy với rất nhiều nỗ lực. Triển khai một dự án đơn giản thông qua ClickOnce thật rắc rối, nhưng có thể đạt được sau khi ký thủ công các bảng kê khai với pháp sư. Vấn đề duy nhất là do lỗi, dấu vết ngăn xếp đã bị xáo trộn và CE không có bộ khử nhiễu hoặc bộ làm rõ được đóng gói.

Tôi đã cố gắng làm xáo trộn một dự án thực sự là VSTO dựa trên Excel, với tích hợp Trái đất ảo, rất nhiều cuộc gọi dịch vụ web và một thùng chứa IOC và rất nhiều phản ánh. Nó là điều không thể.

Nếu obfuscation thực sự là một yêu cầu quan trọng, bạn nên thiết kế ứng dụng của mình với ý nghĩ đó ngay từ đầu, kiểm tra các bản dựng obfuscated khi bạn tiến bộ. Mặt khác, nếu đó là một dự án khá phức tạp, bạn sẽ phải chịu một nỗi đau nghiêm trọng.


5

Crypto Obfuscator giải quyết tất cả các mối quan tâm và kịch bản của bạn. Nó:

  1. Tự động loại trừ các loại / thành viên khỏi obfuscation dựa trên các quy tắc. Các loại / lĩnh vực nối tiếp là một trong số họ.
  2. Nó có thể được tích hợp vào quá trình xây dựng bằng MSBUild.
  3. Hỗ trợ các dự án ASP.Net.

3
fyi @logicnp đã viết Crypto.
CAD bloke

Tiền điện tử dường như không còn được hỗ trợ.
Carl

Tôi đã thử một số, "Tiền điện tử" có vẻ rất tích cực và hữu ích, nhưng khi chạy DLL bị xáo trộn trong De4dot, tôi đã nhận được mã gốc ... Xin lỗi vì đã phá hỏng bữa tiệc ....
Dave Gahan

4

Gần đây tôi đã thử chuyển đầu ra của một obfuscator miễn phí sang một obfuscator miễn phí khác - cụ thể là Dotfuscator CE và obfuscator Babel mới trên CodePlex. Thêm chi tiết trên blog của tôi .

Đối với việc tuần tự hóa, tôi đã chuyển mã đó sang một DLL khác và đưa mã đó vào dự án. Tôi lập luận rằng không có bất kỳ bí mật nào trong đó không có trong XML, vì vậy nó không cần phải che giấu. Nếu có bất kỳ mã nghiêm trọng nào trong các lớp đó, sử dụng các lớp một phần trong cụm chính sẽ bao trùm nó.


-1, vì "yo dawg, tôi nghe nói bạn thích obfuscators nên tôi đã chạy obfuscator trên đầu ra của obfuscator ... muốn biết thêm? Lượt truy cập trang gimme". Nhưng tôi thấy đoạn thứ hai là một gợi ý rất hay.
Ngày

3

Bạn nên sử dụng bất cứ thứ gì rẻ nhất và được biết đến nhiều nhất cho nền tảng của bạn và gọi nó là một ngày. Việc xáo trộn các ngôn ngữ cấp cao là một vấn đề khó khăn, bởi vì các luồng opcode VM không gặp phải hai vấn đề lớn nhất mà các luồng opcode gốc làm: nhận dạng hàm / phương thức và đăng ký bí danh.

Những gì bạn nên biết về đảo ngược mã byte là nó đã là thông lệ tiêu chuẩn cho những người kiểm tra bảo mật để xem xét mã X86 thẳng và tìm lỗ hổng trong đó. Trong X86 thô, bạn thậm chí không thể tìm thấy các hàm hợp lệ, chứ đừng nói đến việc theo dõi một biến cục bộ trong suốt cuộc gọi hàm. Trong hầu như không có trường hợp nào, bộ đảo ngược mã gốc có quyền truy cập vào hàm và tên biến --- trừ khi họ đang xem xét mã Microsoft, mà MSFT cung cấp thông tin đó cho công chúng một cách hữu ích.

"Dotfuscation" hoạt động chủ yếu bằng cách xáo trộn chức năng và tên biến. Có lẽ tốt hơn để làm điều này hơn là xuất bản mã với thông tin ở mức gỡ lỗi, trong đó Reflector thực sự đang từ bỏ mã nguồn của bạn. Nhưng bất cứ điều gì bạn làm ngoài điều này có khả năng nhận được lợi nhuận giảm dần.



3

Bạn có thể sử dụng "Dotfuscator Community Edition" - theo mặc định trong Visual Studio 2008 Professional. Bạn có thể đọc về nó tại:

http://msdn.microsoft.com/en-us/l Library / ms227240% 28VS.80% 29.aspx
http://www.preeemive.com/dotfuscator.html

Phiên bản "Chuyên nghiệp" của sản phẩm có giá tiền nhưng tốt hơn.

Bạn có thực sự cần mã của bạn bị xáo trộn? Thông thường có rất ít sai với ứng dụng của bạn bị dịch ngược, trừ khi nó được sử dụng cho mục đích bảo mật. Nếu bạn lo lắng về việc mọi người "đánh cắp" mã của bạn, thì đừng; đại đa số mọi người nhìn vào mã của bạn sẽ được dùng cho mục đích học tập. Dù sao, không có chiến lược obfuscation hoàn toàn hiệu quả cho .NET - ai đó có đủ kỹ năng sẽ luôn có thể dịch ngược / thay đổi ứng dụng của bạn.


+1 cho điều này. Tôi đã thử mọi công cụ .NET obfuscator miễn phí ngoài kia và Dotfuscator là công cụ duy nhất thực sự che giấu một tỷ lệ đáng kể MSIL trong các ứng dụng ASP.NET của tôi.
thuyền

@Saille, bạn đã sử dụng Dotfuscator miễn phí - Phiên bản cộng đồng cho điều đó chưa? Tôi vừa có một cuộc trò chuyện bán hàng và họ nói phiên bản pro có giá 2000 EUR. :(
Houman

Dotfuscator là vô giá trị.
dùng626528

3

Tránh lò phản ứng. Nó hoàn toàn vô dụng (và vâng tôi đã trả tiền cho một giấy phép). Xenocode là thứ tốt nhất tôi gặp và mua giấy phép quá. Sự hỗ trợ rất tốt nhưng tôi không cần nó nhiều vì nó chỉ hoạt động. Tôi đã thử nghiệm tất cả các obfuscator mà tôi có thể tìm thấy và kết luận của tôi là xenocode là công cụ mạnh nhất và hoạt động tốt nhất (cũng có thể gửi quy trình .NET exe của bạn lên exe bản địa mà tôi không thấy ở bất kỳ nơi nào khác.).

Có hai sự khác biệt chính giữa lò phản ứng và xenocode. Điều đầu tiên là Xenocode thực sự hoạt động. Thứ hai là tốc độ thực hiện của các hội đồng của bạn không khác nhau. Với lò phản ứng, nó chậm hơn khoảng 6 triệu lần. Tôi cũng có ấn tượng rằng lò phản ứng là hoạt động của một người đàn ông.


.NET Reactor có rất nhiều tùy chọn. Một số trong số chúng liên quan đến bảo vệ thời gian chạy và sẽ làm chậm ứng dụng một chút, nhưng đây là giá cho bảo mật bổ sung mà bạn nhận được. Tuy nhiên, tôi thực sự nghi ngờ liệu sẽ có bất kỳ sự chậm lại nào nếu bạn chỉ sử dụng obfuscation .NET, mà không có bất kỳ tùy chọn nào khác
avitenberg


2

Tôi đã làm xáo trộn mã trong cùng một ứng dụng kể từ .Net 1, và đó là một vấn đề đau đầu từ góc độ bảo trì. Như bạn đã đề cập, vấn đề tuần tự hóa có thể tránh được, nhưng thực sự rất dễ mắc lỗi và làm xáo trộn thứ gì đó mà bạn không muốn bị xáo trộn. Thật dễ dàng để phá vỡ bản dựng hoặc thay đổi mẫu obfuscation và không thể mở các tệp cũ. Thêm vào đó, có thể khó tìm ra những gì đã sai và ở đâu.

Sự lựa chọn của chúng tôi là Xenocode và hôm nay tôi đã đưa ra lựa chọn đó, tôi không muốn làm xáo trộn mã, hoặc sử dụng Dotfuscator.



1

Chúng tôi đang sử dụng SmartAssugging trên máy khách windows của chúng tôi. Hoạt động tốt.

Có thêm một số vấn đề thêm. In tên lớp của bạn trong tệp nhật ký / ngoại lệ phải được loại bỏ. Và tất nhiên không thể tạo một lớp từ tên của nó. Vì vậy, đó là một ý tưởng tốt để xem xét khách hàng của bạn và xem những vấn đề bạn có thể gặp phải bằng cách che giấu.




1

Tôi đã phải sử dụng một obfuscation / bảo vệ tài nguyên trong rpoject mới nhất của tôi và thấy Crypto Obfuscator là một công cụ dễ sử dụng và đơn giản. Vấn đề tuần tự hóa chỉ là vấn đề cài đặt trong công cụ này.


@logicnp, đây là bài viết thứ hai của bạn trong chủ đề này chứng thực sản phẩm này. Vui lòng tiết lộ nếu bạn có mối quan hệ với nhà phát triển sản phẩm này.
H2ONaCl

Xin lỗi nhưng de4dot có thể khử nhiễu đó. Tôi khuyên bạn nên sử dụng ConfuserEx .
newbieguy

1

Có một phiên bản mã nguồn mở tốt gọi là Obfuscar. Có vẻ để làm việc tốt. Các loại, thuộc tính, trường, phương thức có thể được loại trừ. Bản gốc ở đây: https://code.google.com.vn/p/obfuscar/ , nhưng vì nó dường như không được cập nhật nữa


Tôi đã có một cái nhìn vào ngày hôm nay - ngày ghi chú của bình luận của tôi! - và nó hơi lộn xộn để đi. Tôi cũng đã mất phần tốt nhất của giờ khi cố gắng lấy nó để ký lại hội đồng bằng cách sử dụng tệp .pfx. Nó đã ném một lỗi không thể hiểu được, không có giấy tờ; dường như bạn chỉ có thể đăng nhập bằng cách sử dụng .snk.
SteveCinq

0

Bạn cũng có thể muốn xem xét các công nghệ bảo vệ mã mới như MetaforicViLabs và các công nghệ bảo vệ bản sao phần mềm mới như ByteShield . Tiết lộ: Tôi làm việc cho ByteShield.


0

Tôi cũng sử dụng thông minh. Tuy nhiên, tôi không biết làm thế nào nó hoạt động cho một ứng dụng web. Tuy nhiên, tôi muốn chỉ ra rằng nếu ứng dụng của bạn sử dụng bảo vệ loại phần mềm chia sẻ, hãy đảm bảo rằng ứng dụng đó không kiểm tra giấy phép với lợi nhuận boolean. quá dễ dàng để bẻ khóa byte. http://bloss.compdj.com/post/Binary-hack-a-NET-executable.aspx


0

SmartAssugging rất tuyệt, tôi đã được sử dụng trong hầu hết các dự án của mình


-1

Tôi đã thử phiên bản demo Eziriz .... Tôi thích nó. Nhưng không bao giờ mang phần mềm.


Làm thế nào đây có thể là một câu trả lời wiki từ cộng đồng?
ΦXocę 웃 Пepeúpa ツ

-1

Obfuscating không phải là một sự bảo vệ thực sự.

Nếu bạn có một tệp .NET exe thì có một giải pháp tốt hơn FAR .

Tôi sử dụng Themida và có thể nói rằng nó hoạt động rất tốt.

Hạn chế duy nhất của Themida là nó không thể bảo vệ các .NET .NET. (Nó cũng bảo vệ mã C ++ trong exe và DLL)

Themida rẻ hơn nhiều so với các obfuscators được đề cập ở đây và là tốt nhất trong bảo vệ chống vi phạm bản quyền trên thị trường. Nó tạo ra một máy ảo là những phần quan trọng trong mã của bạn đang chạy và chạy một số luồng phát hiện các thao tác hoặc điểm dừng được thiết lập bởi một cracker. Nó chuyển đổi .NET exe thành một cái gì đó mà Reflector thậm chí không nhận ra là một cụm .NET nữa.

Vui lòng đọc mô tả chi tiết trên trang web của họ: http://www.oreans.com/themida_features.php


-2

Tôi đã thử một sản phẩm tên là Rummage và nó hoạt động rất tốt trong việc cung cấp cho bạn một số quyền kiểm soát ... Mặc dù nó thiếu nhiều thứ mà Eziriz cung cấp nhưng giá cho Rummage là quá tốt ...

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.