private static AssemblyImage GetAssemblyImage(ProcessFacade process, string name, int rootDomainFunctionAddress) { var domainAddress = process.ReadPtr((uint)rootDomainFunctionAddress + 1); //// pointer to struct of type _MonoDomain var domain = process.ReadPtr(domainAddress); //// pointer to array of structs of type _MonoAssembly var assemblyArrayAddress = process.ReadPtr(domain + MonoLibraryOffsets.ReferencedAssemblies); for (var assemblyAddress = assemblyArrayAddress; assemblyAddress != Constants.NullPtr; assemblyAddress = process.ReadPtr(assemblyAddress + 0x4)) { var assembly = process.ReadPtr(assemblyAddress); var assemblyNameAddress = process.ReadPtr(assembly + 0x8); var assemblyName = process.ReadAsciiString(assemblyNameAddress); if (assemblyName == name) { return(new AssemblyImage(process, process.ReadPtr(assembly + MonoLibraryOffsets.AssemblyImage))); //return new AssemblyImage(process, process.ReadPtr(assembly + 0x44)); -> CollectionManager is null if we have this //return new AssemblyImage(process, process.ReadPtr(assembly + 0x54)); -> CollectionManager is null if we have this //return new AssemblyImage(process, process.ReadPtr(assembly + 0x6c)); -> CollectionManager is null if we have this //return new AssemblyImage(process, process.ReadPtr(assembly + 0xac)); -> CollectionManager is null if we have this //return new AssemblyImage(process, process.ReadPtr(assembly + 0xac)); } } throw new InvalidOperationException($"Unable to find assembly '{name}'"); }