Вопрос Как получить ViewMatrix External

Пользователь
Статус
Оффлайн
Регистрация
19 Авг 2020
Сообщения
223
Реакции[?]
138
Поинты[?]
6K
Короче такая проблема делаю esp и нужно получить ViewMatrix но не как обычно что типа mem.readMem<VMatrix>(Client + dwViewMatrix) а нужно получить как-то каждый отдельный элемент этой матрицы иба я делаю через драйвер и возможно оно и может перевести это но я хз будет проще как-то через for пройтись по всей матрице. Типа как-то так:
for(int i=0;i<16;i++){
matrix = Driver.ReadVirtualMemory<float>(Client + dwViewMatrix + i);
}
Но такая штука не работает. Какое там смещение вообще идет чтобы пройтись по матрице?
 
Участник
Статус
Оффлайн
Регистрация
15 Янв 2021
Сообщения
492
Реакции[?]
289
Поинты[?]
79K
А в чем собственно проблема создать структуру матрицы и кастить в неё при чтении в драйвере ? И уже благодаря этой структуре получать нужную тебе часть
 
Пользователь
Статус
Оффлайн
Регистрация
19 Авг 2020
Сообщения
223
Реакции[?]
138
Поинты[?]
6K
А в чем собственно проблема создать структуру матрицы и кастить в неё при чтении в драйвере ? И уже благодаря этой структуре получать нужную тебе часть
А типа для чего создавать целую структуру ради одного офсета? Я спросил про сдвиг этой структуры чтобы как раз не ухудшать код ненужными структурами.
 
Pa$$ter
Пользователь
Статус
Оффлайн
Регистрация
9 Июн 2020
Сообщения
240
Реакции[?]
83
Поинты[?]
12K
А типа для чего создавать целую структуру ради одного офсета? Я спросил про сдвиг этой структуры чтобы как раз не ухудшать код ненужными структурами.
Во первых матрица 4x4 это как раз таки "нужная" структура. Во вторых вызов чтения 16 раз будет всегда медленнее чем вызов чтения 1 раз. Я бы всё же советовал сделать структуру вью матрицы. Если тебе хочется обращаться к ней напрямик через [] - можешь оверлоаднуть этот оператор, по типу

C++:
struct ViewMatrix
{
    float* operator[](int index) {
        return matrix[index];
    }
    float matrix[4][4];
};
В твоём случае проблема в подсчёте Client + dwViewMatrix + i, ведь ты читаешь не один байт а float, float - 32 бита (4 байта) => тебе надо делать Client + dwViewMatrix + i*4.
 
Пользователь
Статус
Оффлайн
Регистрация
19 Авг 2020
Сообщения
223
Реакции[?]
138
Поинты[?]
6K
Во первых матрица 4x4 это как раз таки "нужная" структура. Во вторых вызов чтения 16 раз будет всегда медленнее чем вызов чтения 1 раз. Я бы всё же советовал сделать структуру вью матрицы. Если тебе хочется обращаться к ней напрямик через [] - можешь оверлоаднуть этот оператор, по типу

C++:
struct ViewMatrix
{
    float* operator[](int index) {
        return matrix[index];
    }
    float matrix[4][4];
};
В твоём случае проблема в подсчёте Client + dwViewMatrix + i, ведь ты читаешь не один байт а float, float - 32 бита (4 байта) => тебе надо делать Client + dwViewMatrix + i*4.
Ок спс я только сейчас понял что оно DWORD в float криво переводило вот и выходил бред.
 
Сверху Снизу