private void WriteRandomBytes(BinaryWriter writer, OptionInfo optionData)
 {
     byte[] randomBytes = optionData.RandomBytes;
     if (optionData.IsCreateRandomBytes)
     {
         // 创建随机序列
         Random r         = new Random((int)DateTime.Now.Ticks);
         int    byteCount = r.Next(5, 10); // 随机序列长度
         randomBytes = new byte[byteCount];
         for (int i = 0; i < randomBytes.Length; i++)
         {
             randomBytes[i] = (byte)r.Next(0, 255);
         }
     }
     else
     {
         // 不创建随机序列
         if (randomBytes == null)
         {
             randomBytes = new byte[0];
         }
     }
     writer.Write(randomBytes.Length);
     writer.Write(randomBytes, 0, randomBytes.Length);
 }
 private void WriteFile(BinaryWriter writer, OptionInfo optionData, List <AddFileInfo> addFileData)
 {
     // 封装文件个数
     writer.Write(addFileData.Count);
     // 封装每个文件
     for (int i = 0; i < addFileData.Count; i++)
     {
         var    file     = addFileData[i];
         byte[] fileData = null;
         if (optionData.IsCompressFile)
         {
             // 压缩文件
             using (var fs = System.IO.File.OpenRead(file.SourceFilePath))
             {
                 fileData = CompressFile(fs);
             }
         }
         else
         {
             // 不压缩文件
             fileData = System.IO.File.ReadAllBytes(file.SourceFilePath);
         }
         writer.Write(fileData.Length);
         writer.Write(fileData);
     }
 }
        private void ReadFile(BinaryReader reader, OptionInfo optionData, List <AddFileInfo> addFileData)
        {
            int fileCount = reader.ReadInt32();

            if (addFileData.Count != fileCount)
            {
                throw new Exception("程序被篡改");
            }
            for (int i = 0; i < fileCount; i++)
            {
                var fileInfo  = addFileData[i];
                var fileLen   = reader.ReadInt32();
                var fileBytes = new byte[fileLen];
                reader.Read(fileBytes, 0, fileBytes.Length);
                if (optionData.IsCompressFile)
                {
                    fileBytes = Decompress(new MemoryStream(fileBytes));
                }
                System.IO.File.WriteAllBytes(fileInfo.OuputFilePath, fileBytes);
            }
        }
        private byte[] ReadRandomBytes(BinaryReader reader, OptionInfo optionData)
        {
            int byteCount = reader.ReadInt32();

            return(reader.ReadBytes(byteCount));
        }