Esempio n. 1
0
        /// <summary>
        ///     Writes a Packet to a Stream.
        /// </summary>
        /// <param name="Writer">The writer of the output Stream</param>
        /// <param name="PacketText">The packet to be written</param>
        /// <param name="Game">The game being tampered</param>
        public static void ToStream(EndianBinaryWriter Writer, StreamPacket Packet, MGSGame Game)
        {
            switch (Packet.Type)
            {
            case PacketType.Subtitle: SubtitlePacket.ToStream(Writer, (SubtitlePacket)Packet, Game); break;

            case PacketType.EndOfStream: EndOfStreamPacket.ToStream(Writer, (EndOfStreamPacket)Packet); break;

            case PacketType.Raw: RawPacket.ToStream(Writer, (RawPacket)Packet); break;
            }
        }
Esempio n. 2
0
        /// <summary>
        ///     Writes a End of Stream Packet to a Stream.
        /// </summary>
        /// <param name="Writer">The writer of the output Stream</param>
        /// <param name="PacketText">The packet to be written</param>
        /// <param name="Game">The game being tampered</param>
        public static void ToStream(EndianBinaryWriter Writer, EndOfStreamPacket Packet)
        {
            Writer.Write(Packet.StreamId);
            Writer.Write(0x10u);
            Writer.Write(Packet.Value);
            Writer.Write(0u);

            while ((Writer.BaseStream.Position & 0x7ff) != 0)
            {
                Writer.Write((byte)0);
            }
        }
Esempio n. 3
0
        /// <summary>
        ///     Reads a Packet from a Stream.
        /// </summary>
        /// <param name="Reader">The reader of the Stream where the data is located</param>
        /// <param name="Game">The game being tampered</param>
        /// <returns>The packet as a object</returns>
        public static StreamPacket FromStream(EndianBinaryReader Reader, MGSGame Game)
        {
            uint StreamId = Reader.ReadUInt32() & 0xff;

            Reader.Seek(-4, SeekOrigin.Current);

            switch (StreamId)
            {
            case 4: return(SubtitlePacket.FromStream(Reader, Game));

            case 0xf0: return(EndOfStreamPacket.FromStream(Reader));

            default: return(RawPacket.FromStream(Reader));
            }
        }
Esempio n. 4
0
        /// <summary>
        ///     Reads a End of Stream Packet from a Stream.
        /// </summary>
        /// <param name="Reader">The reader of the Stream where the data is located</param>
        /// <param name="Game">The game being tampered</param>
        /// <returns>The packet as a object</returns>
        public static EndOfStreamPacket FromStream(EndianBinaryReader Reader)
        {
            EndOfStreamPacket Packet = new EndOfStreamPacket();

            Packet.StreamId = Reader.ReadUInt32();
            uint PacketLength = Reader.ReadUInt32();

            Packet.Value = Reader.ReadUInt32();
            uint Dummy = Reader.ReadUInt32();

            if ((Reader.BaseStream.Position & 0x7ff) != 0)
            {
                long Position = Reader.BaseStream.Position & ~0x7ff;
                Reader.Seek(Position + 0x800, SeekOrigin.Begin);
            }

            return(Packet);
        }