Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.72/18: Рейтинг темы: голосов - 18, средняя оценка - 4.72
 Аватар для Hermein
99 / 43 / 16
Регистрация: 25.10.2011
Сообщений: 246
.NET 2.x

VAMEMORY Что делать если адрес динамический?

24.11.2011, 00:21. Показов 3642. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть готовый dll по работе с памятью: vamemory.dll

Пример его использования:
C#
1
2
3
4
5
6
7
8
VAMemory VAM;
 
VAM = new VAMemory("winmine"); //Имя процесса, без .exe!
label2.Text = (Convert.ToString(VAM.ReadByte((IntPtr)0x01005194)));
//Чтение
VAM = new VAMemory("winmine"); // Имя процесса, без .exe!
VAM.WriteByte((IntPtr)0x01005194, byte.Parse(textBox1.Text.ToString()));
//запись
01005194-Это у нас адрес, в котором хранится значение
Теперь вопрос:

Что делать если адрес динамический??? Как по байтам найти этот самый адрес, задам конкретный пример:

Есть игра CrossFire, знаю какие байты надо найти и на какие заменить, вопрос как это сделать???

Code
1
4D 6F 64 65 6C 73 5C 77 65 61 70 6F 6E 73 5C 4D 31 36 41 31 2E 6C 74 62
Байты для поиска

Code
1
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 4D 31 36 41 00 00 00 00 00
Байты для замены

Code
1
2
public byte[] ReadByteArray(IntPtr pOffset, uint pSize);
public bool WriteByteArray(IntPtr pOffset, byte[] pBytes);
Методы из Vamemory

ps: нужно так же, как в Cheat Engine - метод поиска, который по переменной/байтам находит pOffset(адрес)

Добавлено через 1 час 0 минут
Неужели никто не знает и никаких идей?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
24.11.2011, 00:21
Ответы с готовыми решениями:

Настройка почты если адрес сервера динамический
я так понял есть два способа 1 - настроить забирать почту с помощью утилиты с левого ящика что не есть хорошо. 2 - получить статический...

Частный адрес, динамический адрес, статический адрес - какой у меня?
Привет. Открываем рубрику глупых вопросов. Я сижу с компьютера который подключен к интернету по кабелю, кабель от компьютера идёт к...

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

3
Почетный модератор
Эксперт .NET
 Аватар для NickoTin
8725 / 3677 / 404
Регистрация: 14.06.2010
Сообщений: 4,513
Записей в блоге: 9
24.11.2011, 02:52
Hermein,
  1. читаете массив по определенному оффсету;
  2. ищете в прочитанном участке нужную последовательность;
    • нашли? - ок, делаем дальше то что нужно...
    • не нашли? прибавляем к оффсету количество прочитанных байт и возвращаемся к пункту 1.
т.е. в псевдокоде как-то так:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
const uint BLOCK_SIZE = 4096 * 4
byte[] array = new byte[] { /* нужные байты */ }
 
bool   flag   = false;
byte[] readed = null;
IntPtr offset = ...;
 
while(true)
{
    readed = ReadByteArray(offset, BLOCK_SIZE);
    
    if (SearchBytes(readed, array))
    {
        flag = true;
        break;
    }
    
    offset += readed.Length;
}
1
 Аватар для Hermein
99 / 43 / 16
Регистрация: 25.10.2011
Сообщений: 246
24.11.2011, 19:52  [ТС]
Пробовал сделать так:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
 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; }
        }
Ну и как вы поняли нифига хорошего не вышло
0
0 / 0 / 0
Регистрация: 10.02.2020
Сообщений: 6
28.07.2020, 02:37
Используй библиотеку DotNetScanMemorySmoll
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
28.07.2020, 02:37
Помогаю со студенческими работами здесь

Файловый ввод С++.Не создаётся файл ifstream что делать?Если что функцию is_open тоже пробовал не выходит
//Удаление Элемента из массива// #include<fstream> using std::ifstream; void Electronics::Remote() { ...

Если элемент массива - четный, то вывести его адрес памяти, если нечетный, то адрес памяти следующего и предыдущего
1. Создать массив, состоящих из 10 случайных целых чисел. 2. Создать следующий алгоритм. Если элемент массива - четное число, то...

Что делать в случае если
у меня вот такой вопрос от новичка конечно я извиняюсь что задал такой интригующий вопрос в топике но описать там по моему было нельзя ...

Что делать, если не запускается ПК?
Стоял дома ПК, потом перенес его в другое здание, дома протер от пыли, на улице был мороз, тащил с открытой крышкой. Он включается, но...

Что делать, если я телепузик?
Добрый день! Взглядевшись в ядро Windows, я понял, что я телепузик, эдакий пособник и раб United States European Residence 32. Что бы вы...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru