public override void Write(StackTraceUnobfuscationResult res, Version target, Stream stream) { using (var writer = new StreamWriter(stream, Encoding.UTF8, 2048, true)) { foreach (var frame in res.StackFrames) { var alternatives = frame.Alternatives; var best = alternatives.FirstOrDefault(); if (best == null) { writer.WriteLine($"{frame.InputStackLine}?"); } else { if (VersionUtils.NumEqual(best.VersionNumber, target) >= 3) { writer.WriteLine(best.Unfuscated); } else { writer.WriteLine(best.Unfuscated + "(v" + alternatives[0].Version + ")"); } } } } }
public static void Write(this ResultWriter writer, StackTraceUnobfuscationResult res, Version target, TextWriter textWriter) { using (MemoryStream ms = new MemoryStream()) { writer.Write(res, target, ms); ms.Seek(0, 0); using (var streamReader = new StreamReader(ms)) { textWriter.Write(streamReader.ReadToEnd()); } } }
public override void Write(StackTraceUnobfuscationResult res, Version target, Stream stream) { DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(StackTraceUnobfuscationResult)); serializer.WriteObject(stream, res); }
/// <summary> /// Writes the un-obfuscation result to a stream. /// </summary> /// <param name="res">Result to write.</param> /// <param name="target">The known version of the obfuscated stacktrace. (optional).</param> /// <param name="stream">Output stream.</param> public abstract void Write(StackTraceUnobfuscationResult res, Version target, Stream stream);