Ejemplo n.º 1
0
        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();
        }
Ejemplo n.º 2
0
 public PseudoCodeDumper(Il2CppProcessor proc) : base(proc)
 {
 }
Ejemplo n.º 3
0
 public PseudoCodeDumper(Il2CppProcessor proc, bool includeOffsets = true) : base(proc)
 {
     this.IncludeOffsets = includeOffsets;
 }
Ejemplo n.º 4
0
 public MethodsOffsetsDumper(Il2CppProcessor proc) : base(proc)
 {
 }
Ejemplo n.º 5
0
 public ProtoDumper(Il2CppProcessor proc) : base(proc)
 {
 }
Ejemplo n.º 6
0
 public BaseDumper(Il2CppProcessor proc)
 {
     il2cpp   = proc;
     metadata = il2cpp.Metadata;
 }
Ejemplo n.º 7
0
 public StructDumper(Il2CppProcessor proc) : base(proc)
 {
 }