-
Постов
10 -
Зарегистрирован
-
Посещение
-
Победитель дней
1
JuGGerNaunT стал победителем дня 4 сентября 2012
JuGGerNaunT имел наиболее популярный контент!
Репутация
1 Навыки не прокаченыИнформация
-
Пол
Не определился
-
Просто забыл дописать 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);
-
Вот тут у тебя и ошибка. 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(просто перепрыгиваем проверку)
- 41 ответ
-
- 1
-
-
Не много. Не имеет никакого значения сколько памяти ты выделяешь, если она меньше 4Кб(ну или какой у кого размер страницы).