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

@BestPlayer55
C++:
Expand Collapse Copy
// strings list >> "AddMinimapEntity" >> first sub above (sub_14117CA50) >>
(*(void (__fastcall **)(__int64, _QWORD, _QWORD))(*(_QWORD *)v7 + 1168i64))(v7, v5, v4);
// делим 1168 на 8, получается 146, а значит это и есть актуальный индекс AddMinimapEntity.
 
Последнее редактирование:
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
C++:
Expand Collapse Copy
// strings list >> "AddMinimapEntity" >> first sub above (sub_14117CA50) >>
(*(void (__fastcall **)(__int64, _QWORD, _QWORD))(*(_QWORD *)v7 + 1168i64))(v7, v5, v4);
// делим 1168 на 8, получается 146, а значит это и есть актуальный индекс AddMinimapEntity.
А что он даёт? Или для чего нужен?
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
@oask
Пожалуйста, авторизуйтесь для просмотра ссылки.
Что-то не правильно?
 
перейди сюда
1605351004572.png
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
@BestPlayer55
C++:
Expand Collapse Copy
// strings list >> "AddMinimapEntity" >> first sub above (sub_14117CA50) >>
(*(void (__fastcall **)(__int64, _QWORD, _QWORD))(*(_QWORD *)v7 + 1168i64))(v7, v5, v4);
// делим 1168 на 8, получается 146, а значит это и есть актуальный индекс AddMinimapEntity.
почему делем именно на 8?
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
почему делем именно на 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

Немного трудно что-то сказать на маленьком примере, нужно анализировать всю функцию.
 
Последнее редактирование:
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Радар же фикс :unamused:
 
Назад
Сверху Снизу