Esempio n. 1
0
        public ProjectFile_v3 VisitProgram(string projectAbsPath, Program program)
        {
            var dtSerializer = new DataTypeSerializer();

            return(new DecompilerInput_v4
            {
                Filename = ConvertToProjectRelativePath(projectAbsPath, program.Filename),
                User = new UserData_v4
                {
                    Procedures = program.User.Procedures
                                 .Select(de => { de.Value.Address = de.Key.ToString(); return de.Value; })
                                 .ToList(),
                    Processor = SerializeProcessorOptions(program.User, program.Architecture),
                    PlatformOptions = SerializePlatformOptions(program.User, program.Platform),
                    LoadAddress = program.User.LoadAddress != null?program.User.LoadAddress.ToString() : null,
                                      Calls = program.User.Calls
                                              .Select(uc => SerializeUserCall(program, uc.Value))
                                              .Where(uc => uc != null)
                                              .ToList(),
                                      GlobalData = program.User.Globals
                                                   .Select(de => new GlobalDataItem_v2
                    {
                        Address = de.Key.ToString(),
                        DataType = de.Value.DataType,
                        Name = GlobalName(de),
                    })
                                                   .ToList(),
                                      OnLoadedScript = program.User.OnLoadedScript,
                                      Heuristics = program.User.Heuristics
                                                   .Select(h => new Heuristic_v3 {
                        Name = h
                    }).ToList(),
                                      Annotations = program.User.Annotations.Select(SerializeAnnotation).ToList(),
                                      TextEncoding = program.User.TextEncoding != Encoding.ASCII ? program.User.TextEncoding.WebName : null,
                                      RegisterValues = SerializeRegisterValues(program.User.RegisterValues)
                },
                DisassemblyFilename = ConvertToProjectRelativePath(projectAbsPath, program.DisassemblyFilename),
                IntermediateFilename = ConvertToProjectRelativePath(projectAbsPath, program.IntermediateFilename),
                OutputFilename = ConvertToProjectRelativePath(projectAbsPath, program.OutputFilename),
                TypesFilename = ConvertToProjectRelativePath(projectAbsPath, program.TypesFilename),
                GlobalsFilename = ConvertToProjectRelativePath(projectAbsPath, program.GlobalsFilename),
            });
        }
Esempio n. 2
0
        public ProjectFile_v2 VisitProgram(Program program)
        {
            var dtSerializer = new DataTypeSerializer();

            return(new DecompilerInput_v2
            {
                Address = program.Image != null
                    ? program.Image.BaseAddress.ToString()
                    : null,
                Filename = program.Filename,
                UserProcedures = program.UserProcedures
                                 .Select(de => { de.Value.Address = de.Key.ToString(); return de.Value; })
                                 .ToList(),
                UserCalls = program.UserCalls
                            .Select(uc => uc.Value)
                            .ToList(),
                UserGlobalData = program.UserGlobalData
                                 .Select(de => new GlobalDataItem_v2
                {
                    Address = de.Key.ToString(),
                    DataType = de.Value.DataType,
                    Name = string.Format("g_{0:X}", de.Key.ToLinear())
                })
                                 .ToList(),
                DisassemblyFilename = program.DisassemblyFilename,
                IntermediateFilename = program.IntermediateFilename,
                OutputFilename = program.OutputFilename,
                TypesFilename = program.TypesFilename,
                GlobalsFilename = program.GlobalsFilename,
                OnLoadedScript = program.OnLoadedScript,
                Options = new ProgramOptions_v2
                {
                    HeuristicScanning = program.Options.HeuristicScanning,
                }
            });
        }