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

Пользователь
Статус
Оффлайн
Регистрация
5 Июл 2022
Сообщения
996
Реакции[?]
86
Поинты[?]
23K
Добрый вечер! Настроил имгуй, сделал меню. В бин 64 не крашит, но как только захожу в ориг вф, то получаю краш. Почему может быть так?
 
dev
Забаненный
Статус
Оффлайн
Регистрация
5 Апр 2022
Сообщения
302
Реакции[?]
215
Поинты[?]
3K
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
во 1х. Опять спрашиваешь помощи не приложив даже кода.
Во 2х. если вызываешь где либо чтение памяти, может оно крашит из за невалид офсетов?
 
Пользователь
Статус
Оффлайн
Регистрация
5 Июл 2022
Сообщения
996
Реакции[?]
86
Поинты[?]
23K
во 1х. Опять спрашиваешь помощи не приложив даже кода.
Во 2х. если вызываешь где либо чтение памяти, может оно крашит из за невалид офсетов?
C++:
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 );
}
 
Пользователь
Статус
Оффлайн
Регистрация
21 Окт 2019
Сообщения
346
Реакции[?]
48
Поинты[?]
15K
C++:
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 и может реверсеры скажут что не так
 
dev
Забаненный
Статус
Оффлайн
Регистрация
5 Апр 2022
Сообщения
302
Реакции[?]
215
Поинты[?]
3K
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Скорее всего оффсеты из IRenderer уже не актуальны. Скинь полностью класс IRenderer и может реверсеры скажут что не так
Объективно если хук ставится без анти чита, то IRenderer у него актуален, может быть что то другое его отрыгивает
 
Пользователь
Статус
Оффлайн
Регистрация
5 Июл 2022
Сообщения
996
Реакции[?]
86
Поинты[?]
23K
Скорее всего оффсеты из IRenderer уже не актуальны. Скинь полностью класс IRenderer и может реверсеры скажут что не так
C++:
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
};
 
Начинающий
Статус
Оффлайн
Регистрация
17 Янв 2021
Сообщения
49
Реакции[?]
4
Поинты[?]
0
и это чудо просило деньги за свои пастерские курсы.........
Ахаха, именно. У него еще наверное своя приватка есть которая 150 руб стоит на 1 день и андетект уже месяц :bayan:
 
Пользователь
Статус
Оффлайн
Регистрация
5 Июл 2022
Сообщения
996
Реакции[?]
86
Поинты[?]
23K
Пользователь
Статус
Оффлайн
Регистрация
21 Окт 2019
Сообщения
346
Реакции[?]
48
Поинты[?]
15K
C++:
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];
 
Начинающий
Статус
Оффлайн
Регистрация
12 Мар 2022
Сообщения
11
Реакции[?]
3
Поинты[?]
0
Сверху Снизу