Всем привет, довольно часто задают вопросы: "Как в CиШарп читать/писать память клиента", и так далее.
Сегодня мы будем пробывать написать простенький трейнер для "Сапёр" на XP SP3, не забываем что на другой OC оффсеты другие .
Что нам понадобиться:
1. Cheat Engine (для поиска оффсетов).
2. Компилятор кода, я использую MVS 2008.
3. И как всегда руки, мозг и точные действия по гайду.
4. Библиотека VAMemory, СКАЧАТЬ
И так, поехали...
1. Для начала создадим проэкт, обязательно поставить .net framework 3.5 для будущего проэкта.
[Ссылки могут видеть только зарегистрированные пользователи. ]
2. Добавим .dll VAMemory.
[Ссылки могут видеть только зарегистрированные пользователи. ]
[Ссылки могут видеть только зарегистрированные пользователи. ]
3. Запускаем CE, Сапёра, в CE процесс сапёр, ищем текущее значение флажков, юзаем 1 флажок, отсеиваем в CE и так пока не получим 1 значение.
[Ссылки могут видеть только зарегистрированные пользователи. ]
4. Теперь добавим 2 лабела и 1 кнопку
[Ссылки могут видеть только зарегистрированные пользователи. ]
5. Теперь после
Код:
public partial class ИМЯВАШЕЙФОРМЫ : Form
{
Добавим:
Код:
VAMemory VAM;
6. На кнопку "обновить" кинем код:
Код:
VAM = new VAMemory("winmine"); //Имя процесса, без .exe!
label2.Text = (Convert.ToString(VAM.ReadByte((IntPtr)0x01005194))); //label2 принимает значение по адрессу 01005194 не забываем про 0x********!
адрес что идёт после 0x, можно узнать в CE
[Ссылки могут видеть только зарегистрированные пользователи. ]
7. Запускаем, видим профит
[Ссылки могут видеть только зарегистрированные пользователи. ]
8. Теперь научимся редактировать, для этого кинем 1 текст бокс и 1 буттон
и на буттон кинем код:
Код:
VAM = new VAMemory("winmine"); // Имя процесса, без .exe!
VAM.WriteByte((IntPtr)0x01005194, byte.Parse(textBox1.Text.ToString())); // Изменяем значение по адресу 01005194, не забываем про 0x********!
9. Запускаем, вводим желаемое количество и жмём буттон
[Ссылки могут видеть только зарегистрированные пользователи. ]
10. Спасибо за внимание!
Учтите!На разных Осях разные адреса!
А точнее, на 7ке например Сапер отличается чем на ХП, поэтому адреса будут разные!
С ув, обжа!
________________ Полные взломы игрулек VK:
Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий). | Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий). | Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий). | Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий). (?fix) | [HOT-NEW] Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
вот какраз самое важное и не выложил...
а самое важное это исходник VAMemory.dll, а в уроке описан только прототип функции из этой длл...
если есть исходник, плиз, кинь в личку или сюда ссылку
Может кому поможет, видео версия данного урока.
В первом видео описывается как искать значения:
[Ссылки могут видеть только зарегистрированные пользователи. ]
Во втором, собственно, сам процесс программирования, разжеванный до нельзя с описанием всех шагов, правда на английском:
[Ссылки могут видеть только зарегистрированные пользователи. ]
Думаю даже у начинающих не возникнет вопросов.
Добавлено через 28 минут VolniyStalker, прототипы функций действительно можно найти, но ведь я спрашивал об исходнике. Если ты даш ссылку именно на исходник (!), то с меня 3 спасибки.
Последний раз редактировалось dickens011; 23.01.2011 в 20:32.
Причина: Добавлено сообщение
У меня проблема решил сделать на Darksiders трейнер на деньги неполучилось , а тоесть информацию при обновлении выдает ложную у меня к примеру там 100000000
мне выдает 123 вообщем как мне сделать это , если значение байта Float.
Жду видео туториала или простеньгого обьяснения "с меня СПАСИБО"
________________
Палки палки палочки Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
________________
Палки палки палочки Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
Как сделать так чтобы на кнопку нажмая менялось на определённое число?
________________
Палки палки палочки Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
У меня проблема решил сделать на Darksiders трейнер на деньги неполучилось , а тоесть информацию при обновлении выдает ложную у меня к примеру там 100000000
мне выдает 123 вообщем как мне сделать это , если значение байта Float.
Жду видео туториала или простеньгого обьяснения "с меня СПАСИБО"
Во избежании вопросов, вылаживаю всё что умеет VAMemory:
Код:
public VAMemory();
public VAMemory(string pProcessName);
public long getBaseAddress { get; }
public string processName { get; set; }
public bool CheckProcess();
public bool ReadBoolean(IntPtr pOffset);
public byte ReadByte(IntPtr pOffset);
public byte[] ReadByteArray(IntPtr pOffset, uint pSize);
public char ReadChar(IntPtr pOffset);
public double ReadDouble(IntPtr pOffset);
public float ReadFloat(IntPtr pOffset);
public short ReadInt16(IntPtr pOffset);
public int ReadInt32(IntPtr pOffset);
public long ReadInt64(IntPtr pOffset);
public int ReadInteger(IntPtr pOffset);
public long ReadLong(IntPtr pOffset);
public short ReadShort(IntPtr pOffset);
public string ReadStringASCII(IntPtr pOffset, uint pSize);
public string ReadStringUnicode(IntPtr pOffset, uint pSize);
public ushort ReadUInt16(IntPtr pOffset);
public uint ReadUInt32(IntPtr pOffset);
public ulong ReadUInt64(IntPtr pOffset);
public uint ReadUInteger(IntPtr pOffset);
public long ReadULong(IntPtr pOffset);
public ushort ReadUShort(IntPtr pOffset);
public bool WriteBoolean(IntPtr pOffset, bool pData);
public bool WriteByte(IntPtr pOffset, byte pData);
public bool WriteByteArray(IntPtr pOffset, byte[] pBytes);
public bool WriteChar(IntPtr pOffset, char pData);
public bool WriteDouble(IntPtr pOffset, double pData);
public bool WriteFloat(IntPtr pOffset, float pData);
public bool WriteInt16(IntPtr pOffset, short pData);
public bool WriteInt32(IntPtr pOffset, int pData);
public bool WriteInt64(IntPtr pOffset, long pData);
public bool WriteInteger(IntPtr pOffset, int pData);
public bool WriteLong(IntPtr pOffset, long pData);
public bool WriteShort(IntPtr pOffset, short pData);
public bool WriteStringASCII(IntPtr pOffset, string pData);
public bool WriteStringUnicode(IntPtr pOffset, string pData);
public bool WriteUInt16(IntPtr pOffset, ushort pData);
public bool WriteUInt32(IntPtr pOffset, uint pData);
public bool WriteUInt64(IntPtr pOffset, ulong pData);
public bool WriteUInteger(IntPtr pOffset, uint pData);
public bool WriteULong(IntPtr pOffset, ulong pData);
public bool WriteUShort(IntPtr pOffset, ushort pData);
Тебе надо читать не Byte1/2/4/8... а Float, и вместо ReadByte, пишем ReadFloat.
Добавлено через 47 минут
а не скажеш как сделать так чтобы на button1 уже выполнялось определённое число)
________________
Палки палки палочки Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
Последний раз редактировалось reraider; 27.01.2011 в 03:26.
Причина: Добавлено сообщение
А как сделать что бы тренер ждал пока запустится процесс?
Например я сделал checkBox, поставил галочку и что бы тренер ждал пока запуститься процесс и потом внес изменение
Последний раз редактировалось anime-kawai; 31.01.2011 в 15:36.