-
Постов
10 -
Зарегистрирован
-
Посещение
-
Победитель дней
1
Тип контента
Профили
Форумы
Загрузки
Блоги
Сообщения, опубликованные JuGGerNaunT
-
-
Int32 MyValue = VAM.ReadInt32(ValueAddress);//это пункт C
невозможно преобразование
Просто забыл дописать Int32 MyValue = VAM.ReadInt32((IntPtr)ValueAddress);
Про числа: 0x30 - это шеснатитеричная система счисления(смещения с CE записаны имеено в ней). 30 - (без 0x перед числом) это десятичная СС.
-
Int32 BaseAddress = 0x00400000;
Int32 MyOffset = 0x0021E45C;
IntPtr MainPointer = (IntPtr)(BaseAddress + MyOffset + 30);
Int32 DestAddress = VAM.ReadInt32(MainPointer);//это пункт A
IntPtr MinorPointer = (IntPtr)(DestAddress + 0x96);
Int32 ValueAddress = VAM.ReadInt32(MinorPointer) ;//это пункт B
Int32 MyValue = VAM.ReadInt32(ValueAddress);//это пункт C
textBox1.Text = Convert.ToString(MyValue); -
указатель 0021E45C прибовляем 30 получаем 0012СС54 + 96 получаем 064EE746(конечный адрес..)
Вот тут у тебя и ошибка. an2.exe + 0021E45C - это адрес от начала базы. an2.exe - это база. 0021E45C - смещение от нее. Чему равна база? Как ее найти через vamemory я не знаю, но это и не очень обязательно. Ее можно глянуть для конкретной игры в окне Enumerate Dlls(чтобы туда попасть нужно с окне Memory view выбрать View->Enumerates Dll's and Symbols).
Обведенное - это значение базы. В этом списке тебе надо искать an2.exe. Т.е. в указанном выше примере получается:
Указатель 0021E45C прибовляем 00400000(это база твоей игры, она может отличаться) и 30. Получаем 0012СС54 + 96 получаем 064EE746(конечный адрес)
PS предвижу что это все равно ктонить скажет: да, база игры может меняться, поэтому правильно будет ее находить в программе с помощью специальной функции. Но т.к. на практике это редкий случай, то для начала достаточно подставлять ее вручную.
-
Ты просто не правильно разобрался, что куда указывает.
Открой значение из своей таблицы, которое содержит указатель. Там где написано "твой указатель", подставляешь в строку
Int32 DestAddress = VAM.ReadInt32((IntPtr)твой_указатель);
А в textbox записываешь не это значение, а пересчитаное. В итоге получаешь:
Int32 DestAddress = VAM.ReadInt32((IntPtr)твой_указатель);
Int32 MyValue = VAM.ReadInt32(((IntPtr)DestAddress) + 30);
textBox1.Text = Convert.ToString(MyValue); -
Int32 Jordan = Convert.ToInt32(textBox1.Text, 16); //читаешь значение с формы
Int32 DestAddress = VAM.ReadInt32((IntPtr)Jordan); //читаешь содержимое указателя(он содержит адрес)
Int32 MyValue = VAM.ReadInt32(((IntPtr)DestAddress) + 30); //читаешь само значение
Ну вот такой вариант может работать. Последняя строчка может изменяться в зависимости от того, какое значение у тебя итоговое: если float, то последняя строка будет
Single MyValue = VAM.ReadFloat(((IntPtr)DestAddress) + 30);
-
Зачем там такие выкрунтасы? Есть статический адрес 0x00403279, уменьшаем значение - число становится больше, увеличиваем - меньше.
-
Адресс инструкции записи в значение - TrainME.exe+135C(можно занопить), проверка но целостность - TrainME.exe+1250(просто перепрыгиваем проверку)
- 1
-
Ну нафига под скрипт выделяешь 2кб, не много ли
Не много. Не имеет никакого значения сколько памяти ты выделяешь, если она меньше 4Кб(ну или какой у кого размер страницы).
Проблема при подсчете ФПС . с++ VS 2012
in Низкоуровневое программирование
Опубликовано
Проблема в том, что функцию FPSText() нужно не в if(){} вызывать, а постоянно.