有什么方法可以在正在运行的 .NET 应用程序中查看字符串表的内容?
我想比较一个控制台应用程序与普通字符串连接和一个使用字符串生成器的应用程序。
有什么方法可以在正在运行的 .NET 应用程序中查看字符串表的内容?
我想比较一个控制台应用程序与普通字符串连接和一个使用字符串生成器的应用程序。
您可以使用ClrMD附加到进程并从中检索信息。类似于以下内容的东西应该起作用:
var proc = Process.GetProcessesByName("myapp.exe").FirstOrDefault();
using (var target = DataTarget.AttachToProcess(proc.Id, 1000))
{
var runtime = target.ClrVersions[0].CreateRuntime();
var heap = runtime.GetHeap();
foreach (var obj in heap.EnumerateObjectAddresses())
{
var type = heap.GetObjectType(obj);
if (type.Name == "System.String")
{
var value = (string)type.GetValue(obj);
// Write value to disk or something.
}
}
}