Как использовать EasyHook, чтобы изменить результат метода System.Management?
Я работал над созданием C# DLL, которая будет внедрена в конкретное целевое приложение, которое также написано на C#. Цель состоит в том, чтобы манипулировать выходными данными нескольких функций.NET Framework. Мне удалось изменить значение чтения раздела реестра, подключив основную функцию Windows API, но у меня возникли проблемы с тем, как она читает сигнатуру и серийный номер жесткого диска системы.
Примерно так он использует System.Management:
using System.Management;
internal static string GetHarddiskIdentifier()
{
string[] properties = new string[] {"Signature", "SerialNumber"};
var class = new ManagementClass("Win32_DiskDrive");
var instances = class.GetInstances();
foreach (ManagementObject mo in instances) {
foreach (string w in properties) {
object o = mo[w];
if (o != null)
return o.ToString();
}
}
return string.Empty;
}
Я просмотрел справочный источник.NET для класса ManagementObject, искал вызовы winapi, которые я мог бы перехватить, но я не нашел ничего полезного. Я также использовал монитор API в тестовой программе только с этим кодом, но даже с фильтрацией это похоже на поиск иголки в стоге сена.
У меня вопрос, как бы я изменил результат этого метода? Я не могу подключить метод целевого приложения, потому что сборка запутана, поэтому имя меняется при каждом обновлении.