在下面的调用堆栈中,MSI包将.NET 4运行时加载到我的进程中:
0:000> kb
# ChildEBP RetAddr Args to Child
...
05 0020bc08 753db8a4 004e639c 0020bc48 0020bc34 ntdll!LdrLoadDll+0x92
...
08 0020be88 73d452dd 0020bee0 71c8f77e 0020bed8 fusion!InitializeVM+0x2a
09 0020be90 71c8f77e 0020bed8 0020cf38 00000001 fusion!CreateAssemblyNameObject+0x8
0a 0020bee0 71c133c5 0020cf36 0020d148 0020cec4 msi!GetFusionPath+0x8f
...
11 0020dc20 6e961d98 04454a80 0020dd04 0020dd00 msi!MsiProvideComponentFromDescriptorW+0x6b
...
13 0020dcd4 755bea87 04454a80 0020dd04 0020dd00 advapi32!CommandLineFromMsiDescriptor+0x1d5
...
1f 0020e3b8 5e4d8f0e 004e489c 00000015 00000000 ole32!CoGetClassObject+0x20
...
24 0020e5dc 045b1652 0199ce38 0199cb08 0199c9f4 mscorwks!JIT_New+0xa6CoGetClassObject的第一个参数是REFCLSID类型,它是一个指向类ID的指针。我现在想将内存转储到CLSID结构中,但是找不到它。我尝试了dt REFCLSID、dt CLSID、dt LPCLSID和dt _CLSID,并在谷歌上搜索。
如何在WinDbg中转储类ID以找出加载.NET 4运行时的对象?
发布于 2014-06-16 09:08:26
数据类型是参考线。将它与CoGetClassObject的第一个参数一起使用,甚至可以很好地打印出来。
0:000> dt _GUID 004e489c
ntdll!_GUID
{8a385f1a-1622-4169-9010-0ad2d35f51c0}
+0x000 Data1 : 0x8a385f1a
+0x004 Data2 : 0x1622
+0x006 Data3 : 0x4169
+0x008 Data4 : [8] "???"在HKEY_CLASSES_ROOT\CLSID\...\InProcServer32中查找值以查找DLL。从DLL信息中可以找到供应商。
https://stackoverflow.com/questions/24240101
复制相似问题