static void Main(string[] args) { NLog.LayoutRenderers.LayoutRenderer.Register("current-dir", (logEvent) => Directory.GetCurrentDirectory()); Logger logger = LogManager.GetCurrentClassLogger(); logger.Info("Starting Il2CppDumper..."); logger.Info("Current directory: {0}", Directory.GetCurrentDirectory()); var options = new Options(); CommandLine.Parser.Default.ParseArguments(args, options); // Check files if (!File.Exists(options.BinaryFile)) { logger.Error($"File {options.BinaryFile} does not exist."); } else if (!File.Exists(options.MetadataFile)) { logger.Error($"File {options.MetadataFile} does not exist."); } else { logger.Info("Load data from files..."); var il2cpp = Il2CppProcessor.LoadFromFile(options.BinaryFile, options.MetadataFile); if (il2cpp == null) { logger.Error("Unable to load data from files."); } else { logger.Info("Writing pseudo code..."); var dumper = new PseudoCodeDumper(il2cpp); dumper.DumpStrings((options.OutputName ?? "generated") + ".strings.txt"); dumper.DumpToFile((options.OutputName ?? "pseudo") + ".cs"); logger.Info("Writing clean pseudo code..."); dumper.IncludeOffsets = false; dumper.DumpToFile((options.OutputName ?? "strings") + ".clean.cs"); logger.Info("Writing structs..."); var structOffsets = new StructDumper(il2cpp); structOffsets.DumpToFile((options.OutputName ?? "generated") + ".structs.h"); logger.Info("Writing methods offsets..."); var methodsOffsets = new MethodsOffsetsDumper(il2cpp); methodsOffsets.DumpToFile((options.OutputName ?? "generated") + ".methods.txt"); logger.Info("Writing extracted protos..."); var protoDumper = new ProtoDumper(il2cpp); protoDumper.DumpToFile((options.OutputName ?? "generated") + ".proto"); } } logger.Info("Done."); Console.WriteLine("Press a key to terminate."); Console.ReadKey(); }
public PseudoCodeDumper(Il2CppProcessor proc) : base(proc) { }
public PseudoCodeDumper(Il2CppProcessor proc, bool includeOffsets = true) : base(proc) { this.IncludeOffsets = includeOffsets; }
public MethodsOffsetsDumper(Il2CppProcessor proc) : base(proc) { }
public ProtoDumper(Il2CppProcessor proc) : base(proc) { }
public BaseDumper(Il2CppProcessor proc) { il2cpp = proc; metadata = il2cpp.Metadata; }
public StructDumper(Il2CppProcessor proc) : base(proc) { }