Bạn đã bao giờ làm xáo trộn mã của mình trước đây chưa? Có lý do chính đáng nào để làm như vậy không?Tại sao bạn làm xáo trộn mã của bạn?
Trả lời
Tôi đã làm xáo trộn JavaScript của mình. Nó làm cho nó nhỏ hơn, do đó giảm thời gian tải xuống. Ngoài ra, kể từ khi mã được giao cho khách hàng, công ty của tôi không muốn họ có thể đọc được nó.
Và bạn không nói với ông chủ của bạn, rằng obfuscation là đảo ngược? Nếu bạn có Javascript trong Trình duyệt, mọi người có quyền truy cập vào trang đều có thể nhận được tập lệnh. Obfuscation chỉ là một trở ngại nhỏ. – Mnementh
Tôi nói với họ, mua họ nhận được những gì họ muốn. Mã không đáng để ăn cắp. – geowa4
20% rào cản này có thể là đủ cho 80% số người đánh cắp. – lImbus
Có, để làm cho kỹ sư đảo ngược khó hơn.
Có. Khó hơn, nhưng không phải là không thể. :-) –
Có tất cả chúng ta đều biết không thể làm điều gì đó bất khả chiến bại. Cũng giống như nó không thể cho một tòa nhà được an toàn 100%, chúng tôi vẫn cố gắng hết mức có thể. – Unknown
@Unkown - +1 cho câu trả lời ngắn và điểm của bạn –
Điều này thường được thực hiện khi bạn cần để cung cấp thứ gì đó trong nguồn (thường là do môi trường được tích hợp sẵn, chẳng hạn như hệ thống không có thư viện được chia sẻ, đặc biệt nếu bạn là người bán không có hệ thống chính xác xây dựng cho), nhưng bạn không muốn người mà bạn cho nó để có thể sửa đổi hoặc mở rộng nó đáng kể (hoặc ở tất cả).
Điều này thường được sử dụng phổ biến hơn ngày hôm nay. Nó cũng dẫn đến cuộc thi C không tồn tại.
Sử dụng pháp lý (mặc dù không được cho là "hợp pháp") có thể là để phát hành "nguồn" cho một ứng dụng bạn đang liên kết với mã GPL theo kiểu thời trang khó hiểu. Đó là nguồn, nó có thể được sửa đổi, nó chỉ là rất khó khăn. Đó sẽ là một phiên bản cực đoan của việc phát hành nó mà không có bình luận, hoặc phát hành với tất cả khoảng trống được cắt tỉa, hoặc (và điều này sẽ thúc đẩy cơ sở pháp lý) giải phóng nguồn lắp ráp được tạo ra từ C (và có thể điều chỉnh bằng tay để bạn có thể nói nó không chỉ cần mã trung gian).
tăng cường. Nếu đó là sự thật, vậy thì điều gì khiến bạn không thể giải phóng nó như một hội nghị? –
Nguồn bị xáo trộn không tuân thủ các yêu cầu GPL. GPL-2 và GPL-3 đều nói "Mã nguồn của một tác phẩm có nghĩa là hình thức ưu tiên của tác phẩm để thực hiện các sửa đổi cho nó". Rõ ràng, đó không phải là phiên bản obfuscated. Và chắc chắn không phải là đầu ra lắp ráp. – derobert
Tôi đã không kiểm tra nếu có ngôn ngữ như vậy; chắc chắn một bản phát hành như vậy vi phạm ý định của GPL. Tôi nghi ngờ có diện tích màu xám pháp lý đáng kể ở đó (tước ý kiến? Không bao gồm tài liệu bên ngoài?) Nhưng obfuscation đúng dường như vi phạm điều khoản đó. – jesup
Tôi không tin rằng việc tạo kỹ thuật đảo ngược khó hơn là một lý do hợp lệ.
Lý do chính đáng để làm xáo trộn mã của bạn là giảm dấu chân được biên dịch. Ví dụ, các ứng dụng J2ME cần phải nhỏ nhất có thể. Nếu bạn chạy ứng dụng của bạn thông qua một obfuscator (và optimiser) thì bạn có thể giảm jar từ vài Mb đến vài trăm Kb.
Điểm khác, nằm bên trên, là hầu hết các bộ obfuscators cũng là trình tối ưu hóa có thể cải thiện hiệu suất của ứng dụng của bạn.
Lý do tôi không nghĩ rằng việc tạo ra kỹ thuật đảo ngược khó hơn là một lý do chính đáng khiến nó gây khó khăn không ngăn nó xảy ra. –
Đó được gọi là tối ưu hóa trình biên dịch. Thực tế là nó xảy ra để obfuscate là một tác dụng phụ, không phải là mục đích chính. – Unknown
Ổ khóa không ngăn chặn xe ô tô bị đánh cắp, nhưng chúng làm cho nó khó hơn. Ai đó đã thực sự muốn chiếc xe hơn là chỉ một Joe trung bình muốn có một chuyến đi vui vẻ. Obfuscation làm cho nó khó khăn hơn để ăn cắp mã. Một người nào đó thực sự muốn nó vẫn sẽ làm điều đó, nhưng nó sẽ ngăn chặn kịch bản-kiddie trung bình của bạn. (-1) – bsneeze
Tôi nhớ đã tạo một dịch vụ Windows cho ứng dụng Sao lưu trực tuyến được xây dựng trong .NET. Tôi có thể dễ dàng sử dụng Visual Studio hoặc các công cụ như .NET Reflector để xem các lớp và mã nguồn bên trong nó.
Tôi đã tạo một ứng dụng Visual Studio Test mới và thêm tham chiếu Windows Service vào nó. Nhấp đúp vào tham chiếu và tôi có thể thấy tất cả các lớp, không gian tên tất cả mọi thứ (không phải là mã nguồn mặc dù). Bất kỳ ai cũng có thể tìm ra hoạt động nội bộ của các mô-đun của bạn bằng cách nhìn vào tên lớp. Trong trường hợp của tôi, một lớp như vậy là FTPHandler cho biết rõ ràng nơi các bản sao lưu đang diễn ra.
Phản xạ .NET vượt xa điều đó bằng cách hiển thị mã thực tế. Nó thậm chí còn có một tùy chọn để xuất toàn bộ dự án để bạn có được một dự án VS với tất cả các lớp và mã nguồn tương tự như những gì nhà phát triển đã có.
Tôi nghĩ điều đó có ý nghĩa để làm xáo trộn, để làm cho nó khó hiểu hơn nếu không thể không ai có thể tháo rời. Ngoài ra tôi nghĩ rằng nó có ý nghĩa đối với các sản phẩm liên quan đến cơ sở khách hàng lớn, nơi bạn không muốn đối thủ cạnh tranh của bạn biết nhiều về sản phẩm của bạn.
Nếu tôi đang cung cấp ứng dụng Java Swing cho khách hàng, tôi luôn làm xáo trộn các tệp lớp trước khi phân phối.
Bạn không bao giờ có thể quá cẩn thận - Tôi đã từng chỉ ra một trình giải mã Java khá (tôi đã sử dụng JD Java Decompiler - http://www.djjavadecompiler.com/) tại các tệp lớp của mình và được thưởng một bản sao gần như hoàn hảo của mã gốc. Đó là khá đáng lo ngại, vì vậy tôi bắt đầu obfuscating mã sản xuất của tôi kể từ đó. Tôi sử dụng chính Klassmaster (http://www.zelix.com/klassmaster/)
Câu hỏi đặt ra là bạn có nghĩ rằng bạn sẽ mất kinh doanh do giải mã? Cướp biển sẽ sao chép nó bất kể việc làm xáo trộn. Khách hàng doanh nghiệp hợp pháp sẽ không quan tâm theo cách này hay cách khác. – PowerApp101
Chúng tôi có những người rất muốn đảo ngược kỹ sư mã của chúng tôi và đưa ra một sản phẩm cạnh tranh. -R – Huntrods
Để đảm bảo công việc cho cuộc sống, tất nhiên (đang đùa).
Điều này khá vui nhộn và giáo dục: How to Write Unmaintanable Code.
https://github.com/Droogans/unmaintainable-code –
Tôi tin rằng tất cả các hộp cáp TV sẽ có mã java bị xáo trộn. Điều này làm cho mọi việc khó khăn hơn để hack, và vì các hộp cáp sẽ ở trong nhà của bạn, chúng có thể bị hack về mặt lý thuyết.
Tôi không chắc chắn nó sẽ quan trọng như thế nào kể từ khi thẻ cáp vẫn kiểm soát mã hóa tín hiệu và được ủy quyền trực tiếp từ nguồn video thay vì hướng dẫn mã java hoặc ứng dụng java, nhưng chúng khá dành riêng cho khái niệm .
Nhân tiện, không dễ để theo dõi ngoại lệ được ném từ một ngăn xếp bị xáo trộn! Tôi thực sự ghi nhớ tại một thời điểm rằng aH có nghĩa là "Null Pointer Exception" cho một công trình cụ thể.
Điều này cũng không được sử dụng làm bảo mật thông qua sự tối tăm? Khi mã nguồn của bạn là công khai có sẵn (javascript vv) bạn có thể muốn ít nhất nó hơi khó hiểu những gì đang thực sự xảy ra ở phía khách hàng.
Bảo mật luôn có đầy đủ các thỏa hiệp. nhưng tôi nghĩ rằng an ninh bởi sự tối tăm là một trong những phương pháp hiệu quả nhất.
Nhìn vào một số mã tôi đã viết cho dự án trình điều khiển đĩa của mình khiến tôi đặt câu hỏi về ý nghĩa của việc bị làm xáo trộn.
((int8_t (*)(int32_t, void *)) hdd->_ctrl)(DISK_CMD_REQUEST, (void *) dr);
Hoặc đó chỉ là lập trình hệ thống trong C? Hay dòng chữ đó nên được viết khác đi? Câu hỏi ...
Đó không phải là xấu ... Họ có thể đã sử dụng một typedef trên loại chức năng mặc dù. Đối với những người khác, hdd -> _ ctrl là hàm mất (int32_t, void *) và trả về int8_t. Chúng tôi vượt qua nó các thông số thực tế DISK_CMD_REQUEST và dr. –
Nó được gọi là "Bảo mật công việc". Đây cũng là lý do để sử dụng Perl - không cần phải làm obfuscation như nhiệm vụ riêng biệt, do đó năng suất cao hơn, mà không mất an ninh công việc.
Gọi đó là "bảo mật thông qua khả năng quan sát" nếu bạn muốn.
Có và không, tôi chưa phân phối ứng dụng có công cụ dễ dàng giải mã được.
Tôi đã chạy một cái gì đó như obfuscators cho phiên dịch cũ Basic và UCSD Pascal, nhưng đó là vì một lý do khác, tối ưu hóa thời gian chạy.
- 1. Làm xáo trộn mã PHP
- 2. Giảm bớt/Làm xáo trộn Mã PHP
- 3. Có sai khi làm xáo trộn mã bị xáo trộn không?
- 4. Tại sao thuật toán xáo trộn này sai?
- 5. Xáo trộn một phần của một ArrayBuffer tại chỗ
- 6. bị xáo trộn Mã trong C
- 7. Làm xáo trộn hình ảnh
- 8. SPOJ: Xáo trộn thẻ
- 9. Tôi có nên lo lắng về việc làm xáo trộn mã .NET của mình không?
- 10. Làm xáo trộn email trong html
- 11. Xáo trộn thẻ trong C#
- 12. Xáo trộn phân tích thuật toán
- 13. xáo trộn chuỗi trong python
- 14. Xáo trộn nếu có vấn đề khác
- 15. Làm xáo trộn mã vạch trăn thông qua đột biến thông dịch
- 16. Tại sao Google khuyên bạn nên sao chép thư viện vào cây của bạn?
- 17. Làm thế nào để làm xáo trộn SQL Sprocs?
- 18. Ức chế mã Android với ProGuard ... làm sao người ta biết nó đã bị làm xáo trộn?
- 19. Tôi có thể làm xáo trộn mã SQL trong MySQL không?
- 20. Làm thế nào để xáo trộn một ArrayList
- 21. Tại sao bạn sử dụng umask?
- 22. Cách yêu cầu Proguard làm xáo trộn tên lớp
- 23. Tại sao bạn sẽ đúc các phần của bài tập?
- 24. Làm xáo trộn mật khẩu được lưu trữ trong bash
- 25. Tại sao bạn nên khóa luồng?
- 26. Tại sao bạn không thể bắt được ngoại lệ của Hợp đồng Mã?
- 27. Tại sao bạn không thể lấy địa chỉ của nullptr?
- 28. Sử dụng API bộ sưu tập để xáo trộn
- 29. xáo trộn và bảo vệ ràng buộc NRooks
- 30. Làm cách nào để tổ chức mã Javascript của bạn?
Tôi không thể không nhận thấy có hai cách để giải thích điều này: 1) bàn tay bị làm xáo trộn, và 2) máy bị làm xáo trộn. Như đã nói, câu hỏi là khuyến khích các câu trả lời dựa trên cả hai giả định. –