Как использовать 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 в тестовой программе только с этим кодом, но даже с фильтрацией это похоже на поиск иголки в стоге сена.

У меня вопрос, как бы я изменил результат этого метода? Я не могу подключить метод целевого приложения, потому что сборка запутана, поэтому имя меняется при каждом обновлении.

0 ответов

Другие вопросы по тегам