Подпишитесь на наш Telegram-канал, чтобы всегда быть в курсе важных обновлений! Перейти

Вопрос Крашит при рисовке ImGui

  • Автор темы Автор темы Yesgoter
  • Дата начала Дата начала
Пользователь
Пользователь
Статус
Оффлайн
Регистрация
5 Июл 2022
Сообщения
1,001
Реакции
86
Добрый вечер! Настроил имгуй, сделал меню. В бин 64 не крашит, но как только захожу в ориг вф, то получаю краш. Почему может быть так?
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
во 1х. Опять спрашиваешь помощи не приложив даже кода.
Во 2х. если вызываешь где либо чтение памяти, может оно крашит из за невалид офсетов?
 
во 1х. Опять спрашиваешь помощи не приложив даже кода.
Во 2х. если вызываешь где либо чтение памяти, может оно крашит из за невалид офсетов?
C++:
Expand Collapse Copy
void InitImGui( IRenderer* pRenderer ) {
    ImGui::CreateContext( );
    ImGuiIO& io = ImGui::GetIO( );

    io.Fonts->AddFontFromFileTTF( "C:\\Windows\\Fonts\\Arial.ttf", 20, 0, io.Fonts->GetGlyphRangesCyrillic( ) );
    ImGui_ImplWin32_Init( pRenderer->m_hWnd );
    ImGui_ImplDX11_Init( pRenderer->m_pd3dDevice, pRenderer->m_pd3dDeviceContext );
    CustomColor( );
    CustomStyle( );
}
LRESULT __stdcall WndProc( const HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam ) {

    if ( true && ImGui_ImplWin32_WndProcHandler( hWnd, uMsg, wParam, lParam ) )
        return true;

    return CallWindowProc( oWndProc, hWnd, uMsg, wParam, lParam );
}

bool init = false;
bool menu = false;

HRESULT WINAPI D3D11Present( IDXGISwapChain* pSwapChain, UINT SyncInterval, UINT Flags ) {
    IRenderer* pRenderer = SSystemGlobalEnvironment::Singleton( )->GetRenderer( );
    if ( pRenderer == nullptr ) return 0;

    if ( !init )
    {
        if ( SUCCEEDED( pSwapChain->GetDevice( __uuidof( ID3D11Device ),
            (void**)&pRenderer->m_pd3dDevice ) ) )
        {
            pRenderer->m_pd3dDevice->GetImmediateContext(
                &pRenderer->m_pd3dDeviceContext );
            DXGI_SWAP_CHAIN_DESC sd;
            pSwapChain->GetDesc( &sd );
            pRenderer->m_hWnd = sd.OutputWindow;
            ID3D11Texture2D* pBackBuffer;
            pSwapChain->GetBuffer( 0, __uuidof( ID3D11Texture2D ),
                (LPVOID*)&pBackBuffer );
            pRenderer->m_pd3dDevice->CreateRenderTargetView(
                pBackBuffer, NULL, &pRenderer->m_pBackBuffer );
            pBackBuffer->Release( );
            oWndProc = (WNDPROC)SetWindowLongPtr( pRenderer->m_hWnd, GWLP_WNDPROC,
                (LONG_PTR)WndProc );
            InitImGui( pRenderer );
            init = true;
        } else {
            return hkGame->GetOriginalFunction<HRESULT( WINAPI* )( IDXGISwapChain*, UINT, UINT )>( 8 )( pSwapChain, SyncInterval, Flags );
        }

    }
    ImGui_ImplDX11_NewFrame( );
    ImGui_ImplWin32_NewFrame( );
    ImGui::NewFrame( );

    if ( ( GetAsyncKeyState( VK_HOME ) & 1 ) || ( GetAsyncKeyState( VK_INSERT ) & 1 ) )
        menu = !menu;
    if ( menu )
    {
        ImGui::SetNextWindowSize( ImVec2( 458, 270 ) );
        if ( ImGui::Begin( "Unise Multihit", nullptr, flags_0 ) )
        {
            if (ImGui::Button("ESP", ImVec2(38, 26)))
                ImGui::SetCursorPos(ImVec2(38, 26));
                static bool test = false;
                if (ImGui::Checkbox("WallHack", &test)) {

                }
            
        }
        ImGui::End( );
    }


    ImGui::Render( );

    pRenderer->m_pd3dDeviceContext->OMSetRenderTargets( 1, &pRenderer->m_pBackBuffer, NULL );
    ImGui_ImplDX11_RenderDrawData( ImGui::GetDrawData( ) );
    return hkGame->GetOriginalFunction<HRESULT( WINAPI* )( IDXGISwapChain*, UINT, UINT )>( 8 )( pSwapChain, SyncInterval, Flags );
}
 
