Một tùy chọn có thể là đánh dấu tất cả các lớp tiếp xúc trong tệp DLL là "nội bộ" thay vì "công khai", sau đó sử dụng thuộc tính "InternalsVisibleTo" trong DLL của bạn để đặt tên rõ ràng các tệp DLL (và có thể là exes) được phép sử dụng các loại nội bộ của bạn. Điều này có thể yêu cầu tất cả những người tham gia phải được đặt tên mạnh, nhưng đó là một điều tốt để làm anyway.
Cuối cùng, không có cách nào tuyệt đối để ngăn chặn hacker xác định truy cập mã của bạn khi mã của bạn đang thực thi trên máy của hacker. Tất cả các mã có thể được thực thi bởi máy có thể được tháo rời và lắp ráp lại thành một thứ khác với các công cụ và kinh nghiệm đầy đủ tiên tiến.
Cách tốt nhất để tiếp cận bảo mật mã là đặt câu hỏi "Chúng tôi muốn làm cho ai đó sử dụng mã này mà không có giấy phép hoặc ủy quyền, và chúng tôi sẵn sàng chi bao nhiêu thời gian/tiền để đạt được điều đó ? " Nếu bạn không làm gì, rất dễ dàng cho một người nào đó sử dụng các tệp DLL của bạn trong một số dự án khác. Nếu bạn làm một vài điều đơn giản, bạn có thể làm cho nó bất tiện cho ai đó sử dụng các tệp DLL của bạn ở nơi khác. Nếu bạn đầu tư hàng tháng nỗ lực, bạn có thể làm cho người khác sử dụng sai mã của bạn rất khó khăn, nhưng bạn không bao giờ có thể làm điều đó là không thể.
Một kỹ thuật gần như an toàn tuyệt đối như tôi có thể tưởng tượng là: không thực thi mã của bạn trên máy của khách hàng (hoặc của hacker). Thay vào đó, hãy chạy một dịch vụ web và giữ mã của bạn trên máy chủ, nơi một hacker không thể vô tình kích hoạt trình gỡ lỗi trong quá trình của bạn hoặc tháo rời mã của bạn. Bảo mật mã của bạn sau đó được xác định bởi bảo mật vật lý tại vị trí máy chủ và bảo mật truy cập mạng đến các cổng của máy chủ. Các vectơ tấn công này có nhiều thứ tự độ lớn khó vượt qua hơn bất cứ thứ gì bạn có thể làm để mã thực thi trên máy của hacker. Đối với một số công ty phần mềm, việc di chuyển một phần ứng dụng của họ từ máy khách sang đám mây không phải là có khả năng mở rộng tốt hơn hoặc cập nhật dễ dàng hơn hoặc giảm chi phí, đó là về bảo mật mã và phòng chống vi phạm bản quyền.
Bạn có nghĩa là bảo vệ chúng chống lại việc dịch ngược hoặc đơn giản bảo vệ chúng chống lại việc sử dụng không? – NotMe
Hiện tại tôi đang tìm kiếm, nhưng thực sự tìm kiếm cả hai. Đã cập nhật câu hỏi cho phù hợp. – Matt