private void InitConfigArgs() { ConfigArgs.Add(new ConfigArg() { Key = "TransferOfAxes.Zero", Value = "1372.066,0,1013.352", ValueType = "Vector3", Name = "坐标转换原点", Describe = "坐标转换原点(偏移)", Classify = "Axes" }); ConfigArgs.Add(new ConfigArg() { Key = "TransferOfAxes.Scale", Value = "1.685735,0,1.686961", ValueType = "Vector3", Name = "坐标转换比例", Describe = "坐标转换比例", Classify = "Axes" }); ConfigArgs.Add(new ConfigArg() { Key = "TransferOfAxes.Direction", Value = "-1,1,-1", ValueType = "Vector3", Name = "坐标转换方向", Describe = "坐标转换方向", Classify = "Axes" }); }
private ConfigArgs ParseConfig() { if (nudPort.Value <= 0 || nudPort.Value > 65535) { MessageBox.Show("Invalid port: " + nudPort.Value.ToString() + " !", Application.ProductName + " Error", MessageBoxButtons.OK, MessageBoxIcon.Error); return(null); } IPHostEntry host; try { host = Dns.GetHostEntry(txtIptopatch.Text.Trim()); } catch (Exception) { MessageBox.Show("Invalid ip: " + txtIptopatch.Text + " !", Application.ProductName + " Error", MessageBoxButtons.OK, MessageBoxIcon.Error); return(null); } IPAddress ip = null; for (int iAddr = 0; iAddr <= host.AddressList.Length; iAddr++) { if (host.AddressList[iAddr].AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork) { ip = host.AddressList[iAddr]; break; } } if (ip == null) { MessageBox.Show("Cannot find a valid IPV4 ip for: " + txtIptopatch.Text + " !", Application.ProductName + " Error", MessageBoxButtons.OK, MessageBoxIcon.Error); return(null); } if (this.ckbRemind.Checked) { if (this.txtIptopatch.Text.Length > 0) { using (StreamWriter srRead = File.CreateText(StaticData.LAUNCH_CFG)) { srRead.Write(this.txtIptopatch.Text.Trim() + "," + this.nudPort.Value.ToString() + "," + this.cmbEncryption.SelectedIndex.ToString()); } } } ConfigArgs caTouse = new ConfigArgs(); caTouse.uPort = (uint)this.nudPort.Value; caTouse.ipHost = ip; caTouse.encType = (ENCRYPTION_PATCH_TYPE)this.cmbEncryption.SelectedIndex; return(caTouse); }
public override object Convert(object value, object parameter) { var fe = value as FrameworkElement; if (fe == null) { return(null); } if (_configArgs == null) { _configArgs = new ConfigArgs(fe); } return(_configArgs); }
static int Main(string[] args) { try { Console.WriteLine("开始执行IISTools工具"); int iisVersion = IISBaseConfig.GetIISVersion(); ConfigArgs argsObj = new ConfigArgs(args); CommandType exType = argsObj.GetExecuteType(); ConfigArgsModel argsModel = argsObj.Parse(); argsModel.ExecuteType = exType; if (exType == CommandType.PrintHelper) { Console.WriteLine(PrintHelper.Text()); return(0); } if (iisVersion < 7) { argsModel.User32Pool = false; } IISBaseConfig iis = iisVersion >= 7 ? (IISBaseConfig) new IISConfigEx(argsModel) : (IISBaseConfig) new IISConfig(argsModel); iis.CheckParams(); if (exType == CommandType.CreateWebSite) { iis.CreateWebSite(); } if (exType == CommandType.CreateVirtualDir) { iis.CreateVirtualDir(); } if (exType == CommandType.Del) { iis.RemoveDir(); } } catch (CustomException e) { Console.WriteLine(e.Msg); return(e.Code); } Console.WriteLine("命令执行成功"); return(1); }
public static void Config(ConfigArgs args) { InvokeCount++; }
private void PathOrLaunch(bool bPatch, ConfigArgs caTouse) { if (caTouse == null) return; int iResultEncLogin = 0; int iResultEncLoginId = 0; // ---------------------- int iResultEncGame = 0; // ---------------------- List<int> iResultIP = new List<int>(); int iResultIPId = 0; // ---------------------- ENCRYPTION_PATCH_TYPE encType = caTouse.encType; // !bPatch Process prcTostart = null; // bPatch FileStream fsToPatch = null; if (!bPatch) { prcTostart = new Process(); prcTostart.StartInfo.FileName = this.txtUokrPath.Text + @"\" + StaticData.UOKR_CLIENT; prcTostart.StartInfo.WorkingDirectory = this.txtUokrPath.Text; if (!prcTostart.Start()) { MessageBox.Show("Cannot start the client !", Application.ProductName + " Error", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } } else { try { File.Copy(this.txtUokrPath.Text + @"\" + StaticData.UOKR_CLIENT, this.txtUokrPath.Text + @"\" + StaticData.UOKR_PATCHCLIENT, true); } catch (Exception) { MessageBox.Show("Cannot create file " + this.txtUokrPath.Text + @"\" + StaticData.UOKR_PATCHCLIENT + " !", Application.ProductName + " Error", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } try { fsToPatch = File.Open(this.txtUokrPath.Text + @"\" + StaticData.UOKR_PATCHCLIENT, FileMode.Open, FileAccess.ReadWrite); } catch (Exception) { MessageBox.Show("Cannot open file " + this.txtUokrPath.Text + @"\" + StaticData.UOKR_PATCHCLIENT + " !", Application.ProductName + " Error", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } } Stream strGeneric; if (bPatch) { strGeneric = fsToPatch; } else { strGeneric = new ProcessStream((IntPtr)prcTostart.Id); } for (iResultIPId = 0; iResultIPId < StaticData.UOKR_IPDATA_VERSION; iResultIPId++) { List<byte[]> listBytes = StaticData.GetIPData(iResultIPId); foreach (byte[] bIpData in listBytes) { iResultIP.Add(Utility.Search(strGeneric, bIpData, bPatch)); } if (ListValidValues(iResultIP)) { break; } else { iResultIP.Clear(); } } if (!ListValidValues(iResultIP)) { strGeneric.Close(); if (!bPatch) prcTostart.Kill(); MessageBox.Show("Cannot patch IP on the client !", Application.ProductName + " Error", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } if ((encType == ENCRYPTION_PATCH_TYPE.Login) || (encType == ENCRYPTION_PATCH_TYPE.Both)) { for (iResultEncLoginId = 0; iResultEncLoginId < StaticData.UOKR_LOGDATA_VERSION; iResultEncLoginId++) { iResultEncLogin = Utility.Search(strGeneric, StaticData.GetLoginData(iResultEncLoginId), bPatch); if (iResultEncLogin != 0) break; } if (iResultEncLogin == 0) { strGeneric.Close(); if (!bPatch) prcTostart.Kill(); MessageBox.Show("Cannot patch Login Encryption on the client !", Application.ProductName + " Error", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } } if ((encType == ENCRYPTION_PATCH_TYPE.Game) || (encType == ENCRYPTION_PATCH_TYPE.Both)) { iResultEncGame = Utility.Search(strGeneric, StaticData.UOKR_ENCDATA, bPatch); if (iResultEncGame == 0) { strGeneric.Close(); if (!bPatch) prcTostart.Kill(); MessageBox.Show("Cannot patch Game Encryption on the client !", Application.ProductName + " Error", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } } if (bPatch) { strGeneric.Seek(0, SeekOrigin.Begin); } List<byte[]> newDataIp = StaticData.GetPatchedIPData(iResultIPId, caTouse.ipHost, caTouse.uPort); for(int i = 0; i < newDataIp.Count; i++) { strGeneric.Seek(iResultIP[i], SeekOrigin.Begin); strGeneric.Write(newDataIp[i], 0, newDataIp[i].Length); } if ((encType == ENCRYPTION_PATCH_TYPE.Login) || (encType == ENCRYPTION_PATCH_TYPE.Both)) { byte[] encLoginToPatch = StaticData.GetPatchedLoginData(iResultEncLoginId); strGeneric.Seek(iResultEncLogin, SeekOrigin.Begin); strGeneric.Write(encLoginToPatch, 0, encLoginToPatch.Length); } if ((encType == ENCRYPTION_PATCH_TYPE.Game) || (encType == ENCRYPTION_PATCH_TYPE.Both)) { strGeneric.Seek(iResultEncGame, SeekOrigin.Begin); strGeneric.Write(StaticData.UOKR_ENCPATCHDATA, 0, StaticData.UOKR_ENCPATCHDATA.Length); } strGeneric.Close(); if (!bPatch) { System.Threading.Thread.Sleep(10); Close(); } else { this.ckbRemind.Checked = false; MessageBox.Show("Client " + this.txtUokrPath.Text + @"\" + StaticData.UOKR_PATCHCLIENT + " succesfully patched.", "Patch Done", MessageBoxButtons.OK, MessageBoxIcon.Information); } }
private ConfigArgs ParseConfig() { if (nudPort.Value <= 0 || nudPort.Value > 65535) { MessageBox.Show("Invalid port: " + nudPort.Value.ToString() + " !", Application.ProductName + " Error", MessageBoxButtons.OK, MessageBoxIcon.Error); return null; } IPHostEntry host; try { host = Dns.GetHostEntry(txtIptopatch.Text.Trim()); } catch (Exception) { MessageBox.Show("Invalid ip: " + txtIptopatch.Text + " !", Application.ProductName + " Error", MessageBoxButtons.OK, MessageBoxIcon.Error); return null; } IPAddress ip = null; for (int iAddr = 0; iAddr <= host.AddressList.Length; iAddr++) { if ( host.AddressList[iAddr].AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork ) { ip = host.AddressList[iAddr]; break; } } if (ip == null) { MessageBox.Show("Cannot find a valid IPV4 ip for: " + txtIptopatch.Text + " !", Application.ProductName + " Error", MessageBoxButtons.OK, MessageBoxIcon.Error); return null; } if (this.ckbRemind.Checked) { if (this.txtIptopatch.Text.Length > 0) { using (StreamWriter srRead = File.CreateText(StaticData.LAUNCH_CFG)) { srRead.Write(this.txtIptopatch.Text.Trim() + "," + this.nudPort.Value.ToString() + "," + this.cmbEncryption.SelectedIndex.ToString()); } } } ConfigArgs caTouse = new ConfigArgs(); caTouse.uPort = (uint)this.nudPort.Value; caTouse.ipHost = ip; caTouse.encType = (ENCRYPTION_PATCH_TYPE)this.cmbEncryption.SelectedIndex; return caTouse; }
private void PathOrLaunch(bool bPatch, ConfigArgs caTouse) { if (caTouse == null) { return; } int iResultEncLogin = 0; int iResultEncLoginId = 0; // ---------------------- int iResultEncGame = 0; // ---------------------- List <int> iResultIP = new List <int>(); int iResultIPId = 0; // ---------------------- ENCRYPTION_PATCH_TYPE encType = caTouse.encType; // !bPatch Process prcTostart = null; // bPatch FileStream fsToPatch = null; if (!bPatch) { prcTostart = new Process(); prcTostart.StartInfo.FileName = this.txtUokrPath.Text + @"\" + StaticData.UOKR_CLIENT; prcTostart.StartInfo.WorkingDirectory = this.txtUokrPath.Text; if (!prcTostart.Start()) { MessageBox.Show("Cannot start the client !", Application.ProductName + " Error", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } } else { try { File.Copy(this.txtUokrPath.Text + @"\" + StaticData.UOKR_CLIENT, this.txtUokrPath.Text + @"\" + StaticData.UOKR_PATCHCLIENT, true); } catch (Exception) { MessageBox.Show("Cannot create file " + this.txtUokrPath.Text + @"\" + StaticData.UOKR_PATCHCLIENT + " !", Application.ProductName + " Error", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } try { fsToPatch = File.Open(this.txtUokrPath.Text + @"\" + StaticData.UOKR_PATCHCLIENT, FileMode.Open, FileAccess.ReadWrite); } catch (Exception) { MessageBox.Show("Cannot open file " + this.txtUokrPath.Text + @"\" + StaticData.UOKR_PATCHCLIENT + " !", Application.ProductName + " Error", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } } Stream strGeneric; if (bPatch) { strGeneric = fsToPatch; } else { strGeneric = new ProcessStream((IntPtr)prcTostart.Id); } for (iResultIPId = 0; iResultIPId < StaticData.UOKR_IPDATA_VERSION; iResultIPId++) { List <byte[]> listBytes = StaticData.GetIPData(iResultIPId); foreach (byte[] bIpData in listBytes) { iResultIP.Add(Utility.Search(strGeneric, bIpData, bPatch)); } if (ListValidValues(iResultIP)) { break; } else { iResultIP.Clear(); } } if (!ListValidValues(iResultIP)) { strGeneric.Close(); if (!bPatch) { prcTostart.Kill(); } MessageBox.Show("Cannot patch IP on the client !", Application.ProductName + " Error", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } if ((encType == ENCRYPTION_PATCH_TYPE.Login) || (encType == ENCRYPTION_PATCH_TYPE.Both)) { for (iResultEncLoginId = 0; iResultEncLoginId < StaticData.UOKR_LOGDATA_VERSION; iResultEncLoginId++) { iResultEncLogin = Utility.Search(strGeneric, StaticData.GetLoginData(iResultEncLoginId), bPatch); if (iResultEncLogin != 0) { break; } } if (iResultEncLogin == 0) { strGeneric.Close(); if (!bPatch) { prcTostart.Kill(); } MessageBox.Show("Cannot patch Login Encryption on the client !", Application.ProductName + " Error", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } } if ((encType == ENCRYPTION_PATCH_TYPE.Game) || (encType == ENCRYPTION_PATCH_TYPE.Both)) { iResultEncGame = Utility.Search(strGeneric, StaticData.UOKR_ENCDATA, bPatch); if (iResultEncGame == 0) { strGeneric.Close(); if (!bPatch) { prcTostart.Kill(); } MessageBox.Show("Cannot patch Game Encryption on the client !", Application.ProductName + " Error", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } } if (bPatch) { strGeneric.Seek(0, SeekOrigin.Begin); } List <byte[]> newDataIp = StaticData.GetPatchedIPData(iResultIPId, caTouse.ipHost, caTouse.uPort); for (int i = 0; i < newDataIp.Count; i++) { strGeneric.Seek(iResultIP[i], SeekOrigin.Begin); strGeneric.Write(newDataIp[i], 0, newDataIp[i].Length); } if ((encType == ENCRYPTION_PATCH_TYPE.Login) || (encType == ENCRYPTION_PATCH_TYPE.Both)) { byte[] encLoginToPatch = StaticData.GetPatchedLoginData(iResultEncLoginId); strGeneric.Seek(iResultEncLogin, SeekOrigin.Begin); strGeneric.Write(encLoginToPatch, 0, encLoginToPatch.Length); } if ((encType == ENCRYPTION_PATCH_TYPE.Game) || (encType == ENCRYPTION_PATCH_TYPE.Both)) { strGeneric.Seek(iResultEncGame, SeekOrigin.Begin); strGeneric.Write(StaticData.UOKR_ENCPATCHDATA, 0, StaticData.UOKR_ENCPATCHDATA.Length); } strGeneric.Close(); if (!bPatch) { System.Threading.Thread.Sleep(10); Close(); } else { this.ckbRemind.Checked = false; MessageBox.Show("Client " + this.txtUokrPath.Text + @"\" + StaticData.UOKR_PATCHCLIENT + " succesfully patched.", "Patch Done", MessageBoxButtons.OK, MessageBoxIcon.Information); } }