C++:
Expand Collapse Copy
void InitImGui( IRenderer* pRenderer ) {
    ImGui::CreateContext( );
    ImGuiIO& io = ImGui::GetIO( );

    io.Fonts->AddFontFromFileTTF( "C:\\Windows\\Fonts\\Arial.ttf", 20, 0, io.Fonts->GetGlyphRangesCyrillic( ) );
    ImGui_ImplWin32_Init( pRenderer->m_hWnd );
    ImGui_ImplDX11_Init( pRenderer->m_pd3dDevice, pRenderer->m_pd3dDeviceContext );
    CustomColor( );
    CustomStyle( );
}
LRESULT __stdcall WndProc( const HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam ) {

    if ( true && ImGui_ImplWin32_WndProcHandler( hWnd, uMsg, wParam, lParam ) )
        return true;

    return CallWindowProc( oWndProc, hWnd, uMsg, wParam, lParam );
}

bool init = false;
bool menu = false;

HRESULT WINAPI D3D11Present( IDXGISwapChain* pSwapChain, UINT SyncInterval, UINT Flags ) {
    IRenderer* pRenderer = SSystemGlobalEnvironment::Singleton( )->GetRenderer( );
    if ( pRenderer == nullptr ) return 0;

    if ( !init )
    {
        if ( SUCCEEDED( pSwapChain->GetDevice( __uuidof( ID3D11Device ),
            (void**)&pRenderer->m_pd3dDevice ) ) )
        {
            pRenderer->m_pd3dDevice->GetImmediateContext(
                &pRenderer->m_pd3dDeviceContext );
            DXGI_SWAP_CHAIN_DESC sd;
            pSwapChain->GetDesc( &sd );
            pRenderer->m_hWnd = sd.OutputWindow;
            ID3D11Texture2D* pBackBuffer;
            pSwapChain->GetBuffer( 0, __uuidof( ID3D11Texture2D ),
                (LPVOID*)&pBackBuffer );
            pRenderer->m_pd3dDevice->CreateRenderTargetView(
                pBackBuffer, NULL, &pRenderer->m_pBackBuffer );
            pBackBuffer->Release( );
            oWndProc = (WNDPROC)SetWindowLongPtr( pRenderer->m_hWnd, GWLP_WNDPROC,
                (LONG_PTR)WndProc );
            InitImGui( pRenderer );
            init = true;
        } else {
            return hkGame->GetOriginalFunction<HRESULT( WINAPI* )( IDXGISwapChain*, UINT, UINT )>( 8 )( pSwapChain, SyncInterval, Flags );
        }

    }
    ImGui_ImplDX11_NewFrame( );
    ImGui_ImplWin32_NewFrame( );
    ImGui::NewFrame( );

    if ( ( GetAsyncKeyState( VK_HOME ) & 1 ) || ( GetAsyncKeyState( VK_INSERT ) & 1 ) )
        menu = !menu;
    if ( menu )
    {
        ImGui::SetNextWindowSize( ImVec2( 458, 270 ) );
        if ( ImGui::Begin( "Unise Multihit", nullptr, flags_0 ) )
        {
            if (ImGui::Button("ESP", ImVec2(38, 26)))
                ImGui::SetCursorPos(ImVec2(38, 26));
                static bool test = false;
                if (ImGui::Checkbox("WallHack", &test)) {

                }
           
        }
        ImGui::End( );
    }


    ImGui::Render( );

    pRenderer->m_pd3dDeviceContext->OMSetRenderTargets( 1, &pRenderer->m_pBackBuffer, NULL );
    ImGui_ImplDX11_RenderDrawData( ImGui::GetDrawData( ) );
    return hkGame->GetOriginalFunction<HRESULT( WINAPI* )( IDXGISwapChain*, UINT, UINT )>( 8 )( pSwapChain, SyncInterval, Flags );
}
Скорее всего оффсеты из IRenderer уже не актуальны. Скинь полностью класс IRenderer и может реверсеры скажут что не так
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Скорее всего оффсеты из IRenderer уже не актуальны. Скинь полностью класс IRenderer и может реверсеры скажут что не так
Объективно если хук ставится без анти чита, то IRenderer у него актуален, может быть что то другое его отрыгивает
 
