private void PointerCheckerPointer_Tick(object sender, EventArgs e) { if (!Pointer) { return; } try { ValueType valueType = MemoryHelper.GetValueTypeByString(type_box.Text); long base_address = 0; for (int i = 0; i < offset_box_list.Count; ++i) { long address = long.Parse(offset_box_list[i].Text, System.Globalization.NumberStyles.HexNumber); if (i != offset_box_list.Count - 1) { byte[] next_address = MemoryHelper.ReadMemory((ulong)(address + base_address), 8); base_address = BitConverter.ToInt64(next_address, 0); offset_label_list[i].Text = base_address.ToString("X"); } else { MemoryHelper.InitMemoryHandler(valueType, CompareType.NONE, true); byte[] data = MemoryHelper.ReadMemory((ulong)(address + base_address), MemoryHelper.Length); offset_label_list[i].Text = MemoryHelper.BytesToString(data); } } } catch { } }
public override bool Parse(string[] cheat_elements, ref int start_idx, bool simple_format) { ValueType = MemoryHelper.GetValueTypeByString(cheat_elements[start_idx + DATA_TYPE]); data = MemoryHelper.StringToBytes(cheat_elements[start_idx + DATA]); if (ValueType == ValueType.HEX_TYPE && data.Length > 0) { MemoryHelper.Length = data.Length; } start_idx += 2; return(true); }
private void InitCompareTypeListOfFirstScan() { string selected_type = (string)cbCompareTypeList.SelectedItem; cbCompareTypeList.Items.Clear(); switch (MemoryHelper.GetValueTypeByString((string)cbValueTypeList.SelectedItem)) { case ValueType.ULONG_TYPE: case ValueType.UINT_TYPE: case ValueType.USHORT_TYPE: case ValueType.BYTE_TYPE: cbHex.Enabled = true; cbCompareTypeList.Items.AddRange(SEARCH_BY_BYTES_FIRST); break; case ValueType.DOUBLE_TYPE: case ValueType.FLOAT_TYPE: cbHex.Enabled = true; cbCompareTypeList.Items.AddRange(SEARCH_BY_FLOAT_FIRST); break; case ValueType.HEX_TYPE: case ValueType.STRING_TYPE: cbHex.Enabled = false; cbHex.Checked = false; cbCompareTypeList.Items.AddRange(SEARCH_BY_HEX); break; default: throw new Exception("GetStringOfValueType!!!"); } int list_idx = 0; int list_count = cbCompareTypeList.Items.Count; for (; list_idx < list_count; ++list_idx) { if ((string)cbCompareTypeList.Items[list_idx] == selected_type) { break; } } cbCompareTypeList.SelectedIndex = list_idx == list_count ? 0 : list_idx; }
void new_data_cheat(string address_str, string type, string value, string section, string flag, string description) { try { ulong address = ulong.Parse(address_str, NumberStyles.HexNumber); int sectionID = processManager.GetMappedSectionID(address); if (sectionID == -1) { MessageBox.Show("Address is out of range!"); return; } for (int i = 0; i < cheatList.Count; ++i) { if (cheatList[i].Address == address_str) { return; } } ulong flag_u = ulong.Parse(flag, NumberStyles.HexNumber); bool lock_ = (flag_u & CONSTANT.SAVE_FLAG_LOCK) == CONSTANT.SAVE_FLAG_LOCK ? true : false; ValueType valueType = MemoryHelper.GetValueTypeByString(type); CheatType cheatType = Cheat.GetCheatTypeByValueType(valueType); if (cheatType == CheatType.DATA_TYPE) { DataCheat dataCheat = new DataCheat(processManager, address_str, sectionID, value, lock_, valueType, description); add_new_row_of_cheat_list_view(dataCheat, sectionID); cheatList.Add(dataCheat); } else if (cheatType == CheatType.HEX_TYPE) { HexCheat hexCheat = new HexCheat(processManager, address_str, sectionID, value, lock_, valueType, description); add_new_row_of_cheat_list_view(hexCheat, sectionID); cheatList.Add(hexCheat); } } catch (Exception exception) { MessageBox.Show(exception.Message, exception.Source, MessageBoxButtons.OK, MessageBoxIcon.Hand); } }
public void new_pointer_cheat(ulong address, List <long> offset_list, string type, string data, bool lock_, string description) { try { int sectionID = processManager.MappedSectionList.GetMappedSectionID(address); if (sectionID == -1) { MessageBox.Show("Address is out of range!"); return; } if (cheatList.Exist(address)) { return; } ValueType valueType = MemoryHelper.GetValueTypeByString(type); DataCheatOperator sourceOperator = new DataCheatOperator(data, valueType, processManager); AddressCheatOperator addressCheatOperator = new AddressCheatOperator(address, processManager); List <OffsetCheatOperator> offsetOperators = new List <OffsetCheatOperator>(); for (int i = 0; i < offset_list.Count; ++i) { OffsetCheatOperator offsetOperator = new OffsetCheatOperator(offset_list[i], ValueType.ULONG_TYPE, processManager); offsetOperators.Add(offsetOperator); } SimplePointerCheatOperator destOperator = new SimplePointerCheatOperator(addressCheatOperator, offsetOperators, valueType, processManager); SimplePointerCheat simplePointerCheat = new SimplePointerCheat(sourceOperator, destOperator, lock_, description, processManager); add_new_row_to_cheat_list_view(simplePointerCheat); cheatList.Add(simplePointerCheat); } catch (Exception exception) { MessageBox.Show(exception.Message, exception.Source, MessageBoxButtons.OK, MessageBoxIcon.Hand); } }
public override bool Parse(string[] cheat_elements, ref int start_idx, bool simple_format) { ValueType = MemoryHelper.GetValueTypeByString(cheat_elements[start_idx + 0]); string pointer_str = cheat_elements[start_idx + 1]; int pointer_idx = 0; string[] pointer_list = pointer_str.Split('+'); Address.Parse(pointer_list, ref pointer_idx, simple_format); for (int i = 1; i < pointer_list.Length; ++i) { OffsetCheatOperator offset = new OffsetCheatOperator(ProcessManager); offset.Parse(pointer_list, ref pointer_idx, simple_format); Offsets.Add(offset); } start_idx += 2; return(true); }