private void 修改属性() { //声明变量 int index = -1, index2, t_level, i = 0; uint t_add, t_pet, t_skilladd = 0; //ListView_SkillProperties_Edit中有项目才进行修改 if (this.ListView_SkillProperties_Edit.Items.Count > 0) { //循环项目数次 for (i = 0; i < this.ListView_SkillProperties_Edit.Items.Count; i++) { index = -1; index2 = 0; index2 = this.ListView_SkillProperties_Edit.Items[i].SubItems[0].Text.IndexOf("+", index + 1); //公式第一个+号位置 t_pet = Convert.ToUInt32(this.ListView_SkillProperties_Edit.Items[i].SubItems[0].Text.Substring(index + 1, index2 - index - 1)); //技能偏移 t_skilladd = (uint)ReadWriteCtr.ReadMemInt(全局变量.进程ID, (uint)ReadWriteCtr.ReadMemInt(全局变量.进程ID, 基址.人物基址) + t_pet); //技能地址 t_level = EncDec.Decrypt(全局变量.进程ID, (uint)t_skilladd + 基址.技能等级偏移, 基址.解密基址); //技能等级 Thread.Sleep(30); //延迟30毫秒 t_add = (uint)ReadWriteCtr.ReadMemCode(全局变量.进程ID, Convert.ToString(基址.人物基址) + "+" + this.ListView_SkillProperties_Edit.Items[i].SubItems[0].Text); //加密 EncDec.Encryption(全局变量.进程ID, (uint)(t_add + 8 * (t_level - 1)), TransCtr.IntToFloat(this.ListView_SkillProperties_Edit.Items[i].SubItems[1].Text), 基址.解密基址); Thread.Sleep(30); //延迟30毫秒进入下一循环 } } else { MessageBox.Show("List中没有数据", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error); } }
//读取职业技能被单击 private void button3_Click(object sender, EventArgs e) { uint i = 0x4300, 技能地址; string 技能名称 = ""; int 技能等级; string 总技能 = ""; ListView_Skill.Items.Clear(); while (i <= 0x5000) { 技能地址 = (uint)ReadWriteCtr.ReadMemInt(全局变量.进程ID, (uint)ReadWriteCtr.ReadMemInt(全局变量.进程ID, 基址.人物基址) + i); 技能等级 = EncDec.Decrypt(全局变量.进程ID, 技能地址 + 基址.技能等级偏移, 基址.解密基址); if (技能等级 >= 0 && 技能等级 < 100) { 技能名称 = TransCtr.UnicodeToAnsi(ReadWriteCtr.ReadMemByteArray(全局变量.进程ID, (uint)ReadWriteCtr.ReadMemInt(全局变量.进程ID, 技能地址 + 基址.技能名称偏移), 50)); if (技能名称.Length > 1 && 技能名称.IndexOf("?") == -1 && 技能名称.IndexOf("不使用") == -1 && 总技能.IndexOf(技能名称) == -1 && 技能等级 > 0) { this.ListView_Skill.Update(); ListViewItem lvi = this.ListView_Skill.Items.Add(Convert.ToString(i)); lvi.SubItems.Add(技能名称); lvi.SubItems.Add(Convert.ToString(技能等级)); this.ListView_Skill.EndUpdate(); 总技能 += 技能名称; } } i += 4; } }
public static void 一键评分() { int 地址; 地址 = ReadWriteCtr.ReadMemInt(全局变量.进程ID, 基址.评分基址); EncDec.超级加密(地址 + (int)基址.评分偏移, 5201314); }
/// <summary> /// 浮点到整数,照搬E语言 /// </summary> /// <param name="Value">待转换浮点数 整数型</param> /// <returns>返回转换后的值 string型</returns> public static string FloatToInt(int Value) { int c = Value; byte[] buff = new byte[4]; unsafe { int *p = &c; if (c > 10000) { buff = ReadWriteCtr.ReadMemByteArray(-1, (uint)p, 4); if (BitConverter.ToInt32(buff, 0) == 0) { return("-1"); } else { return(Convert.ToString(BitConverter.ToSingle(buff, 0))); } } else { return(Convert.ToString(c)); } } }
public static void 技能无CD() { uint i = 0x4300, 技能地址; string 技能名称 = ""; int 技能等级; string 总技能 = ""; while (i <= 0x5000) { 技能地址 = (uint)ReadWriteCtr.ReadMemInt(全局变量.进程ID, (uint)ReadWriteCtr.ReadMemInt(全局变量.进程ID, 基址.人物基址) + i); 技能等级 = EncDec.Decrypt(全局变量.进程ID, 技能地址 + 基址.技能等级偏移, 基址.解密基址); if (技能等级 >= 0 && 技能等级 < 100) { 技能名称 = TransCtr.UnicodeToAnsi(ReadWriteCtr.ReadMemByteArray(全局变量.进程ID, (uint)ReadWriteCtr.ReadMemInt(全局变量.进程ID, 技能地址 + 基址.技能名称偏移), 50)); if (技能名称.Length > 1 && 技能名称.IndexOf("?") == -1 && 技能名称.IndexOf("不使用") == -1 && 总技能.IndexOf(技能名称) == -1 && 技能等级 > 0) { EncDec.超级加密((int)(ReadWriteCtr.ReadMemInt(全局变量.进程ID, (uint)技能地址 + 基址.技能冷却1偏移) + 8 * (uint)(技能等级 - 1)), 1000); EncDec.超级加密((int)(ReadWriteCtr.ReadMemInt(全局变量.进程ID, (uint)技能地址 + 基址.技能冷却2偏移) + 8 * (uint)(技能等级 - 1)), 1000); EncDec.超级加密((int)(ReadWriteCtr.ReadMemInt(全局变量.进程ID, (uint)技能地址 + 基址.技能冷却3偏移) + 8 * (uint)(技能等级 - 1)), 1000); EncDec.超级加密((int)(ReadWriteCtr.ReadMemInt(全局变量.进程ID, (uint)技能地址 + 基址.技能冷却4偏移) + 8 * (uint)(技能等级 - 1)), 1000); EncDec.超级加密((int)(ReadWriteCtr.ReadMemInt(全局变量.进程ID, (uint)技能地址 + 基址.技能冷却5偏移) + 8 * (uint)(技能等级 - 1)), 1000); } } i += 4; } }
private static int 判断_游戏状态() { int i; i = ReadWriteCtr.ReadMemInt(全局变量.进程ID, 基址.游戏状态); return(i); }
public static void 超级三速() { int i; i = ReadWriteCtr.ReadMemInt(全局变量.进程ID, (uint)ReadWriteCtr.ReadMemInt(全局变量.进程ID, 基址.人物基址) + 基址.衣偏移); EncDec.超级加密(i + (int)基址.攻速偏移, 1500); EncDec.超级加密(i + (int)基址.释放偏移, 1500); EncDec.超级加密(i + (int)基址.移速偏移, 3000); //MessageBox.Show(Convert.ToString(i), "提示", MessageBoxButtons.OK, MessageBoxIcon.Error); }
/// <summary> /// 解密,照搬E语言 /// </summary> /// <param name="ProcessID">进程ID</param> /// <param name="Address">地址</param> /// <param name="DecryptionAdd">解密基址</param> /// <returns>返回解密值,失败返回0</returns> public static int Decrypt(int ProcessID, uint Address, uint DecryptionAdd) { //声明变量 int eax, edx, esi = 0; eax = ReadWriteCtr.ReadMemInt(ProcessID, Address); esi = ReadWriteCtr.ReadMemInt(ProcessID, DecryptionAdd); edx = eax >> 16; edx = ReadWriteCtr.ReadMemInt(ProcessID, (uint)(esi + edx * 4 + 36)); eax = eax & 65535; eax = ReadWriteCtr.ReadMemInt(ProcessID, (uint)(edx + eax * 4 + 8468)); edx = eax & 65535; esi = edx << 16; esi = esi | edx; esi = esi ^ ReadWriteCtr.ReadMemInt(ProcessID, Address + 4); return(esi); }
/// <summary> /// 加密,照搬E语言 /// </summary> /// <param name="ProcessID">进程ID</param> /// <param name="Address">地址</param> /// <param name="Data">加密数据</param> /// <param name="DecryptionAdd">解密基址</param> public static void Encryption(int ProcessID, uint Address, int Data, uint DecryptionAdd) { //声明变量 int encryptionid, offsetpara, offsetadd, data, tailofadd, decryptadd, ax, si = 0; encryptionid = ReadWriteCtr.ReadMemInt(ProcessID, Address); decryptadd = ReadWriteCtr.ReadMemInt(ProcessID, DecryptionAdd); offsetpara = ReadWriteCtr.ReadMemInt(ProcessID, (uint)(decryptadd + (encryptionid >> 16) * 4 + 36)); offsetadd = offsetpara + (encryptionid & 65535) * 4 + 8468; offsetpara = ReadWriteCtr.ReadMemInt(ProcessID, (uint)offsetadd); data = offsetpara & 65535; data = data + (data << 16); ax = offsetpara & 65535; tailofadd = (int)Address & 15; switch (tailofadd) { case 0: si = Data >> 16; si = si - ax; si = si + Data; break; case 4: si = (Data & 65535) - (Data >> 16); break; case 8: si = Data >> 16; si = si * Data; break; case 12: si = Data >> 16; si = si + Data; si = si + ax; break; default: return; } ax = si ^ ax; byte[] temp = BitConverter.GetBytes(ax); ReadWriteCtr.WriteMemByteArray(ProcessID, (uint)(offsetadd + 2), temp, temp.Length); ReadWriteCtr.WriteMemInt(ProcessID, Address + 4, data ^ Data); }
/// <summary> /// Timer2:全屏吸物 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> public static void 全屏吸物() { int 人物地址; int 地图地址; int 对象数量; int Time = 0; int OBJ数据; int OBJ类型; int x; int y; int z; if (判断_游戏状态() == 3) { ReadWriteCtr.WriteMemInt(全局变量.进程ID, 基址.自动捡物, 1300955444); 人物地址 = ReadWriteCtr.ReadMemInt(全局变量.进程ID, 基址.人物基址); 地图地址 = ReadWriteCtr.ReadMemInt(全局变量.进程ID, (uint)(人物地址) + 基址.地图偏移); 对象数量 = (ReadWriteCtr.ReadMemInt(全局变量.进程ID, (uint)(地图地址 + 196)) - ReadWriteCtr.ReadMemInt(全局变量.进程ID, (uint)(地图地址 + 192))) / 4; for (int i = 1; i <= 对象数量; i++) { OBJ数据 = ReadWriteCtr.ReadMemInt(全局变量.进程ID, (uint)ReadWriteCtr.ReadMemInt(全局变量.进程ID, (uint)(地图地址 + 192)) + (uint)Time); Time = Time + 4; OBJ类型 = ReadWriteCtr.ReadMemInt(全局变量.进程ID, (uint)(OBJ数据 + 基址.类型偏移)); if (OBJ类型 == 289) { x = ReadWriteCtr.ReadMemInt(全局变量.进程ID, (uint)ReadWriteCtr.ReadMemInt(全局变量.进程ID, (uint)(人物地址 + 488)) + 0); y = ReadWriteCtr.ReadMemInt(全局变量.进程ID, (uint)ReadWriteCtr.ReadMemInt(全局变量.进程ID, (uint)(人物地址 + 488)) + 4); ReadWriteCtr.WriteMemInt(全局变量.进程ID, (uint)ReadWriteCtr.ReadMemInt(全局变量.进程ID, (uint)(OBJ数据 + 200)) + 16, x); ReadWriteCtr.WriteMemInt(全局变量.进程ID, (uint)ReadWriteCtr.ReadMemInt(全局变量.进程ID, (uint)(OBJ数据 + 200)) + 20, y); } } } else { return; } ReadWriteCtr.WriteMemInt(全局变量.进程ID, 基址.自动捡物, 1300959860); }
//listview_skill事件被双击 private void ListView_Skill_MouseDoubleClick(object sender, MouseEventArgs e) { int 技能地址1, 技能等级, 技能CD, 技能数据; uint i1, i2, i3, i4, i5, 技能地址2; string 总技能公式 = "", 技能数据2 = ""; //int 技能等级代码; 全局变量.技能名 = this.ListView_Skill.SelectedItems[0].SubItems[1].Text; 技能地址1 = ReadWriteCtr.ReadMemInt(全局变量.进程ID, (uint)ReadWriteCtr.ReadMemInt(全局变量.进程ID, 基址.人物基址) + Convert.ToUInt32(this.ListView_Skill.SelectedItems[0].Text)); 技能等级 = EncDec.Decrypt(全局变量.进程ID, (uint)技能地址1 + 基址.技能等级偏移, 基址.解密基址); this.ListView_SkillProperties.Items.Clear(); //清空ListView_SkillProperties内容 技能CD = EncDec.Decrypt(全局变量.进程ID, (uint)ReadWriteCtr.ReadMemInt(全局变量.进程ID, (uint)技能地址1 + 基址.技能冷却1偏移) + 8 * (uint)(技能等级 - 1), 基址.解密基址) / 1000; label1.Text = "当前技能cd为:" + 技能CD + "秒"; //第一层遍历 i1 = 0; while (i1 < 13) { 技能地址2 = (uint)Math.Abs(ReadWriteCtr.ReadMemInt(全局变量.进程ID, (uint)(ReadWriteCtr.ReadMemInt(全局变量.进程ID, (uint)(ReadWriteCtr.ReadMemInt(全局变量.进程ID, (uint)技能地址1 + 基址.超级技能偏移)) + i1)) + 20)); if (总技能公式.IndexOf(Convert.ToString(技能地址2)) == -1 && 技能地址2 > 1000000000) { 技能数据 = EncDec.Decrypt(全局变量.进程ID, (uint)(技能地址2 + 8 * (技能等级 - 1)), 基址.解密基址); if (技能数据 > 1) { 技能数据2 = TransCtr.FloatToInt(技能数据); this.ListView_SkillProperties.Update(); ListViewItem lvi = this.ListView_SkillProperties.Items.Add(技能数据2); //liseview添加项 lvi.SubItems.Add(this.ListView_Skill.SelectedItems[0].SubItems[0].Text + "+" + Convert.ToString(基址.超级技能偏移) + "+" + Convert.ToString(i1) + "+20"); //添加次级项 lvi.SubItems.Add(Convert.ToString(技能地址2)); this.ListView_SkillProperties.EndUpdate(); 总技能公式 = 总技能公式 + " " + Convert.ToString(技能地址2); } } i1 += 4; } //第二层遍历 i1 = 0; while (i1 < 13) { i2 = 0; while (i2 < 13) { 技能地址2 = (uint)Math.Abs(ReadWriteCtr.ReadMemInt(全局变量.进程ID, (uint)(ReadWriteCtr.ReadMemInt(全局变量.进程ID, (uint)(ReadWriteCtr.ReadMemInt(全局变量.进程ID, (uint)(ReadWriteCtr.ReadMemInt(全局变量.进程ID, (uint)技能地址1 + 基址.超级技能偏移)) + i1)) + i2)) + 20)); if (总技能公式.IndexOf(Convert.ToString(技能地址2)) == -1 && 技能地址2 > 10000000) { 技能数据 = EncDec.Decrypt(全局变量.进程ID, (uint)(技能地址2 + 8 * (技能等级 - 1)), 基址.解密基址); if (技能数据 > 1) { 技能数据2 = TransCtr.FloatToInt(技能数据); this.ListView_SkillProperties.Update(); ListViewItem lvi = this.ListView_SkillProperties.Items.Add(技能数据2); //liseview添加项 lvi.SubItems.Add(this.ListView_Skill.SelectedItems[0].SubItems[0].Text + "+" + Convert.ToString(基址.超级技能偏移) + "+" + Convert.ToString(i1) + "+" + Convert.ToString(i2) + "+20"); //添加次级项 lvi.SubItems.Add(Convert.ToString(技能地址2)); this.ListView_SkillProperties.EndUpdate(); 总技能公式 = 总技能公式 + " " + Convert.ToString(技能地址2); } } i2 += 4; } i1 += 4; } //第三层遍历 i1 = 0; while (i1 < 13) { i2 = 0; while (i2 < 13) { i3 = 0; while (i3 < 13) { 技能地址2 = (uint)Math.Abs(ReadWriteCtr.ReadMemInt(全局变量.进程ID, (uint)(ReadWriteCtr.ReadMemInt(全局变量.进程ID, (uint)(ReadWriteCtr.ReadMemInt(全局变量.进程ID, (uint)(ReadWriteCtr.ReadMemInt(全局变量.进程ID, (uint)(ReadWriteCtr.ReadMemInt(全局变量.进程ID, (uint)技能地址1 + 基址.超级技能偏移)) + i1)) + i2)) + i3)) + 20)); if (总技能公式.IndexOf(Convert.ToString(技能地址2)) == -1 && 技能地址2 > 10000000) { 技能数据 = EncDec.Decrypt(全局变量.进程ID, (uint)(技能地址2 + 8 * (技能等级 - 1)), 基址.解密基址); if (技能数据 > 1) { 技能数据2 = TransCtr.FloatToInt(技能数据); this.ListView_SkillProperties.Update(); ListViewItem lvi = this.ListView_SkillProperties.Items.Add(技能数据2); //liseview添加项 lvi.SubItems.Add(this.ListView_Skill.SelectedItems[0].SubItems[0].Text + "+" + Convert.ToString(基址.超级技能偏移) + "+" + Convert.ToString(i1) + "+" + Convert.ToString(i2) + "+" + Convert.ToString(i3) + "+20"); //添加次级项 lvi.SubItems.Add(Convert.ToString(技能地址2)); this.ListView_SkillProperties.EndUpdate(); 总技能公式 = 总技能公式 + " " + Convert.ToString(技能地址2); } } i3 += 4; } i2 += 4; } i1 += 4; } //第四层遍历 i1 = 0; while (i1 < 13) { i2 = 0; while (i2 < 13) { i3 = 0; while (i3 < 13) { i4 = 0; while (i4 < 13) { 技能地址2 = (uint)Math.Abs(ReadWriteCtr.ReadMemInt(全局变量.进程ID, (uint)(ReadWriteCtr.ReadMemInt(全局变量.进程ID, (uint)(ReadWriteCtr.ReadMemInt(全局变量.进程ID, (uint)(ReadWriteCtr.ReadMemInt(全局变量.进程ID, (uint)(ReadWriteCtr.ReadMemInt(全局变量.进程ID, (uint)(ReadWriteCtr.ReadMemInt(全局变量.进程ID, (uint)技能地址1 + 基址.超级技能偏移)) + i1)) + i2)) + i3)) + i4)) + 20)); if (总技能公式.IndexOf(Convert.ToString(技能地址2)) == -1 && 技能地址2 > 10000000) { 技能数据 = EncDec.Decrypt(全局变量.进程ID, (uint)(技能地址2 + 8 * (技能等级 - 1)), 基址.解密基址); if (技能数据 > 1) { 技能数据2 = TransCtr.FloatToInt(技能数据); this.ListView_SkillProperties.Update(); ListViewItem lvi = this.ListView_SkillProperties.Items.Add(技能数据2); //liseview添加项 lvi.SubItems.Add(this.ListView_Skill.SelectedItems[0].SubItems[0].Text + "+" + Convert.ToString(基址.超级技能偏移) + "+" + Convert.ToString(i1) + "+" + Convert.ToString(i2) + "+" + Convert.ToString(i3) + "+" + Convert.ToString(i4) + "+20"); //添加次级项 lvi.SubItems.Add(Convert.ToString(技能地址2)); this.ListView_SkillProperties.EndUpdate(); 总技能公式 = 总技能公式 + " " + Convert.ToString(技能地址2); } } i4 += 4; } i3 += 4; } i2 += 4; } i1 += 4; } //第五层遍历 i1 = 0; while (i1 < 13) { i2 = 0; while (i2 < 13) { i3 = 0; while (i3 < 13) { i4 = 0; while (i4 < 13) { i5 = 0; while (i5 < 13) { 技能地址2 = (uint)Math.Abs(ReadWriteCtr.ReadMemInt(全局变量.进程ID, (uint)(ReadWriteCtr.ReadMemInt(全局变量.进程ID, (uint)(ReadWriteCtr.ReadMemInt(全局变量.进程ID, (uint)(ReadWriteCtr.ReadMemInt(全局变量.进程ID, (uint)(ReadWriteCtr.ReadMemInt(全局变量.进程ID, (uint)(ReadWriteCtr.ReadMemInt(全局变量.进程ID, (uint)(ReadWriteCtr.ReadMemInt(全局变量.进程ID, (uint)技能地址1 + 基址.超级技能偏移)) + i1)) + i2)) + i3)) + i4)) + i5)) + 20)); if (总技能公式.IndexOf(Convert.ToString(技能地址2)) == -1 && 技能地址2 > 10000000) { 技能数据 = EncDec.Decrypt(全局变量.进程ID, (uint)(技能地址2 + 8 * (技能等级 - 1)), 基址.解密基址); if (技能数据 > 1) { 技能数据2 = TransCtr.FloatToInt(技能数据); this.ListView_SkillProperties.Update(); ListViewItem lvi = this.ListView_SkillProperties.Items.Add(技能数据2); //liseview添加项 lvi.SubItems.Add(this.ListView_Skill.SelectedItems[0].SubItems[0].Text + "+" + Convert.ToString(基址.超级技能偏移) + "+" + Convert.ToString(i1) + "+" + Convert.ToString(i2) + "+" + Convert.ToString(i3) + "+" + Convert.ToString(i4) + "+" + Convert.ToString(i5) + "+20"); //添加次级项 lvi.SubItems.Add(Convert.ToString(技能地址2)); this.ListView_SkillProperties.EndUpdate(); 总技能公式 = 总技能公式 + " " + Convert.ToString(技能地址2); } } i5 += 4; } i4 += 4; } i3 += 4; } i2 += 4; } i1 += 4; } }
public static void 超级加密(int Address, int value, int type = 0) { int 加密ID = ReadWriteCtr.ReadMemInt(全局变量.进程ID, (uint)Address); int 偏移参数 = ReadWriteCtr.ReadMemInt(全局变量.进程ID, 基址.解密基址); 偏移参数 = ReadWriteCtr.ReadMemInt(全局变量.进程ID, (uint)(偏移参数 + (加密ID >> 16) * 4 + 36)); int 偏移地址 = 偏移参数 + (加密ID & 65535) * 4 + 8468; 偏移参数 = ReadWriteCtr.ReadMemInt(全局变量.进程ID, (uint)偏移地址); int data = 偏移参数 & 0xffff; data = data + (data << 16); short ax = (short)(偏移参数 & 0xffff); short si = 0; if (type == 0) { int 地址尾 = Address & 15; switch (地址尾) { case 0: si = (short)(value >> 16); si = (short)(si - ax); si = (short)(si + value); break; case 4: si = (short)((value & 0xFFFF) - (value >> 16));; break; case 8: si = (short)(value >> 16); si = (short)(si * value); break; case 12: si = (short)(value >> 16); si = (short)(si + value); si = (short)(si + ax); break; default: break; } } else if (type == 1) { si = (short)(value & 16); } else if (type == 2) { si = (short)value; } else if (type == 3) { si = (short)(value >> 16); si += (short)value; } else if (type == 4) { si = (short)(value >> 16); si = (short)(si + value & 0xFFFF); } ax = (short)(si ^ ax); byte[] temp = BitConverter.GetBytes(ax); ReadWriteCtr.WriteMemByteArray(全局变量.进程ID, (uint)(偏移地址 + 2), temp, temp.Length); data = data ^ value; int a = Address + (type != 4 ? 4 : 8); ReadWriteCtr.WriteMemInt(全局变量.进程ID, (uint)a, data); }