2010-02-22 10 views
15

Từ những gì tôi đã đọc, mã obfuscation không thực sự là khó để "crack", và nó sẽ chỉ trì hoãn không thể tránh khỏi. Trong trường hợp đó, mục đích của nó là gì?Là obfuscation mã .NET thực sự giá trị nó?

Nếu ai đó thực sự muốn lấy cắp nguồn của bạn thì họ có thể.

Nếu ai đó cần xem mã nguồn của bạn vì mục đích vô hại/hữu ích mà họ không thể.

Có thể bạn không nên lưu trữ bất kỳ thứ gì nhạy cảm trong mã, do đó không phải là vấn đề.

Nếu bạn không làm xáo trộn, bạn vẫn không cung cấp mã nguồn đầy đủ, vì vậy bạn có thể bán "giấy phép mã nguồn".

Điều thú vị là, mã duy nhất mà tôi từng thấy bị làm xáo trộn là mã khủng khiếp có lỗi trong đó. Lý do duy nhất tôi cần phải xem xét mã là để tìm ra vấn đề là gì và những gì tôi có thể làm để sửa chữa nó.

Ví dụ: tôi cần phải thay thế một số hình ảnh trong ASPDotNetStoreFront. Khi tìm kiếm vị trí của các thẻ, tôi thấy rằng chúng được chứa trong mã được biên dịch. CRAP. Vì vậy, tôi figured tôi sẽ dịch ngược mã, để tìm ra thẻ img để thay thế thông qua Regex. Tôi đã cố gắng để xem mã nguồn để xem những hình ảnh có thể có thể đến từ phương pháp biên dịch nhất định, và phản xạ không thể xử lý nó, tôi đoán vì obfuscation. Tôi không thực sự có thời gian để tìm kiếm xung quanh cho de-comilers/de-obfuscators.

+0

Câu hỏi của bạn về việc làm xáo trộn hoặc thay thế mã trong một hội đồng bị xáo trộn? –

+1

Nhiều bản sao: http://stackoverflow.com/questions/12075/should-i-be-worried-about-obfuscating-my-net-code, http://stackoverflow.com/questions/551892/how-effective- là-obfuscation, http://stackoverflow.com/questions/71195/should-you-obfuscate-a-commercial-net-application –

+0

Câu hỏi của tôi là nhiều hơn về sự hiểu biết TẠI SAO các công ty làm xáo trộn mã của họ. Thực sự, tôi thấy nó là một nỗi đau khủng khiếp. Là một nhà phát triển, tôi thấy hữu ích khi xem mã nguồn của nhà cung cấp, nhưng như tôi đã nói, mã thường có nhiều vấn đề nhất, đã bị làm xáo trộn. –

Trả lời

17

Tôi nghĩ nó đáng giá. Chi phí cho bạn hầu như không có gì, và bạn làm cho cuộc sống của hacker trở nên khó khăn hơn nhiều. Ngay cả khi họ crack nó, bạn có sự hài lòng của biết bạn lãng phí bất cứ nơi nào từ vài giờ đến vài tuần trong cuộc sống của họ. Chỉ vì khóa không hoàn hảo không có nghĩa là bạn không khóa cửa.

+2

Điều gì về việc biết rằng khách hàng nghèo của bạn đang đập đầu của họ trên tường mỗi khi họ tìm thấy một lỗi, giả sử bạn bán phần mềm có liên quan đến hội nhập hoặc các thành phần khác? –

+10

tốt, sau đó họ có thể liên lạc với tôi. Đây không phải là nguồn mở (mà tôi cũng viết và không obfuscate), có một thủ tục cũng được xác định để có được nó nhìn vào. – Steve

2

Tôi không biết liệu đó có phải là 'đáng giá' để làm xáo trộn, nhưng tôi có thể nói rằng có những lựa chọn thay thế cho việc làm xáo trộn an toàn hơn.

Ví dụ XHEO cung cấp công cụ (CodeVeil) để thực sự mã hóa các hội đồng .NET, thay vì chỉ làm xáo trộn chúng.

+0

'tùy chọn tăng cường, nhưng hey, nếu bạn quan tâm đến obfuscation rằng nhiều, bạn sẽ bao ra bucks, amirite? – Randolpho

11

Chỉ khi dự án của bạn hoạt động lâu dài và sẽ mất nhiều thời gian để thực hiện thì đó là điều đáng giá. Điều này tất nhiên là một ý kiến ​​ở đây, nhưng tôi đã không tìm thấy một DLL. Net obfuscated nhưng tôi không thể tìm ra những gì đang xảy ra bằng cách sử dụng chỉ Reflector.

