обратиться к массиву структуры из библиотеки

legendabrn

Известный
Автор темы
Проверенный
122
173
Имеется псевдо-код из IDA PRO:
Код:
unsigned int v6 = 100;
v4 = v1->v0; // 0x4F5FB8->0xC
v5 = v4->v3[v6]; // 0xABCABC->0xC->3F54[100]
Пытался так, но получал краш:
Код:
void* v1 = *reinterpret_cast<void**>(0x4F5FB8);
void* v2 = *reinterpret_cast<void**>(reinterpret_cast<void**>(v1) + 0xC);
void* v3 = *reinterpret_cast<void**>(reinterpret_cast<void**>(v2) + 0x3F54);
void* v4 = *reinterpret_cast<void***>(v3)[100];
 
Решение
C++:
auto v6 = 100;
auto v1 = *reinterpret_cast<uintptr_t*>(0x4F5FB8);
auto v4 = *reinterpret_cast<uintptr_t*>(v1 + 0xC));
auto v5 = *reinterpret_cast<unsigned int*>(*reinterpret_cast<uintptr_t*>(v4 + 0x3F54 + (v6 * 4)));

ничего не понятно по твоему куску, было бы объяснение можно было бы дать точный ответ, не уверен что код выше будет работать

#Northn

Police Helper «Reborn» — уже ШЕСТЬ лет!
Всефорумный модератор
2,639
2,489
C++:
auto v6 = 100;
auto v1 = *reinterpret_cast<uintptr_t*>(0x4F5FB8);
auto v4 = *reinterpret_cast<uintptr_t*>(v1 + 0xC));
auto v5 = *reinterpret_cast<unsigned int*>(*reinterpret_cast<uintptr_t*>(v4 + 0x3F54 + (v6 * 4)));

ничего не понятно по твоему куску, было бы объяснение можно было бы дать точный ответ, не уверен что код выше будет работать
 
  • Нравится
Реакции: legendabrn

legendabrn

Известный
Автор темы
Проверенный
122
173
C++:
auto v6 = 100;
auto v1 = *reinterpret_cast<uintptr_t*>(0x4F5FB8);
auto v4 = *reinterpret_cast<uintptr_t*>(v1 + 0xC));
auto v5 = *reinterpret_cast<unsigned int*>(*reinterpret_cast<uintptr_t*>(v4 + 0x3F54 + (v6 * 4)));

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