2010-05-24 24 views
8

hiện tại tôi đang phát triển một ứng dụng C# .Net, trong đó tôi đang sử dụng một điều khiển tùy chỉnh mà tôi đã phát triển một thời gian trước đây. Tôi cần các dll được vận chuyển trong ứng dụng mới - nhưng dễ hiểu là tôi không muốn file dll được sử dụng cho các ứng dụng nước ngoài.Làm thế nào để ngăn không cho dll được tải trong các ứng dụng khác

Đó là lý do tại sao tôi cần dll tùy chỉnh được biên dịch bằng cách nào đó trong ứng dụng mới. Hiện tại dll được sao chép vào thư mục ứng dụng.

Bất kỳ ý tưởng nào? Nên được tầm thường imho.

Cảm ơn & regards, Daniel

+0

Nếu bạn đặt mã của mình lên máy tính của người khác, họ có thể chạy nó. Bất cứ điều gì bạn làm để ngăn chặn đó là tốt nhất một speedbump. –

Trả lời

3

Nhìn vào IL Merge. Tiện ích này cho phép bạn kết hợp nhiều assembly .NET thành một assembly duy nhất.

Tôi xin trích dẫn:

ILMerge là một tiện ích có thể được sử dụng để kết hợp nhiều cụm NET vào một hội duy nhất. ILMerge có một tập hợp các assembly đầu vào và kết hợp chúng thành một assembly đích. Việc lắp ráp đầu tiên trong danh sách các hội đồng đầu vào là lắp ráp chính. Khi assembly chính là một file thực thi, thì assembly đích được tạo ra như một file thực thi với cùng điểm vào như assembly chính. Ngoài ra, nếu hội đồng chính có một tên mạnh, và một tập tin .snk được cung cấp, thì hội đồng mục tiêu được ký lại với khóa được chỉ định để nó cũng có một tên mạnh.

Điều cần lưu ý là mọi người vẫn có thể sử dụng hội đồng được tạo. Nhìn vào obfuscation và cấp giấy phép để giữ cho dễ bay, nhưng hãy nhớ rằng nếu ai đó muốn mã của bạn đủ nặng họ sẽ nhận được nó.

Những điều nhất định làm cho việc này trở nên khó khăn hơn nhiều, chẳng hạn như có Dịch vụ web, nhưng ngay cả khi đây không phải là bằng chứng đầy đủ.

1

Nếu bạn có thể thay đổi các DLL với sự kiểm soát độc quyền, bạn có thể ...

  1. Đánh dấu tất cả mọi thứ trong DLL kiểm soát nội bộ.
  2. Biên dịch hội đồng của bạn để DLL gọi của bạn có quyền truy cập vào các thành viên nội bộ của DLL điều khiển của bạn.
  3. Ký DLL gọi.

Xem chi tiết MSDN page để biết chi tiết về cách thực hiện việc này.

0

Có một số lỗ hổng khác nhau mà bạn có thể thực hiện để khiến người dùng khó sử dụng hơn. Tất cả chúng đều có thể bị phá vỡ, nhưng đó là cuộc sống.

Bạn có thể nhìn vào phản ứng này vào đây để không cho phép một lắp ráp chưa biết để tham khảo lắp ráp của bạn: Secure C# Assemblies from unauthorized Callers

Bạn nên xáo trộn lắp ráp của bạn nếu bạn đang thực sự lo lắng về nó. Điều này sẽ làm cho nó khó hơn để dịch ngược.Một cái gì đó giống như Babel hoạt động tuyệt vời: http://babelobfuscator.blogspot.com/

Bạn cũng có thể sử dụng ILMerge để lưu trữ hội đồng trong một hội đồng khác. Tuy nhiên, hội đồng này sẽ được trích xuất và tiếp xúc trong thời gian chạy. Bạn có thể làm điều gì đó dọc theo các dòng này để trích xuất một tài nguyên nhị phân từ một assembly và tạo một assembly tạm thời được sử dụng trong thời gian chạy. Nếu ai đó thực sự có động lực, họ cũng có thể tìm thấy hội đồng tạm thời ...

Câu hỏi thực sự là bạn muốn đi bao xa? Tại một số điểm nó sẽ không có giá trị nó. Đó là nơi bạn dừng lại.

+0

Hum, tôi không muốn đi thật xa - tất cả những gì tôi muốn là dll không được hiển thị trong thư mục ứng dụng ngay từ cái nhìn đầu tiên hoặc bằng cách nào đó bảo vệ nó chống lại việc nhúng nó một cách dễ dàng. Tôi biết: mọi thứ do con người tạo ra có thể bị tấn công hoặc phá hủy bởi con người. Nếu Microsoft, Apple và các công ty lớn khác không thể đạt được bảo vệ thực sự chống lại hack phần mềm của họ - làm thế nào tôi có thể nghĩ rằng có thể ... ;-) – dhh

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