Вопрос Вопрос с паттернами

Начинающий
Статус
Оффлайн
Регистрация
9 Фев 2019
Сообщения
9
Реакции[?]
3
Поинты[?]
0
Приветствую всех. Возникла проблема(вопрос) с паттернами. Мне нужно достать адрес из модуля, но т.к адрес не статический, он постоянно меняется. И я использую паттерн. Проблема(вопрос) заключается в этом:
Первый паттерн выглядит так:
+скрин 1
1.png

this->address_of_weapon_array_ = *reinterpret_cast<uint32_t*>(*reinterpret_cast<uint32_t*>(FindPattern(this->cshell_base_, 0xFFFFFF, reinterpret_cast<uint8_t*>("\x8B\x4F\x04\xA1\x00\x00\x00\x00\x85\xC0\x8B\x51\x04\x8B\x6A\x04"), "xxxx????xxxxxxxx") + 4));

Данный паттерн прекрасно работает на старой версии игры, но игра обновилась и он слегка изменился.
Когда я перешел на новую версии игры, увидел такую ситуацию (скрин 2). Теперь у меня вопрос, какой паттерн у новой версии игры??? И еще немного не понимаю, что означает +4 в конце паттерна.

2.png

Я предполагаю, что должно получиться вот так?
this->address_of_weapon_array_ = *reinterpret_cast<uint32_t*>(*reinterpret_cast<uint32_t*>(FindPattern(this->cshell_base_, 0xFFFFFF, reinterpret_cast<uint8_t*>("\x8B\x57\x04\x8B\x42\x08\x8B\x68\x04\xA1\x00\x00\x00\x00\x00\x00\x00\x85\xC0"), "xxxxxxxxxx???????xx")));

а с +4 вот так?

this->address_of_weapon_array_ = *reinterpret_cast<uint32_t*>(*reinterpret_cast<uint32_t*>(FindPattern(this->cshell_base_, 0xFFFFFF, reinterpret_cast<uint8_t*>("\x8B\x57\x04\x8B\x42\x04\x8B\x68\x04\xA1\x00\x00\x00\x00\x00\x00\x00\x85\xC0"), "xxxxxxxxxx???????xx") + 4));

Если нет, то исправьте пожалуйста, как должно быть.
 
average usermode enjoyer
Участник
Статус
Оффлайн
Регистрация
9 Июл 2019
Сообщения
766
Реакции[?]
516
Поинты[?]
4K
Попробуй это:
C++:
this->address_of_weapon_array_ = *reinterpret_cast<uint32_t*>(*reinterpret_cast<uint32_t*>(FindPattern(this->cshell_base_, 0xFFFFFF, reinterpret_cast<uint8_t*>("\x8B\x57\x04\x8B\x42\x08\x8B\x68\x04\xA1\x00\x00\x00\x00\x83\xC4\x04\x85\xC0"), "xxxxxxxxxx????xxxxx") + 10));
И еще немного не понимаю, что означает +4 в конце паттерна.
Это смещение указателя относительно начала паттера.
1619639938389.png
 
Начинающий
Статус
Оффлайн
Регистрация
9 Фев 2019
Сообщения
9
Реакции[?]
3
Поинты[?]
0
Попробуй это:
C++:
this->address_of_weapon_array_ = *reinterpret_cast<uint32_t*>(*reinterpret_cast<uint32_t*>(FindPattern(this->cshell_base_, 0xFFFFFF, reinterpret_cast<uint8_t*>("\x8B\x57\x04\x8B\x42\x08\x8B\x68\x04\xA1\x00\x00\x00\x00\x83\xC4\x04\x85\xC0"), "xxxxxxxxxx????xxxxx") + 10));

Это смещение указателя относительно начала паттера.
Посмотреть вложение 146100
Все понял, спасибо большое, заработало
 
Сверху Снизу