Скорее всего оффсеты из IRenderer уже не актуальны. Скинь полностью класс IRenderer и может реверсеры скажут что не так
C++:
Expand Collapse Copy
struct IRenderer {
public:
    Vec3 GetViewCamera() { return *(Vec3*)((uintptr_t)this + 0x17C0); }
    float GetWidth() { return (float)GetVFunc<int(__fastcall*)(PVOID)>(this, 0x330)(this); }
    float GetHeight() { return (float)GetVFunc<int(__fastcall*)(PVOID)>(this, 0x338)(this); }
    void SetWhiteTexture()
    {
        return GetVFunc<void(__thiscall*)(PVOID)>(this, 0x250)(this);
    }
    bool ProjectToScreen(SWorldToScreen* pWorldToScreen) { return GetVFunc<bool(__thiscall*)(PVOID, SWorldToScreen*)>(this, 0x380)(this, pWorldToScreen); }
    IDXGISwapChain* GetIDXGISwapChain() { return *(IDXGISwapChain**)((uintptr_t)this + 0x14D000); }
    bool WorldToScreen(Vec3 vPos, Vec3& vOut) {
        SWorldToScreen pWorldToScreen;

        pWorldToScreen.toX = vPos.x;
        pWorldToScreen.toY = vPos.y;
        pWorldToScreen.toZ = vPos.z;
        pWorldToScreen.outX = &vOut.x;
        pWorldToScreen.outY = &vOut.y;
        pWorldToScreen.outZ = &vOut.z;

        ProjectToScreen(&pWorldToScreen);

        vOut.x *= (GetWidth() * 0.01f);
        vOut.y *= (GetHeight() * 0.01f);
        vOut.z *= 1.0f;

        return ((vOut.z < 1.0f) && (vOut.x > 0) && (vOut.x < GetWidth()) && (vOut.y > 0) && (vOut.y < GetHeight()));
    }

    float GetCenterX()
    {
        return GetWidth() * 0.5f;
    }

    float GetCenterY()
    {
        return GetHeight() * 0.5f;
    }

