Exemplo n.º 1
0
 public static void OnConnect(string url, int port)
 {
     try
     {
         ProtectLoader.Enabled       = false;
         ProtectLoader.NetCrypt      = null;
         ProtectLoader.EncryptionKey = null;
         ProtectLoader.Debug         = Environment.CommandLine.Contains("-debug");
         ProtectLoader.Netlog        = Environment.CommandLine.Contains("-netlog");
         ProtectLoader.NetClient     = new NetLink.Network(url, port);
         if (ProtectLoader.NetClient.Connected)
         {
             ProtectLoader.NetClient.SendPacket(NetLink.Network.PacketType.Firstpass, NetLink.Network.PacketFlag.None, null);
             ProtectLoader.NetPacket = ProtectLoader.NetClient.Receive(2000L);
             if (ProtectLoader.NetPacket.Received && ProtectLoader.NetPacket.Type == NetLink.Network.PacketType.Response && (byte)(ProtectLoader.NetPacket.Flags & NetLink.Network.PacketFlag.Compressed) == 1)
             {
                 ProtectLoader.Enabled = ProtectLoader.NetPacket.Read <bool>();
                 if (ProtectLoader.NetPacket.Length > 0L && ProtectLoader.Enabled)
                 {
                     ProtectLoader.Encryption = ProtectLoader.NetPacket.Read <bool>();
                     byte[] array;
                     string file = ProtectLoader.NetPacket.GetFile(out array);
                     if (file.Equals("RustProtect.Core", StringComparison.CurrentCultureIgnoreCase))
                     {
                         try
                         {
                             if (array != null && array.Length > 0 && Method.Initialize(Assembly.Load(array)))
                             {
                                 object[] args = new object[]
                                 {
                                     url,
                                     port,
                                     array
                                 };
                                 Method.Invoke("RustProtect.Protection.Initialize", args);
                                 if (ProtectLoader.Encryption)
                                 {
                                     ProtectLoader.EncryptionKey = Method.Invoke("RustProtect.Protection.EncryptionKey").AsByteArray;
                                 }
                                 if (ProtectLoader.EncryptionKey != null && ProtectLoader.EncryptionKey.Length == 64)
                                 {
                                     ProtectLoader.NetCrypt = new Network.NetEncryption(EncryptionKey);
                                 }
                                 ProtectLoader.Enabled = true;
                             }
                         }
                         catch (Exception)
                         {
                             ProtectLoader.Enabled = false;
                         }
                     }
                 }
             }
             ProtectLoader.NetClient.Dispose();
         }
     }
     catch (Exception ex)
     {
         UnityEngine.Debug.LogError(ex.ToString());
     }
 }
 public static void Initialize(string url, int port, byte[] assembly_bytes)
 {
     string_1 = url;
     int_0    = port;
     if (!Process32.IsRunAsAdministrator)
     {
         UnityEngine.Debug.LogError(Class3.smethod_10(0x11cc));
         UnityEngine.Debug.LogError(Class3.smethod_10(0x1288));
         UnityEngine.Debug.LogError(Class3.smethod_10(0x1316));
         UnityEngine.Debug.LogError(Class3.smethod_10(0x11cc));
     }
     else
     {
         if (ProtectLoader.Debug)
         {
             UnityEngine.Debug.Log(string.Concat(new object[] { Class3.smethod_10(0x13a6), url, Class3.smethod_10(840), port }));
         }
         Steam_ID = ClientConnect.Steam_GetSteamID();
         Username = Marshal.PtrToStringAnsi(ClientConnect.Steam_GetDisplayname());
         string_3 = hardware_0.String_0;
         string_4 = Application.systemLanguage.ToString();
         if (ProtectLoader.Debug)
         {
             UnityEngine.Debug.Log(string.Concat(new object[] { Class3.smethod_10(0x13fe), Steam_ID, Class3.smethod_10(0x1416), Username, Class3.smethod_10(0x1430), string_4, Class3.smethod_10(0x144a), string_3 }));
         }
         EncryptionKey = new SHA512CryptoServiceProvider().ComputeHash(assembly_bytes);
         network_0     = new NetLink.Network(string_1, int_0);
         if (ProtectLoader.Debug)
         {
             UnityEngine.Debug.Log(Class3.smethod_10(0x1468) + network_0.Connected.ToString());
         }
         if ((network_0.Connected && (string_3 != null)) && (string_3.Length == 0x20))
         {
             Assembly[]             assemblies = Assemblies;
             NetLink.Network.Packet packet     = new NetLink.Network.Packet(NetLink.Network.PacketType.Firstpass, NetLink.Network.PacketFlag.Compressed, null);
             packet.Write <ushort>(MessageType.Connect);
             packet.Write <ulong>(Steam_ID);
             packet.Write <string>(Username);
             packet.Write <string>(string_3);
             packet.Write <int>(assemblies.Length);
             foreach (Assembly assembly in assemblies)
             {
                 packet.Write <string>(assembly.GetName().Name);
             }
             network_0.Send(packet);
             packet_0 = network_0.Receive(0x7d0L);
             if (ProtectLoader.Debug)
             {
                 UnityEngine.Debug.Log(Class3.smethod_10(0x1496) + packet_0.Received.ToString());
             }
             if ((packet_0.Received && (packet_0.Type == NetLink.Network.PacketType.Response)) && packet_0.Flags.Has <NetLink.Network.PacketFlag>(NetLink.Network.PacketFlag.Compressed))
             {
                 bool_0 = packet_0.Read <bool>();
                 int num2 = packet_0.Read <int>();
                 verifyFile_0 = new VerifyFile[num2];
                 for (int i = 0; i < num2; i++)
                 {
                     verifyFile_0[i] = new VerifyFile {
                         Filename = packet_0.Read <string>(), Filesize = packet_0.Read <long>()
                     };
                 }
                 if (ProtectLoader.Debug)
                 {
                     UnityEngine.Debug.Log(Class3.smethod_10(0x14c2) + num2);
                 }
                 gameObject_0 = new GameObject(typeof(Protection).FullName);
                 gameObject_0.AddComponent <Protection>();
                 gameObject_0.AddComponent <RustProtect.Snapshot>();
                 return;
             }
         }
         network_0.Dispose();
     }
 }