Example #1
0
        private void _export_Click(object sender, EventArgs e)
        {
            if (1 != _locationSources.SelectedItems.Count)
            {
                return;
            }
            ListViewItem     item             = _locationSources.SelectedItems[0];
            TrackItemSummary trackItemSummary = item.Tag as TrackItemSummary;

            if (null == trackItemSummary)
            {
                return;
            }

            ToolStripMenuItem menu = sender as ToolStripMenuItem;

            if (null == menu)
            {
                return;
            }

            ExportMethod  exportMethod = null;
            EXPORT_FORMAT format       = (EXPORT_FORMAT)menu.Tag;

            switch (format)
            {
            case EXPORT_FORMAT.GPX:
                _exportFileDialog.DefaultExt = ".gpx";
                _exportFileDialog.Filter     = "GPX Files|*.gpx|ALL Files|*.*";
                _exportFileDialog.FileName   = trackItemSummary.Name;
                exportMethod = new ExportMethod(ExportGPX);
                break;

            default:
                return;
            }

            if (DialogResult.OK == _exportFileDialog.ShowDialog(this))
            {
                bykIFv1.TrackItem trackItem = trackItemSummary.TrackItem;
                if (null != exportMethod)
                {
                    exportMethod(_exportFileDialog.FileName, trackItem);
                }
            }
        }
        private void WriteExports()
        {
            if (exportDirectory.TargetOffset.FileOffset != 0)
            {
                OffsetConverter converter = new OffsetConverter(exportDirectory.Section);

                Writer.MoveToOffset(exportDirectory.TargetOffset.FileOffset);
                var exportDirHeader = Writer.OriginalAssembly.importExportTableReader.exportDirectory;
                Writer.WriteStructure <Structures.IMAGE_EXPORT_DIRECTORY>(exportDirHeader);

                uint functionOffset            = converter.RvaToFileOffset(exportDirHeader.AddressOfFunctions);
                uint functionNameOffset        = converter.RvaToFileOffset(exportDirHeader.AddressOfNames);
                uint functionNameOrdinalOffset = converter.RvaToFileOffset(exportDirHeader.AddressOfNameOrdinals);


                for (int i = 0; i < exportDirHeader.NumberOfFunctions; i++)
                {
                    // TODO: methods with only ordinals.

                    ExportMethod method = Writer.OriginalAssembly.LibraryExports[i];
                    Writer.MoveToOffset(functionOffset);
                    Writer.BinWriter.Write(method.RVA);

                    Writer.MoveToOffset(functionNameOffset);
                    Writer.BinWriter.Write(method.nameRva);

                    uint nameOffset = converter.RvaToFileOffset(method.nameRva);
                    Writer.MoveToOffset(nameOffset);
                    Writer.WriteAsciiZString(method.Name);

                    Writer.MoveToOffset(functionNameOrdinalOffset);
                    Writer.BinWriter.Write(method.Ordinal);

                    functionOffset            += 4;
                    functionNameOffset        += 4;
                    functionNameOrdinalOffset += 4;
                }
            }
        }
Example #3
0
        public async UniTask ExportResourcesAsync(GameSettings settings, string outputDir, ExportMethod exportMethod)
        {
            using (var context = new Context(settings)) {
                foreach (var filePath in ResourceFiles)
                {
                    var f = await context.AddLinearSerializedFileAsync(filePath);

                    SerializerObject s = context.Deserializer;
                    s.DoAt(f.StartPointer, () => {
                        try {
                            var resf = s.SerializeObject <Gameloft_ResourceFile>(default, name: f.filePath);
Example #4
0
 public static ExportMethod1 Le2Le(ExportMethod pf)
 {
     return(new ExportMethod1(pf.RVA, pf.Ordinal, pf.Name));
 }