Перейти к содержанию

JuGGerNaunT

Стажёры
  • Постов

    10
  • Зарегистрирован

  • Посещение

  • Победитель дней

    1

Сообщения, опубликованные JuGGerNaunT

  1. Int32 MyValue = VAM.ReadInt32(ValueAddress);//это пункт C

    невозможно преобразование

    Просто забыл дописать Int32 MyValue = VAM.ReadInt32((IntPtr)ValueAddress);

    Про числа: 0x30 - это шеснатитеричная система счисления(смещения с CE записаны имеено в ней). 30 - (без 0x перед числом) это десятичная СС.

  2. image.png


    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);

  3. указатель 0021E45C прибовляем 30 получаем 0012СС54 + 96 получаем 064EE746(конечный адрес..)

    Вот тут у тебя и ошибка. an2.exe + 0021E45C - это адрес от начала базы. an2.exe - это база. 0021E45C - смещение от нее. Чему равна база? Как ее найти через vamemory я не знаю, но это и не очень обязательно. Ее можно глянуть для конкретной игры в окне Enumerate Dlls(чтобы туда попасть нужно с окне Memory view выбрать View->Enumerates Dll's and Symbols).

    image.png

    Обведенное - это значение базы. В этом списке тебе надо искать an2.exe. Т.е. в указанном выше примере получается:

    Указатель 0021E45C прибовляем 00400000(это база твоей игры, она может отличаться) и 30. Получаем 0012СС54 + 96 получаем 064EE746(конечный адрес)

    PS предвижу что это все равно ктонить скажет: да, база игры может меняться, поэтому правильно будет ее находить в программе с помощью специальной функции. Но т.к. на практике это редкий случай, то для начала достаточно подставлять ее вручную.

  4. Ты просто не правильно разобрался, что куда указывает.

    image.png

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

    Int32 DestAddress = VAM.ReadInt32((IntPtr)твой_указатель);

    А в textbox записываешь не это значение, а пересчитаное. В итоге получаешь:


    Int32 DestAddress = VAM.ReadInt32((IntPtr)твой_указатель);
    Int32 MyValue = VAM.ReadInt32(((IntPtr)DestAddress) + 30);
    textBox1.Text = Convert.ToString(MyValue);

  5. 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);

×
×
  • Создать...

Важная информация

Находясь на нашем сайте, Вы автоматически соглашаетесь соблюдать наши Условия использования.