如何使用EasyHook更改System.Management方法的结果?

时间:2016-06-30 16:29:12

标签: c# hook easyhook

我一直致力于制作一个C#DLL,它将被注入到一个也用C#编写的特定目标应用程序中。目标是操纵.NET框架的几个函数的输出。通过挂钩底层的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 reference source,寻找我可以挂钩的winapi调用,但我没有找到任何有用的东西。我还在测试程序中使用api monitor只使用了这个代码,但即使过滤也就像在大海捞针一样。

我的问题是,我如何更改此方法的结果?我无法挂钩目标应用程序的方法,因为程序集被混淆,因此名称会随着每次更新而改变。

0 个答案:

没有答案
相关问题