Esempio n. 1
0
        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
            {
            }
        }
Esempio n. 2
0
 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);
 }
Esempio n. 3
0
        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;
        }
Esempio n. 4
0
        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);
            }
        }
Esempio n. 5
0
        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);
            }
        }
Esempio n. 6
0
        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);
        }