Esempio n. 1
0
        private void ModifyAbc(DoABCTag abcTag)
        {
            CPoolInfo constants = abcTag.ABCData.ConstantPool;

            StatusTxt.SetDotAnimation("Squeezing ({0})", abcTag.Name);

            for (int i = 1; i < constants.Strings.Length; i++)
            {
                string constant = constants.Strings[i];
                if (constant.Length > 256 || constant.Length < 2)
                {
                    continue;
                }

                if (constant.Length > 2 && constant.Length < 6)
                {
                    ushort possiblePort = 0;
                    if (ushort.TryParse(constant, out possiblePort))
                    {
                        if (!_possiblePorts.Contains(possiblePort))
                        {
                            _possiblePorts.Add(possiblePort);
                        }

                        if (constant != "10001")
                        {
                            continue;
                        }
                    }
                }

                constants.Strings[i] =
                    ReplaceConstant(constant);
            }
        }
Esempio n. 2
0
 SwfTagData ISwfTagVisitor <ISwfStreamWriter, SwfTagData> .Visit(DoABCTag tag, ISwfStreamWriter writer)
 {
     writer.WriteUInt32(tag.Flags);
     writer.WriteString(tag.Name);
     writer.WriteBytes(tag.ABCData);
     return(null);
 }
Esempio n. 3
0
 SwfTagBase ISwfTagVisitor <ISwfStreamReader, SwfTagBase> .Visit(DoABCTag tag, ISwfStreamReader reader)
 {
     tag.Flags   = reader.ReadUInt32();
     tag.Name    = reader.ReadString();
     tag.ABCData = reader.ReadRest();
     return(tag);
 }
Esempio n. 4
0
        protected virtual FlashTag ReadTag(FlashReader reader, TagRecord header)
        {
            FlashTag tag = null;

            switch (header.TagType)
            {
            default:
                tag = new UnknownTag(Reader, header);
                break;

            case FlashTagType.DoABC:
                tag = new DoABCTag(Reader, header);
                _abcFiles.Add(((DoABCTag)tag).ABC);
                break;

            case FlashTagType.DefineBitsLossless2:
                tag = new DefineBitsLossless2Tag(Reader, header);
                break;

            case FlashTagType.DefineBinaryData:
                tag = new DefineBinaryDataTag(Reader, header);
                break;
            }

            var character = (tag as ICharacter);

            if (character != null)
            {
                // Add ICharacter tag to the global dictionary.
                Dictionary.Characters[
                    character.CharacterId] = character;
            }
            return(tag);
        }
Esempio n. 5
0
 protected override void WriteTag(TagItem tag, FlashWriter output)
 {
     if (tag.Kind == TagKind.DoABC)
     {
         DoABCTag doABCTag = (DoABCTag)tag;
         doABCTag.ABCData = _abcFileTags[doABCTag].ToArray();
     }
     base.WriteTag(tag, output);
 }
Esempio n. 6
0
        protected override TagItem ReadTag(HeaderRecord header, FlashReader input)
        {
            TagItem tag = base.ReadTag(header, input);

            if (tag.Kind == TagKind.DoABC)
            {
                DoABCTag doABCTag = (DoABCTag)tag;
                ABCFile  abcFile  = new ABCFile(doABCTag.ABCData);

                _abcFileTags[doABCTag] = abcFile;
                ABCFiles.Add(abcFile);
            }
            return(tag);
        }
