Вопрос Какой индекс у AddMinimapEntity?

smoking on that #pragma pack
Пользователь
Статус
Оффлайн
Регистрация
10 Янв 2018
Сообщения
324
Реакции[?]
96
Поинты[?]
1K
BestPlayer55
C++:
// strings list >> "AddMinimapEntity" >> first sub above (sub_14117CA50) >>
(*(void (__fastcall **)(__int64, _QWORD, _QWORD))(*(_QWORD *)v7 + 1168i64))(v7, v5, v4);
// делим 1168 на 8, получается 146, а значит это и есть актуальный индекс AddMinimapEntity.
 
Последнее редактирование:
When every god dead, I can live a normal life...
Забаненный
Статус
Оффлайн
Регистрация
9 Авг 2020
Сообщения
328
Реакции[?]
48
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
C++:
// strings list >> "AddMinimapEntity" >> first sub above (sub_14117CA50) >>
(*(void (__fastcall **)(__int64, _QWORD, _QWORD))(*(_QWORD *)v7 + 1168i64))(v7, v5, v4);
// делим 1168 на 8, получается 146, а значит это и есть актуальный индекс AddMinimapEntity.
А что он даёт? Или для чего нужен?
 
When every god dead, I can live a normal life...
Забаненный
Статус
Оффлайн
Регистрация
9 Авг 2020
Сообщения
328
Реакции[?]
48
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
oask
Пожалуйста, авторизуйтесь для просмотра ссылки.
Что-то не правильно?
 
When every god dead, I can live a normal life...
Забаненный
Статус
Оффлайн
Регистрация
9 Авг 2020
Сообщения
328
Реакции[?]
48
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
When every god dead, I can live a normal life...
Забаненный
Статус
Оффлайн
Регистрация
9 Авг 2020
Сообщения
328
Реакции[?]
48
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
When every god dead, I can live a normal life...
Забаненный
Статус
Оффлайн
Регистрация
9 Авг 2020
Сообщения
328
Реакции[?]
48
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Начинающий
Статус
Оффлайн
Регистрация
11 Мар 2017
Сообщения
4
Реакции[?]
0
Поинты[?]
0
BestPlayer55
C++:
// strings list >> "AddMinimapEntity" >> first sub above (sub_14117CA50) >>
(*(void (__fastcall **)(__int64, _QWORD, _QWORD))(*(_QWORD *)v7 + 1168i64))(v7, v5, v4);
// делим 1168 на 8, получается 146, а значит это и есть актуальный индекс AddMinimapEntity.
почему делем именно на 8?
 
Energy Reload
Забаненный
Статус
Оффлайн
Регистрация
20 Авг 2017
Сообщения
1,206
Реакции[?]
330
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
почему делем именно на 8?
Это особенности Декомпиля IDA.
В 32-х битном приложении нужно делить на 4, а в 64-х битном на 8
И еще зависит от самой функции которую ты используешь.

template< typename cData >
cData vFun_Call(PVOID64 BaseClass, DWORD64 vIndex)
{
PDWORD64* vPointer = (PDWORD64*)BaseClass;
PDWORD64 vFunction = *vPointer;
DWORD64 dwAddress = vFunction[vIndex];Тут можно сразу разделить на 8
//DWORD64 dwAddress = vFunction[vIndex/8]; и не прийдется уже там делить.
return (cData)(dwAddress);
}

Некоторые указатели на виртуальные функции получают уже сразу деленными, а некоторые не деленные.
Адрес в 32-х битном приложении занимает 4 байта, а в 64-х битном - 8 байт.


Если есть приставка "i64" значит нужно это значение делить на 8 и получишь индекс этой виртуальной функции.

Вот другой пример:
sub_funk(a1[1])
Вызывается функция sub_funk,в её аргумент передается некий класс (а1) с виртуальной функцией под позицией 1

Немного трудно что-то сказать на маленьком примере, нужно анализировать всю функцию.
 
Последнее редактирование:
Забаненный
Статус
Оффлайн
Регистрация
2 Мар 2021
Сообщения
1,083
Реакции[?]
406
Поинты[?]
1K
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Радар же фикс :unamused:
 
Сверху Снизу