Регистрация Главная Сообщество
Сообщения за день Справка Регистрация

VAMemory поиск оффсетов

-

Вопросы и ответы, обсуждения

- Ваши вопросы по C# только в данном разделе

Ответ
 
Опции темы
Старый 24.11.2011, 18:59   #1
Читер-спонсор
 Рыцарь-защитник
Аватар для Hermein
 
Hermein сломал счётчик популярности :(Hermein сломал счётчик популярности :(Hermein сломал счётчик популярности :(Hermein сломал счётчик популярности :(Hermein сломал счётчик популярности :(Hermein сломал счётчик популярности :(Hermein сломал счётчик популярности :(Hermein сломал счётчик популярности :(Hermein сломал счётчик популярности :(Hermein сломал счётчик популярности :(Hermein сломал счётчик популярности :(
Регистрация: 14.01.2011
Сообщений: 633
Популярность: 28087
Золото Zhyk.Ru: 1
Сказал(а) спасибо: 90
Поблагодарили 717 раз(а) в 374 сообщениях
Отправить сообщение для Hermein с помощью ICQ Отправить сообщение для Hermein с помощью Skype™
 
По умолчанию VAMemory поиск оффсетов

Итак, посмотрел исходники, гайды и тп, везде оффсеты(адреса) были прописаны сразу, а что делать, если адрес динамический и при каждом перезапуске меняется?!

Что надо:

Я знаю, что есть Array of bytes

Код:
4D 6F 64 65 6C 73 5C 77 65 61 70 6F 6E 73 5C 4D 31 36 41 31 2E 6C 74 62
и еще знаю что его нужно поменять на:

Код:
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 4D 31 36 41 00 00 00 00 00
В VAMemory есть возможности:

Код:
public byte[] ReadByteArray(IntPtr pOffset, uint pSize);
public bool WriteByteArray(IntPtr pOffset, byte[] pBytes);
Теперь весь вопрос сводится к нахождению оффсетов:

Пробовал сделать так:

Код:
         VAM = new VAMemory("CrossFire");
            const uint BLOCK_SIZE = 4096 * 4;
            byte[] array = new byte[] {byte.Parse("4D6F64656C735C776561706F6E735C4D313641312E6C7462")};
            byte[] readed = null;
            IntPtr offset = (IntPtr)0;
            IntPtr refset = (IntPtr)(4096 * 4);            
            while(true)
            {
            readed =VAM.ReadByteArray(offset, BLOCK_SIZE);    
            if (SearchBytes(readed, array))
            {
                MessageBox.Show("Урааа!!!");
            break;
            }    
            offset = refset;
            refset =IntPtr.Add(refset, 4096 * 4);
            if (refset.ToInt32() > 314572800)
            {
                break;
            }
            }              
          

            }
        private bool SearchBytes(byte[] a, byte[] b)
        {
            if (Convert.ToString(a).IndexOf(Convert.ToString(b)) != -1)
            {
                return true;
            }
            else { return false; }
        }
И нифига, уже даже хз что делать...
  Ответить с цитированием
Старый 24.11.2011, 19:16   #2
 Разведчик
Аватар для •theSaboteur•
 
•theSaboteur• скоро будет известен•theSaboteur• скоро будет известен•theSaboteur• скоро будет известен
Регистрация: 14.07.2011
Сообщений: 27
Популярность: 244
Сказал(а) спасибо: 26
Поблагодарили 47 раз(а) в 37 сообщениях
Отправить сообщение для •theSaboteur• с помощью ICQ
 
По умолчанию Re: VAMemory поиск оффсетов

Может лучше потратить некоторое время на поиск указателя?
Дело скучно, не спорю, но зато ты будешь просто читать из статической памяти адрес массива байтов,
И сразу переписывать его.
Вместо того что бы при запуске ждать когда же оно пройдет адресное пространство игры.
Что касается алгоритма поиска - [Ссылки могут видеть только зарегистрированные пользователи. ] download->sourcecode, прада на дельфях
________________
Ну что лежишь ты Мурка, на краю дороги
Гробоваая крыышкаа над тобооой
  Ответить с цитированием
Старый 24.11.2011, 19:29   #3
Читер-спонсор
 Рыцарь-защитник
Аватар для Hermein
 
Hermein сломал счётчик популярности :(Hermein сломал счётчик популярности :(Hermein сломал счётчик популярности :(Hermein сломал счётчик популярности :(Hermein сломал счётчик популярности :(Hermein сломал счётчик популярности :(Hermein сломал счётчик популярности :(Hermein сломал счётчик популярности :(Hermein сломал счётчик популярности :(Hermein сломал счётчик популярности :(Hermein сломал счётчик популярности :(
Регистрация: 14.01.2011
Сообщений: 633
Популярность: 28087
Золото Zhyk.Ru: 1
Сказал(а) спасибо: 90
Поблагодарили 717 раз(а) в 374 сообщениях
Отправить сообщение для Hermein с помощью ICQ Отправить сообщение для Hermein с помощью Skype™
 
По умолчанию Re: VAMemory поиск оффсетов

Цитата:
Сообщение от •theSaboteur•Посмотреть сообщение
Может лучше потратить некоторое время на поиск указателя?

Как это сделать? Желательно пример, просто мне еще надо будет некоторые значения менять, но они появляются только после 10 выстрелов мимо например....=(
  Ответить с цитированием
Старый 24.11.2011, 21:31   #4
 Разведчик
Аватар для •theSaboteur•
 
•theSaboteur• скоро будет известен•theSaboteur• скоро будет известен•theSaboteur• скоро будет известен
Регистрация: 14.07.2011
Сообщений: 27
Популярность: 244
Сказал(а) спасибо: 26
Поблагодарили 47 раз(а) в 37 сообщениях
Отправить сообщение для •theSaboteur• с помощью ICQ
 
Smile Re: VAMemory поиск оффсетов

Цитата:
Сообщение от HermeinПосмотреть сообщение
Как это сделать? Желательно пример, просто мне еще надо будет некоторые значения менять, но они появляются только после 10 выстрелов мимо например....=(

Как найти указатель статей полно, на жуке в том числе они должны быть.

Если вкратце - через тот же [Ссылки могут видеть только зарегистрированные пользователи. ] находишь нужное значение, врубаешь
дебаггер и проверяешь значения регистров во время выполнения каких-либо
действий(дебаггер заботливо запишет для вас) с этим значением (выстрелил - уменьшился счетчик патронов)
Во всяких игрушках с DynamicMemoryAllocation эти
операции выполняются не напрямую, а через поинтеры, для безопасности.
-> В регистрах проца на момент выполнения этой операции будут храниться адреса переменных.
Что самое страшное адреса бывают мм.. "вложенными".
Т.е. есть в стат. памяти указатель, который содержит адрес другого указателя в динамич. памяти,
тот в свою очередь может содержать адрес нужной переменной.
Плюс надо учесть, что некоторые значения могут быть записаны не по самому адресу, а по адресу со смещением (оффсет)
- я вот с ними всегда путаюсь, несмотря на напоминания чит энджина)

Тебе вобщем нужно от этой переменной "пройти" до адреса в стат. памяти,
Выписать его на бумажечку, и в программе ты будешь делать вот что:

/*vamemoryObj - экземпляр лабы VAMemory,
offset - оффсет первого указателя относительно начала адресного пространства процесса*/

IntPtr mainAddress = (IntPtr)(vamemoryObj.BaseAdress + offset);
//читаем адрес из указателя
IntPtr secondPointer = vamemoryObj.ReadInt32(mainAddress);
//допустим переменная имеет тип int и лежит по адресу
//записанному в secondPointer + оффсет скажем в 80 б. изменим ее на значение
//введенное юзером:

bool result = vamemoryObj.WriteInt32(secondPointer + 80, int.Parse(Console.ReadLine()));

P.S. пример как понимаешь обобщенный, и на точность и нормальную работоспособность не претендует.
Да и собственно алгоритм поиска адреса описан не слишком красиво, но в сети лежит большое количество примеров.
Да и, в случае если раньше доводилось работать с winApi, то почитай, хотя бы основные моменты,
"[Ссылки могут видеть только зарегистрированные пользователи. ]" Джеффри Рихтера
- замечательная книга (правда я никак ее не дочитаю).
P.P.S. Извиняюсь за оговорки - если что не так написал - поправьте.. А то сплю я) Года 3-4 сплю)
________________
Ну что лежишь ты Мурка, на краю дороги
Гробоваая крыышкаа над тобооой

Последний раз редактировалось •theSaboteur•; 24.11.2011 в 21:48.
  Ответить с цитированием
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Продам] Поиск поинтеров и оффсетов mires51 Point Blank 0 03.11.2011 21:10

Заявление об ответственности / Список мошенников

Часовой пояс GMT +4, время: 12:59.

Пишите нам: [email protected]
Copyright © 2024 vBulletin Solutions, Inc.
Translate: zCarot. Webdesign by DevArt (Fox)
G-gaMe! Team production | Since 2008
Hosted by GShost.net