Exe net10.0 t.FullName == "Interop"); var sys = interop?.NestedTypes.FirstOrDefault(t => t.Name == "Sys"); var method = sys?.Methods.FirstOrDefault(m => m.Name == "GetCryptographicallySecureRandomBytes" && m.ReturnType.MetadataType == MetadataType.Int32 && m.Parameters.Count == 2); if (method is null) { Log.LogError("Could not find Interop/Sys.GetCryptographicallySecureRandomBytes(Byte*, Int32)."); return false; } var nonSecureMethod = method.Module.ImportReference( sys.Methods.First(m => m.Name == "GetNonCryptographicallySecureRandomBytes" && m.Parameters.Count == 2)); method.Body.Variables.Clear(); method.Body.ExceptionHandlers.Clear(); method.Body.Instructions.Clear(); var il = method.Body.GetILProcessor(); il.Append(il.Create(OpCodes.Ldarg_0)); il.Append(il.Create(OpCodes.Ldarg_1)); il.Append(il.Create(OpCodes.Call, nonSecureMethod)); il.Append(il.Create(OpCodes.Ldc_I4_0)); il.Append(il.Create(OpCodes.Ret)); assembly.Write(); Log.LogMessage(MessageImportance.High, "Patched Interop/Sys.GetCryptographicallySecureRandomBytes return IL for NativeAOT."); return true; ]]>