Esempio n. 7
0
        static private void Set()
        {
            string __airFileName = Path.Combine(Directories.AirClientFolder, _AirGeneratedContent);

            if (File.Exists(__airFileName))
            {
                _champions     = new ChampionsList();
                _runes         = new RunesList();
                _maps          = new MapsList();
                _featuredGames = new FeaturedGamesList();
                _spells        = new SpellsList();
                _items         = new GameItemList();
                Tools.Swf.SwfReader __swfReader = new Tools.Swf.SwfReader(__airFileName);
                __swfReader.DeCompile();
                if (__swfReader.CompilationUnit.IsValid)
                {
                    if (__swfReader.CompilationUnit.Symbols.Count > 0)
                    {
                        foreach (ISwfTag __iSwfTag in __swfReader.CompilationUnit.Tags)
                        {
                            if (__iSwfTag is DoABCTag)
                            {
                                DoABCTag _abctag = (DoABCTag)__iSwfTag;
                                foreach (KeyValuePair <uint, AS3_Class> __class in _abctag.Classes)
                                {
                                    if (__class.Value.classname is RTQName)
                                    {
                                        switch (((RTQName)__class.Value.classname).Name)
                                        {
                                        case "ChampionGeneratedData":
                                            foreach (KeyValuePair <uint, AS3_MethodInfo> __member in __class.Value.traits.methods)
                                            {
                                                List <object[]> __results = GetParams(__member.Value, "createChampion");
                                                if (__results.Count > 0)
                                                {
                                                    foreach (object[] __result in __results)
                                                    {
                                                        _champions.Add(new Champion(__result));
                                                    }
                                                }
                                            }
                                            break;

                                        case "RuneGeneratedData":
                                            foreach (KeyValuePair <uint, AS3_MethodInfo> __member in __class.Value.traits.methods)
                                            {
                                                List <object[]> __results = GetParams(__member.Value, "createRune");
                                                if (__results.Count > 0)
                                                {
                                                    foreach (object[] __result in __results)
                                                    {
                                                        _runes.Add(new Rune(__result));
                                                    }
                                                }
                                            }
                                            break;

                                        case "MapGeneratedData":
                                            foreach (KeyValuePair <uint, AS3_MethodInfo> __member in __class.Value.traits.methods)
                                            {
                                                List <object[]> __results = GetParams(__member.Value, "createMap");
                                                if (__results.Count > 0)
                                                {
                                                    foreach (object[] __result in __results)
                                                    {
                                                        _maps.Add(new Map(__result));
                                                    }
                                                }
                                            }
                                            break;

                                        case "FeaturedGameGeneratedData":
                                            foreach (KeyValuePair <uint, AS3_MethodInfo> __member in __class.Value.traits.methods)
                                            {
                                                List <object[]> __results = GetParams(__member.Value, "createFeaturedGame");
                                                if (__results.Count > 0)
                                                {
                                                    foreach (object[] __result in __results)
                                                    {
                                                        _featuredGames.Add(new FeaturedGame(__result));
                                                    }
                                                }
                                            }
                                            break;

                                        case "SpellGeneratedData":
                                            foreach (KeyValuePair <uint, AS3_MethodInfo> __member in __class.Value.traits.methods)
                                            {
                                                List <object[]> __results = GetParams(__member.Value, "createSpell");
                                                if (__results.Count > 0)
                                                {
                                                    foreach (object[] __result in __results)
                                                    {
                                                        _spells.Add(new Spell(__result));
                                                    }
                                                }
                                            }
                                            break;

                                        case "GameItemGeneratedData":
                                            foreach (KeyValuePair <uint, AS3_MethodInfo> __member in __class.Value.traits.methods)
                                            {
                                                List <object[]> __results = GetParams(__member.Value, "createGameItem");
                                                if (__results.Count > 0)
                                                {
                                                    foreach (object[] __result in __results)
                                                    {
                                                        _items.Add(new GameItem(__result));
                                                    }
                                                }
                                            }
                                            break;
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
Esempio n. 8
0
        static SwfTagBase Create(SwfTagData tag_data)
        {
            var reader = new SwfStreamReader(tag_data.TagData);

            switch (tag_data.TagId)
            {
            // Display list
            case (int)SwfTagType.PlaceObject:                  return(PlaceObjectTag.Create(reader));

            case (int)SwfTagType.PlaceObject2:                 return(PlaceObject2Tag.Create(reader));

            case (int)SwfTagType.PlaceObject3:                 return(PlaceObject3Tag.Create(reader));

            case (int)SwfTagType.RemoveObject:                 return(RemoveObjectTag.Create(reader));

            case (int)SwfTagType.RemoveObject2:                return(RemoveObject2Tag.Create(reader));

            case (int)SwfTagType.ShowFrame:                    return(ShowFrameTag.Create(reader));

            // Control
            case (int)SwfTagType.SetBackgroundColor:           return(SetBackgroundColorTag.Create(reader));

            case (int)SwfTagType.FrameLabel:                   return(FrameLabelTag.Create(reader));

            case (int)SwfTagType.Protect:                      return(ProtectTag.Create(reader));

            case (int)SwfTagType.End:                          return(EndTag.Create(reader));

            case (int)SwfTagType.ExportAssets:                 return(ExportAssetsTag.Create(reader));

            case (int)SwfTagType.ImportAssets:                 return(UnsupportedTag.Create(SwfTagType.ImportAssets));

            case (int)SwfTagType.EnableDebugger:               return(EnableDebuggerTag.Create(reader));

            case (int)SwfTagType.EnableDebugger2:              return(EnableDebugger2Tag.Create(reader));

            case (int)SwfTagType.ScriptLimits:                 return(ScriptLimitsTag.Create(reader));

            case (int)SwfTagType.SetTabIndex:                  return(UnsupportedTag.Create(SwfTagType.SetTabIndex));

            case (int)SwfTagType.ImportAssets2:                return(UnsupportedTag.Create(SwfTagType.ImportAssets2));

            case (int)SwfTagType.SymbolClass:                  return(SymbolClassTag.Create(reader));

            case (int)SwfTagType.Metadata:                     return(MetadataTag.Create(reader));

            case (int)SwfTagType.DefineScalingGrid:            return(UnsupportedTag.Create(SwfTagType.DefineScalingGrid));

            case (int)SwfTagType.DefineSceneAndFrameLabelData: return(DefineSceneAndFrameLabelDataTag.Create(reader));

            // Actions
            case (int)SwfTagType.DoAction:                     return(UnsupportedTag.Create(SwfTagType.DoAction));

            case (int)SwfTagType.DoInitAction:                 return(UnsupportedTag.Create(SwfTagType.DoInitAction));

            case (int)SwfTagType.DoABC:                        return(DoABCTag.Create(reader));

            // Shape
            case (int)SwfTagType.DefineShape:                  return(DefineShapeTag.Create(reader));

            case (int)SwfTagType.DefineShape2:                 return(DefineShape2Tag.Create(reader));

            case (int)SwfTagType.DefineShape3:                 return(DefineShape3Tag.Create(reader));

            case (int)SwfTagType.DefineShape4:                 return(DefineShape4Tag.Create(reader));

            // Bitmaps
            case (int)SwfTagType.DefineBits:                   return(UnsupportedTag.Create(SwfTagType.DefineBits));

            case (int)SwfTagType.JPEGTables:                   return(UnsupportedTag.Create(SwfTagType.JPEGTables));

            case (int)SwfTagType.DefineBitsJPEG2:              return(UnsupportedTag.Create(SwfTagType.DefineBitsJPEG2));

            case (int)SwfTagType.DefineBitsJPEG3:              return(UnsupportedTag.Create(SwfTagType.DefineBitsJPEG3));

            case (int)SwfTagType.DefineBitsLossless:           return(DefineBitsLosslessTag.Create(reader));

            case (int)SwfTagType.DefineBitsLossless2:          return(DefineBitsLossless2Tag.Create(reader));

            case (int)SwfTagType.DefineBitsJPEG4:              return(UnsupportedTag.Create(SwfTagType.DefineBitsJPEG4));

            // Shape Morphing
            case (int)SwfTagType.DefineMorphShape:             return(UnsupportedTag.Create(SwfTagType.DefineMorphShape));

            case (int)SwfTagType.DefineMorphShape2:            return(UnsupportedTag.Create(SwfTagType.DefineMorphShape2));

            // Fonts and Text
            case (int)SwfTagType.DefineFont:                   return(UnsupportedTag.Create(SwfTagType.DefineFont));

            case (int)SwfTagType.DefineFontInfo:               return(UnsupportedTag.Create(SwfTagType.DefineFontInfo));

            case (int)SwfTagType.DefineFontInfo2:              return(UnsupportedTag.Create(SwfTagType.DefineFontInfo2));

            case (int)SwfTagType.DefineFont2:                  return(UnsupportedTag.Create(SwfTagType.DefineFont2));

            case (int)SwfTagType.DefineFont3:                  return(UnsupportedTag.Create(SwfTagType.DefineFont3));

            case (int)SwfTagType.DefineFontAlignZones:         return(UnsupportedTag.Create(SwfTagType.DefineFontAlignZones));

            case (int)SwfTagType.DefineFontName:               return(UnsupportedTag.Create(SwfTagType.DefineFontName));

            case (int)SwfTagType.DefineText:                   return(UnsupportedTag.Create(SwfTagType.DefineText));

            case (int)SwfTagType.DefineText2:                  return(UnsupportedTag.Create(SwfTagType.DefineText2));

            case (int)SwfTagType.DefineEditText:               return(UnsupportedTag.Create(SwfTagType.DefineEditText));

            case (int)SwfTagType.CSMTextSettings:              return(UnsupportedTag.Create(SwfTagType.CSMTextSettings));

            case (int)SwfTagType.DefineFont4:                  return(UnsupportedTag.Create(SwfTagType.DefineFont4));

            // Sounds
            case (int)SwfTagType.DefineSound:                  return(UnsupportedTag.Create(SwfTagType.DefineSound));

            case (int)SwfTagType.StartSound:                   return(UnsupportedTag.Create(SwfTagType.StartSound));

            case (int)SwfTagType.StartSound2:                  return(UnsupportedTag.Create(SwfTagType.StartSound2));

            case (int)SwfTagType.SoundStreamHead:              return(UnsupportedTag.Create(SwfTagType.SoundStreamHead));

            case (int)SwfTagType.SoundStreamHead2:             return(UnsupportedTag.Create(SwfTagType.SoundStreamHead2));

            case (int)SwfTagType.SoundStreamBlock:             return(UnsupportedTag.Create(SwfTagType.SoundStreamBlock));

            // Buttons
            case (int)SwfTagType.DefineButton:                 return(UnsupportedTag.Create(SwfTagType.DefineButton));

            case (int)SwfTagType.DefineButton2:                return(UnsupportedTag.Create(SwfTagType.DefineButton2));

            case (int)SwfTagType.DefineButtonCxform:           return(UnsupportedTag.Create(SwfTagType.DefineButtonCxform));

            case (int)SwfTagType.DefineButtonSound:            return(UnsupportedTag.Create(SwfTagType.DefineButtonSound));

            // Sprites and Movie Clips
            case (int)SwfTagType.DefineSprite:                 return(DefineSpriteTag.Create(reader));

            // Video
            case (int)SwfTagType.DefineVideoStream:            return(UnsupportedTag.Create(SwfTagType.DefineVideoStream));

            case (int)SwfTagType.VideoFrame:                   return(UnsupportedTag.Create(SwfTagType.VideoFrame));

            // Metadata
            case (int)SwfTagType.FileAttributes:               return(FileAttributesTag.Create(reader));

            case (int)SwfTagType.EnableTelemetry:              return(EnableTelemetryTag.Create(reader));

            case (int)SwfTagType.DefineBinaryData:             return(DefineBinaryDataTag.Create(reader));

            default:                                           return(UnknownTag.Create(tag_data.TagId));
            }
        }
Esempio n. 9
0
 ITagFormatter ISwfTagVisitor <object, ITagFormatter> .Visit(DoABCTag tag, object arg)
 {
     return(new DoABCTagFormatter());
 }
 public SwfDisplayList Visit(DoABCTag tag, SwfDisplayList dl)
 {
     return(dl);
 }
Esempio n. 11
0
        protected virtual TagItem ReadTag(HeaderRecord header, FlashReader input)
        {
            TagItem tag = null;

            switch (header.Kind)
            {
            case TagKind.DefineBinaryData:
                tag = new DefineBinaryDataTag(header, input);
                break;

            case TagKind.DefineBitsLossless2:
                tag = new DefineBitsLossless2Tag(header, input);
                break;

            case TagKind.DefineFontName:
                tag = new DefineFontNameTag(header, input);
                break;

            case TagKind.DefineSound:
                tag = new DefineSoundTag(header, input);
                break;

            case TagKind.DoABC:
                tag = new DoABCTag(header, input);
                break;

            case TagKind.End:
                tag = new EndTag(header);
                break;

            case TagKind.ExportAssets:
                tag = new ExportAssetsTag(header, input);
                break;

            case TagKind.FileAttributes:
                tag = new FileAttributesTag(header, input);
                break;

            case TagKind.FrameLabel:
                tag = new FrameLabelTag(header, input);
                break;

            case TagKind.ProductInfo:
                tag = new ProductInfoTag(header, input);
                break;

            case TagKind.ScriptLimits:
                tag = new ScriptLimitsTag(header, input);
                break;

            case TagKind.SetBackgroundColor:
                tag = new SetBackgroundColorTag(header, input);
                break;

            case TagKind.ShowFrame:
                tag = new ShowFrameTag(header);
                break;

            case TagKind.SymbolClass:
                tag = new SymbolClassTag(header, input);
                break;

            default:
            case TagKind.Unknown:
                tag = new UnknownTag(header, input);
                break;
            }
            return(tag);
        }