Гайд Как сделать фов чит (unity)

ЗАЧЕМ ДУМАТЬ ЕСЛИ МОЖНО НЕ ДУМАТЬ
Пользователь
Статус
Оффлайн
Регистрация
25 Июл 2021
Сообщения
157
Реакции[?]
38
Поинты[?]
0
Что нам нужно :
1)Camera (получение через функцию get_current (для некоторых игр это get_main) )
2)функция которая ставит фов(defolt функция в юнити set_fieldOFView)

И там мы должны получить адреса функций get_current & set_fieldOFView это можно сделать через Cheat Engine или через dnSpy
эти функции находятся в UnityEngine.CoreModule (UnityEngine.Camera)1632172093869.png

ищем функции в Методах два раза кликаем и получаем адрес
1632172179685.png

И так же делаем с другой функцией
и так у нас есть всё чтоб писать код


C++:
#include "Fov.h"
#include <iostream>
#include "includes.h"
//GameAssembly.dll+14B4F80    get
//GameAssembly.dll+14B60A0    set

namespace functGetCamera {
    uintptr_t CameraGetCur = reinterpret_cast<std::uintptr_t>(GetModuleHandle(TEXT("GameAssembly.dll"))) + 0x14B4F80;//адресс функции
    using printf_t = uintptr_t(*)(int* ptr);   // параметры функции и возращаемое значение
}
namespace functSetFov {
    uintptr_t CameraSetFov = reinterpret_cast<std::uintptr_t>(GetModuleHandle(TEXT("GameAssembly.dll"))) + 0x14B60A0; //адресс функции
    using printf_t = void(*)(uintptr_t cam, float fov, int* ptr);// параметры функции и возращаемое значение
}




{
    const auto GetCam = reinterpret_cast <functGetCamera::printf_t>(functGetCamera::CameraGetCur); //инициализация функции
    if (GetCam(nullptr) != NULL)
    {
        const auto SetFov = reinterpret_cast <functSetFov::printf_t>(functSetFov::CameraSetFov);//инициализация функции
        SetFov(GetCam(nullptr), fov, nullptr); // Используем функцию(ставим фов)
    }

}

C++:
#pragma once
class Fov
{
public:
    void Start();
    float fov = 90;
};
Надо ещё добавить проверки от краша ( найти камеру как объект и проверять его адресс чтоб не было краша )

И наконец использование кода
C++:
#include "Fov.h"
Fov fovС;

ImGui::SliderFloat("Fov", &fovP.fov, 0, 360); // slider в меню
BOOL __stdcall StartThread(HMODULE hModule, LPTHREAD_START_ROUTINE StartAddress)
{
    return CloseHandle(CreateThread(0, 0, (LPTHREAD_START_ROUTINE)StartAddress, hModule, 0, 0));
}
DWORD WINAPI FuncThread(HMODULE hMod)
{
    while (true)
    {
        fovP.Start();
               
    }
    FreeLibraryAndExitThread(hMod, 0);
}

BOOL WINAPI DllMain(HMODULE hMod, DWORD dwReason, LPVOID lpReserved)
{
    switch (dwReason)
    {
    case DLL_PROCESS_ATTACH:
        DisableThreadLibraryCalls(hMod);
        CreateThread(nullptr, 0, MainThread, hMod, 0, nullptr);
        StartThread(nullptr, (LPTHREAD_START_ROUTINE)FuncThread);
        break;
    case DLL_PROCESS_DETACH:
        kiero::shutdown();
        break;
    }
    return TRUE;
}

и Результат будет примерно таким

1632172703848.png
 
Сверху Снизу