Tôi có một số bảo mật được tích hợp vào chương trình phía máy khách tải xuống DLL từ web và gọi hàm bên trong DLL đó. DLL được đặt tên mạnh và hàm trong DLL sử dụng Assembly.GetCallingAssembly()
để xác định hội đồng gọi để tôi có thể nhận được đường dẫn chính xác đến chương trình đã gọi nó. Từ đó chúng tôi thực hiện kiểm tra băm của assembly và kiểm tra xem nó có đúng không.Cách để xác định hội đồng gọi điện thực
Chúng tôi có những người đã tự gắn mình ở chế độ tin cậy đầy đủ và có thể giả mạo cuộc gọi GetCallingAssembly
để trỏ đến thực thi thực sự, trong khi họ chạy phiên bản đã sửa đổi của nó. Có cái gì khác khác sau đó GetCallingAssembly
mà tôi có thể sử dụng để có được người gọi thực sự? Một số callstack hoặc cái gì đó có thể cung cấp thực thi thực tế kể từ GetCallingAssembly
dường như dễ bị giả mạo.
Hãy thử các phương pháp 'GetEntryAssembly' thay – hazzik
Hãy nhớ rằng, nếu bạn cho phép sự tin tưởng hoàn toàn, họ cũng có thể vá GetEntryAssembly. Nếu bạn cho phép tin tưởng đầy đủ, họ cũng có thể vá DLL đã tải xuống của bạn và tắt kiểm tra băm. –