    void DrawDynVB(SVF_P3F_C4B_T2F* pBuf, uint16_t* pInds, int nVerts, int nInds, int nPrimType)
    {
        return GetVFunc<void(__thiscall*)(PVOID, SVF_P3F_C4B_T2F*, uint16_t*, int, int, int)>(this, 0x208)(this, pBuf, pInds, nVerts, nInds, nPrimType);
    }
    float GetHypotenuse(Vec3 vPos) {
        Vec3 vScreen = { ZERO };
        if (WorldToScreen(vPos, vScreen))
        {
            FLOAT PositionX = 0.f;
            FLOAT PositionY = 0.f;
            FLOAT ScreenCenterX = (GetWidth() / 2.0f);
            FLOAT ScreenCenterY = (GetHeight() / 2.0f);
            PositionX = vScreen.x > ScreenCenterX ? vScreen.x - ScreenCenterX : ScreenCenterX - vScreen.x;
            PositionY = vScreen.y > ScreenCenterY ? vScreen.y - ScreenCenterY : ScreenCenterY - vScreen.y;
            return sqrt(PositionX * PositionX + PositionY * PositionY);
        }
        return 9999.0f;
    }
    bool IsFov(Vec3 vBonePos, int fov_) {
        return GetHypotenuse(vBonePos) <= fov_ * 4;
    }

    //--------------CRenderer-----------—
    char pad_0x000000[0x14D000]; //0x000000
    //------------CD3DRenderer----------—
    char m_WinTitle[80]; //0x14C800
    HINSTANCE m_hInst; //0x14C850
    HWND m_hWnd; //0x14C858
    HWND m_hWndDesktop; //0x14C860
    HWND m_hWnd2; //0x14C868
    HWND m_HwndBrowser; //0x14C870
    int m_desktopWidth; //0x14C878
    int m_desktopHeight; //0x14C87C
    char pad_0x14C880[0x1CC]; //0x14C880
    float m_fMemScreenScaleW; //0x14CA4C
    float m_fMemScreenScaleH; //0x14CA50
    float m_fMemScreenMinScaleW; //0x14CA54
    float m_fMemScreenMaxScaleW; //0x14CA58
    int m_iMemScreenCompression; //0x14CA5C
    class IGPUProfiler* m_profiler; //0x14CA60
    ID3D11RenderTargetView* m_pBackBuffer; //0x14CA68
    ID3D11RenderTargetView* m_pSecondBackBuffer; //0x14CA70
    ID3D11RenderTargetView* m_pZBuffer; //0x14CA78
    IDXGISwapChain* m_pSwapChain; //0x14CA80
    char pad_0x14CA88[0xD8]; //0x14CA88
    ID3D11Device* m_pd3dDevice; //0x14CB60
    ID3D11Device* m_pActuald3dDevice; //0x14CB68
    ID3D11DeviceContext* m_pd3dDeviceContext; //0x14CB70
    ID3D11DeviceContext* m_pActuald3dDeviceContext; //0x14CB78
    ID3D11InputLayout* m_pLastVDeclaration; //0x14CB80
};
 
и это чудо просило деньги за свои пастерские курсы.........
Ахаха, именно. У него еще наверное своя приватка есть которая 150 руб стоит на 1 день и андетект уже месяц :bayan:
 
C++:
Expand Collapse Copy
struct IRenderer {
public:
    Vec3 GetViewCamera() { return *(Vec3*)((uintptr_t)this + 0x17C0); }
    float GetWidth() { return (float)GetVFunc<int(__fastcall*)(PVOID)>(this, 0x330)(this); }
    float GetHeight() { return (float)GetVFunc<int(__fastcall*)(PVOID)>(this, 0x338)(this); }
    void SetWhiteTexture()
    {
        return GetVFunc<void(__thiscall*)(PVOID)>(this, 0x250)(this);
    }
    bool ProjectToScreen(SWorldToScreen* pWorldToScreen) { return GetVFunc<bool(__thiscall*)(PVOID, SWorldToScreen*)>(this, 0x380)(this, pWorldToScreen); }
    IDXGISwapChain* GetIDXGISwapChain() { return *(IDXGISwapChain**)((uintptr_t)this + 0x14D000); }
    bool WorldToScreen(Vec3 vPos, Vec3& vOut) {
        SWorldToScreen pWorldToScreen;

        pWorldToScreen.toX = vPos.x;
        pWorldToScreen.toY = vPos.y;
        pWorldToScreen.toZ = vPos.z;
        pWorldToScreen.outX = &vOut.x;
        pWorldToScreen.outY = &vOut.y;
        pWorldToScreen.outZ = &vOut.z;

        ProjectToScreen(&pWorldToScreen);

        vOut.x *= (GetWidth() * 0.01f);
        vOut.y *= (GetHeight() * 0.01f);
        vOut.z *= 1.0f;

        return ((vOut.z < 1.0f) && (vOut.x > 0) && (vOut.x < GetWidth()) && (vOut.y > 0) && (vOut.y < GetHeight()));
    }

