Другое С/С++ Вопрос - Ответ

ARMOR

God has forsaken us
Модератор
5,059
7,462
как можно изменить handling для определенного cvehicle
Кажись у каждого CVehicle есть поле с хендлингом

 

ARMOR

God has forsaken us
Модератор
5,059
7,462
Короче, как сделать, чтобы хук на LoadTxd редиректил в два разных адреса, в зависимости от того, какой txd'шник грузится? типа

Один FONT.TXD - 0x7320B0
Второй zalupa.txd - какой-то другой адрес

С++:
bool __cdecl TestHOOK(const decltype(CTxdStore__LoadTxd_Hook)& hook, int index, const char* filename) {
    if (strcmp(filename, (char*)0x86A648) == 0) {
        return hook.call_trampoline(index, "FONT.TXD");
    } else if(strcmp(filename, (char*)0x0000) == 0) {
        return hook.call_trampoline(index, "zalupa.txd");
    }

    return hook.call_trampoline(index, filename);
}
void install_fucking_hook() {
 
    CTxdStore__LoadTxd_Hook.set_dest(0x7320B0);
    CTxdStore__LoadTxd_Hook.set_cb(TestHOOK);
    CTxdStore__LoadTxd_Hook.install();
}

а то я пытался делать в разных функциях, то оно работает только в одном из них а не все, допустим шрифт заменяется а другой txd нет
У ктхуков в контексте кажись есть метод для получения указателя на return_address. Можешь попробовать его изменить
 

TokyoQq

Новичок
20
4
Кажись у каждого CVehicle есть поле с хендлингом

при изменении меняется для всей модели а мне надо как то сделать для определеного CVehicle
 
Последнее редактирование:

NikitosikSSS

Новичок
2
0
1. Можно ли как то реализовать функцию увеличение хитбокса? Есть ли в сампе, какая то функция для этого
 

writeline

Новичок
28
9
1744175940428.png


Есть какая либо реализация вывода координат в углу экрана как на скрине?
 
  • Эм
Реакции: Smeruxa

Byte

Потрачен
114
32
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Посмотреть вложение 267454

Есть какая либо реализация вывода координат в углу экрана как на скрине?
SFML Используй


C++:
#include <SFML/Graphics.hpp>
#include <iomanip>
#include <sstream>

std::string formatCoordinates(float x, float y, float z) {
    std::ostringstream oss;
    oss << std::fixed << std::setprecision(6);
    oss << "X: " << x << ", Y: " << y << ", Z: " << z;
    return oss.str();
}

int main() {
    sf::RenderWindow window(sf::VideoMode(800, 600), "Coordinates Display");
    sf::Font font;
    font.loadFromFile("arial.ttf");

    sf::Text coordinatesText;
    coordinatesText.setFont(font);
    coordinatesText.setCharacterSize(24);
    coordinatesText.setFillColor(sf::Color::White);
    coordinatesText.setPosition(600, 550);

    float x = 761.897775f, y = 1526.382080f, z = 12.000000f; // тут передавай свои значения

    while (window.isOpen()) {
        sf::Event event;
        while (window.pollEvent(event)) {
            if (event.type == sf::Event::Closed)
                window.close();
        }

        coordinatesText.setString(formatCoordinates(x, y, z));

        window.clear(sf::Color::Black);
        window.draw(coordinatesText);
        window.display();
    }

    return 0;
}
 

вайега52

cache miss
Модератор
3,060
3,294
Кто-нибудь ставил нейкид хуки на линухе х86? Посоветуйте пожалуйста библиотеку, чтобы можно было вытаскивать регистры (можно даже не через саму либу, а через инлайн асм в нейкид функах)
 

Byte

Потрачен
114
32
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Кто-нибудь ставил нейкид хуки на линухе х86? Посоветуйте пожалуйста библиотеку, чтобы можно было вытаскивать регистры (можно даже не через саму либу, а через инлайн асм в нейкид функах)
 
  • Нравится
Реакции: вайега52

вайега52

cache miss
Модератор
3,060
3,294
А не подскажешь, как правильно изменить значение в eax (результат вызова функи) так, чтобы асм листинг не ломался (трамплинчик вроде называется)
1744654334791.png
 
Последнее редактирование:

Byte

Потрачен
114
32
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
А не подскажешь, как правильно изменить значение в eax (результат вызова функи) так, чтобы асм листинг не ломался (трамплинчик вроде называется)
Посмотреть вложение 267822
C++:
#include <subhook.h>

subhook_t original_function_hook;
typedef int (*original_func_t)(/* параметры */);

int my_hook_function(/* параметры */) {
    // Получаем трамплин и вызываем оригинальную функцию
    int result = ((original_func_t)subhook_get_trampoline(original_function_hook))(/* параметры */);
    
    // Модифицируем результат (значение в eax)
    result = /* твоя модификация например result * 2 */;
    
    return result;
}

void setup_hook() {
    original_function_hook = subhook_new((void*)original_function, (void*)my_hook_function);
    subhook_install(original_function_hook);
}