Đó là số ngăn chặn, không có gì khác. Nếu chi phí của một người nào đó đảo ngược kỹ thuật, mã của bạn lớn hơn chi phí tự thực hiện, đó là trường hợp hợp pháp duy nhất tôi thấy, nhưng nếu ai đó muốn xem mã của bạn bị đánh dấu như thế nào, thì việc ngăn chặn mã đó không tốt lắm.

Một trường hợp phổ biến mà tôi thấy rất nhiều là cách bạn tạo và/hoặc giải mã khóa cấp phép. Bất cứ ai có động lực để tìm ra điều này và đào trong phản xạ cho bạn muối/giải mã phương pháp sẽ không được dừng lại bởi obfuscation, tôi dám nói nó sẽ không thực sự làm chậm chúng xuống nhiều.

+1

Điều gì sẽ làm chậm chúng xuống? Tôi đang obfuscating mã cho chính xác mục đích đó - đối phó với cấp phép. –

3

Theo ý kiến ​​của tôi, không. Tôi đã nhìn thấy kẻ hack chương trình được viết bằng các ngôn ngữ khác nhau. Với các công cụ chuyên nghiệp như IDA (hoạt động cho mã không được quản lý), không có gì an toàn 100%. Các hội đồng bị xáo trộn thậm chí còn dễ hack hơn vì siêu dữ liệu vẫn còn hiện diện.

1

Đối với ứng dụng .Net, KHÔNG làm xáo trộn số tiền để tạo nguồn mở sản phẩm của bạn, vì dễ dàng xem và phân tích mã nguồn bằng Reflector. Bạn có thể có thỏa thuận cấp phép, nhưng chỉ một số ít công ty có thời gian và tiền bạc để bảo vệ thỏa thuận cấp phép tại tòa án. Đối với các công ty như vậy, obfuscation là lựa chọn tốt nhất. Chắc chắn, bạn cần phải kiểm tra các hội đồng obfuscated, nhưng sau đó, bạn đã thử nghiệm sản phẩm của bạn, vậy tại sao không kiểm tra các hội đồng obfuscated cuối cùng.

Nó cũng phụ thuộc vào mức độ hữu ích của bộ đệm.Hãy xem xét Crypto Obfuscator của chúng tôi - nó hỗ trợ tích hợp dễ dàng với Visual Studio, do đó bạn luôn chạy các tập hợp bị xáo trộn. Nó cũng có nhiều loại trừ tự động, do đó nó sẽ không làm xáo trộn các lớp/thành viên, điều này sẽ gây ra sự lắp ráp bị xáo trộn để chạy không chính xác. Nó cũng sẽ hiển thị cảnh báo (bao gồm cả số dòng) cho mã mà có thể làm cho cụm lắp ráp bị lỗi hoạt động không chính xác. Đây là một tiết kiệm thời gian rất lớn.

2

Tất nhiên không có gì được bảo vệ 100%. Nhưng không obfuscating vì lý do đó là như không đóng cửa nhà của bạn bởi vì "bất kỳ thieve xác định có thể mở nó anyway". Bạn vẫn khóa cửa !!

Tôi nghĩ rằng mối đe dọa chính là một số dude decompiling ứng dụng của bạn bằng cách sử dụng ildasm, phát hiện câu SQL, giả mạo với họ, và sau đó biên dịch lại. Bằng cách này, anh/cô ấy có thể loại bỏ các hạn chế và nhận danh sách khách hàng đầy đủ, làm ví dụ hoặc chỉ gây hại đồng đều.

Bạn, là nhà cung cấp ứng dụng, sẽ được tổ chức chịu trách nhiệm ở nơi đầu tiên ...

dudes BitHelmet của giải thích nó khá tốt trong http://www.bithelmet.com/Overview.html.

Tôi đã làm việc trong một công ty thẻ tín dụng cỡ trung bình cách đây vài năm. Có ba vụ trộm (tiền thời gian lớn) liên quan đến nhân viên mà chúng tôi kwnew, và tất cả chúng được thực hiện không phải bởi một hacker tầm cỡ thế giới Nga hay Trung Quốc, nhưng bởi nhân viên kwnow-just-enough-of-lập trình mà chỉ làm một chút xoắn cho phần mềm thu ngân.

Tôi là một học sinh cơ sở rồi :), ông chủ của tôi phải đối phó với nó. Tôi luôn tự hỏi có bao nhiêu vụ trộm không bao giờ được phát hiện ;-). Tôi có thể làm điều đó, nhưng chưa bao giờ!

Sự thật là bạn phải suy nghĩ ở một mức độ bảo vệ nào đó và bạn phải cân nhắc đến kẻ tấn công trong nhà. Và sẽ làm cho cuộc sống khó khăn hơn đối với những người xác định ngược lại.