#incluir <dobby.h>
#incluir <stdint.h>
// Decodifica o ObscuredFloat
float GetObscuredFloat(uint64_t localização) {
int cryptoKey = *(int *)location; // Ler cryptoKey
união {
flutuar f;
uint32_t eu;
} valor criptografado;
encryptedValue.f = *(float *)(location + 0x4); // Leia o valor criptografado
união {
flutuar f;
uint32_t eu;
} valorreal;
realValue.i = encryptedValue.i ^ cryptoKey; // XOR com cryptoKey
retornar realValue.f;
}
// Método hooked para substituir get_m_fireRate
flutuar hook_get_m_fireRate(void *_this) {
se (_isso != NULL) {
uint64_t localização = reinterpret_cast<uint64_t>(_this);
// Aqui, você precisa ajustar o deslocamento ou a lógica para localizar corretamente `m_fireRate`
// Assumindo que `location` já é o objeto e `m_fireRate` está no deslocamento esperado
return GetObscuredFloat(location + 0x10); // Ajustar deslocamento (exemplo)
}
return 0.0f; // Retorna um valor padrão se _this for NULL
}
// Função para enganchar
void hookFunction() {
// Endereço absoluto para o método get_m_fireRate na biblioteca carregada
void* targetFunction = (void*)getAbsoluteAddress("suabiblioteca.so", 0x1A28AE4);
// Conecte a função usando Dobby
DobbyHook(targetFunction, (void*)hook_get_m_fireRate, (void**)&orig_get_m_fireRate);
}
// Este é o ponto de entrada, que pode estar no seu código principal ou de inicialização
vazio initHook() {
hookFunction();
}
[/CÓDIGO]