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

Не могу найти статический указатель


LuBu

Рекомендуемые сообщения

Написал простенькую программу, которая содержит в себе вектор и 10 игроков, каждый игрок имеет показатель жизни.
Раз в сек хпшка уменшается у кого то.
Вообщем я нашел адрес нужного пользователя, нашел адрес вектора. Но не могу ни как найти статический указатель. Тот который зеленный.
Делал все по инструкции как в роликах у данного канала.

Любые идеи почему не получается найти зеленый адрес?

Ссылка на комментарий
Поделиться на другие сайты

int main() { // <- не могу найти
    std::vector<int> players; // 0x009D1242 этот адресс динамический, на данный момент имеет такой адрес
  ....

 

Проблема в том что Find out what... на этом адресе ничего не показывает. Тоесть никаких инструкций не срабатывает

Изменено пользователем LuBu
Ссылка на комментарий
Поделиться на другие сайты

16 часов назад, KRYPTOPUNK сказал:

Скинь полный код под спойлером и где конкретно ты ловишь инструкции 



 

Спойлер

int main() {
    std::vector<int> players;
    for (int index = 0; index < 3; ++index) {
        players.push_back(index);
    }

    cout << &players << endl;

    bool isEnd = true;

    while (isEnd) {
        if (players.size() > 20) { //После 20 итераций, остальной вывод будет происходить с задержкой в 3 сек.
            sleep_for(milliseconds(3000));
        }
        int temp = players[0];
        players[0] = ++temp;

        if (temp % 3 == 0) { //Каждые 3 шага добавляется новый игрок
            int value = players[players.size() - 1];
            players.push_back(++value);
        }

        cout << "Players Vector Addr: " << &players //Адрес созданого вектора
             << "  Player Addr: " << &players[0] //Адрес 0 игрока, после того как вектор заполнится, адрес будет другой
             << "  Player Value: " << players[0] //Значение 0 адреса
             << "  Players Size: " << players.size() //кол-во игроков в векторе
             << endl;

        if (players.size() > 10000) isEnd = false;
    }

    return 0;
}

 

 

1) Ищу значение которое есть у 0 игрока. Представим что это жизнь.

2) 

Спойлер

00935EA0 - 89 55 C8  - mov [ebp-38],edx
00935EA9 - 89 45 C8  - mov [ebp-38],eax


3)

Спойлер

009354A0 - 55 - push ebp
00932436 - 89 4D FC  - mov [ebp-04],ecx // <- Здесь указывается адрес вектора
009323F0 - 55 - push ebp
00932430 - 55 - push ebp
00935F0A - 68 30DB9300 - push 0093DB30
746E57CF - CC - int 3 
746E6310 - 55 - push ebp
00931DA0 - 55 - push ebp
009335A0 - 55 - push ebp

 

Спойлер

TestC__.std::vector<int,std::allocator<int> >::size+6:
00932431 - 8B EC  - mov ebp,esp
00932433 - 83 EC 08 - sub esp,08
00932436 - 89 4D FC  - mov [ebp-04],ecx <<
00932439 - 8B 45 FC  - mov eax,[ebp-04]
0093243C - 89 45 F8  - mov [ebp-08],eax

EAX=0000001F
EBX=0081FB30
ECX=0081FB8C
EDX=00000000
ESI=0081FB3C
EDI=0081FB38
ESP=0081FB2C
EBP=0081FB34
EIP=00932439

 


Далее я беру EBP=0081FB34 и ищу через HEX.
В итоге адресов нет

Изменено пользователем LuBu
Ссылка на комментарий
Поделиться на другие сайты

23 часа назад, LuBu сказал:

Далее я беру EBP=0081FB34 и ищу через HEX

EBP - это указатель на стек (как и ESP). Точнее, это типа базовый поинтер, и на текущую вершину стека может и не указывать. Но это технические детали, которые в данном случае не важны. Значения, которые проходят через этот регистр бесполезны (в плане использования как указатель, разумеется). А почему стек - потому что у тебя вектор объявлен как локальная по отношению к функции main переменная.

Ссылка на комментарий
Поделиться на другие сайты

1 час назад, Xipho сказал:

EBP - это указатель на стек (как и ESP). Точнее, это типа базовый поинтер, и на текущую вершину стека может и не указывать. Но это технические детали, которые в данном случае не важны. Значения, которые проходят через этот регистр бесполезны (в плане использования как указатель, разумеется). А почему стек - потому что у тебя вектор объявлен как локальная по отношению к функции main переменная.

Тоесть если в игре все переменные объявлены как локальные, тоесть загруженные в стек. То никакого способа найти постоянный указатель нет?

Ссылка на комментарий
Поделиться на другие сайты

5 часов назад, LuBu сказал:

если в игре все переменные объявлены как локальные, тоесть загруженные в стек. То никакого способа найти постоянный указатель нет?

Найти - нет. Сделать - да.

Ссылка на комментарий
Поделиться на другие сайты

  • Xipho закрыл тема
Гость
Эта тема закрыта для публикации ответов.
×
×
  • Создать...

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

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