    float GetCenterX()
    {
        return GetWidth() * 0.5f;
    }

    float GetCenterY()
    {
        return GetHeight() * 0.5f;
    }

    void DrawDynVB(SVF_P3F_C4B_T2F* pBuf, uint16_t* pInds, int nVerts, int nInds, int nPrimType)
    {
        return GetVFunc<void(__thiscall*)(PVOID, SVF_P3F_C4B_T2F*, uint16_t*, int, int, int)>(this, 0x208)(this, pBuf, pInds, nVerts, nInds, nPrimType);
    }
    float GetHypotenuse(Vec3 vPos) {
        Vec3 vScreen = { ZERO };
        if (WorldToScreen(vPos, vScreen))
        {
            FLOAT PositionX = 0.f;
            FLOAT PositionY = 0.f;
            FLOAT ScreenCenterX = (GetWidth() / 2.0f);
            FLOAT ScreenCenterY = (GetHeight() / 2.0f);
            PositionX = vScreen.x > ScreenCenterX ? vScreen.x - ScreenCenterX : ScreenCenterX - vScreen.x;
            PositionY = vScreen.y > ScreenCenterY ? vScreen.y - ScreenCenterY : ScreenCenterY - vScreen.y;
            return sqrt(PositionX * PositionX + PositionY * PositionY);
        }
        return 9999.0f;
    }
    bool IsFov(Vec3 vBonePos, int fov_) {
        return GetHypotenuse(vBonePos) <= fov_ * 4;
    }

    //--------------CRenderer-----------—
    char pad_0x000000[0x14D000]; //0x000000
    //------------CD3DRenderer----------—
    char m_WinTitle[80]; //0x14C800
    HINSTANCE m_hInst; //0x14C850
    HWND m_hWnd; //0x14C858
    HWND m_hWndDesktop; //0x14C860
    HWND m_hWnd2; //0x14C868
    HWND m_HwndBrowser; //0x14C870
    int m_desktopWidth; //0x14C878
    int m_desktopHeight; //0x14C87C
    char pad_0x14C880[0x1CC]; //0x14C880
    float m_fMemScreenScaleW; //0x14CA4C
    float m_fMemScreenScaleH; //0x14CA50
    float m_fMemScreenMinScaleW; //0x14CA54
    float m_fMemScreenMaxScaleW; //0x14CA58
    int m_iMemScreenCompression; //0x14CA5C
    class IGPUProfiler* m_profiler; //0x14CA60
    ID3D11RenderTargetView* m_pBackBuffer; //0x14CA68
    ID3D11RenderTargetView* m_pSecondBackBuffer; //0x14CA70
    ID3D11RenderTargetView* m_pZBuffer; //0x14CA78
    IDXGISwapChain* m_pSwapChain; //0x14CA80
    char pad_0x14CA88[0xD8]; //0x14CA88
    ID3D11Device* m_pd3dDevice; //0x14CB60
    ID3D11Device* m_pActuald3dDevice; //0x14CB68
    ID3D11DeviceContext* m_pd3dDeviceContext; //0x14CB70
    ID3D11DeviceContext* m_pActuald3dDeviceContext; //0x14CB78
    ID3D11InputLayout* m_pLastVDeclaration; //0x14CB80
};
Попробуй замени char pad_0x000000[0x14D000]; --> char pad_0x000000[0x14CD80];
 
Назад
Сверху Снизу