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

[GMOD C++] Screengrab bypass

  • Автор темы Автор темы Foer
  • Дата начала Дата начала
⭐ONEHACK⭐
Начинающий
Начинающий
Статус
Оффлайн
Регистрация
22 Фев 2019
Сообщения
70
Реакции
16
Ребят делаю чит под GMOD на плюсах, использую ISurface для отрисовки чамсов, но вот задача, сделал байпас от обычных стимовских скриншотов,
а как сделать байпас того же render.Capture, я хз как,хелпаните кто может!
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Ребят делаю чит под GMOD на плюсах, использую ISurface для отрисовки чамсов, но вот задача, сделал байпас от обычных стимовских скриншотов,
а как сделать байпас того же render.Capture, я хз как,хелпаните кто может!
Его нужно хукнуть и изменить параметры
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
C++:
Expand Collapse Copy
using ReadPixels_t = void (__thiscall *)( IMatRenderContext *ecx, uintptr_t edx, int x, int y, int w, int h, uint8_t *data, int dst );
 
//
// hooked func
//
VMTHook render_context_VMT( g_render_context );
 
void __fastcall ReadPixels( IMatRenderContext *ecx, uintptr_t edx, int x, int y, int w, int h, uint8_t *data, int dst ) {
    CViewSetup setup;
 
    // some return inside the rendercapture C++ func
    // return will be the next instruction
    if( (uintptr_t)_ReturnAddress() == g_rendercapture_ret ) {
        // notify client handler
        // just to be safe... maybe stop rendering your visuals
        g_cheat.screengrab = true;
 
        // clear screen backbuffer
        ecx->ClearBuffers( true, true, true );
 
        // render a new frame to the backbuffer
        g_chlclient->GetPlayerView( setup );
        g_chlclient->RenderView( setup, ( VIEW_CLEAR_COLOR | VIEW_CLEAR_DEPTH ), ( RENDERVIEW_DRAWVIEWMODEL | RENDERVIEW_DRAWHUD ) );
 
        g_cheat.screengrab = false;
    }
 
    render_context_VMT.get_old_func< ReadPixels_t >( 11 )( ecx, x, y, w, h, data, dst );
}
 
render_context_VMT.hook( 11, &ReadPixels );
 
C++:
Expand Collapse Copy
using ReadPixels_t = void (__thiscall *)( IMatRenderContext *ecx, uintptr_t edx, int x, int y, int w, int h, uint8_t *data, int dst );

//
// hooked func
//
VMTHook render_context_VMT( g_render_context );

void __fastcall ReadPixels( IMatRenderContext *ecx, uintptr_t edx, int x, int y, int w, int h, uint8_t *data, int dst ) {
    CViewSetup setup;

    // some return inside the rendercapture C++ func
    // return will be the next instruction
    if( (uintptr_t)_ReturnAddress() == g_rendercapture_ret ) {
        // notify client handler
        // just to be safe... maybe stop rendering your visuals
        g_cheat.screengrab = true;

        // clear screen backbuffer
        ecx->ClearBuffers( true, true, true );

        // render a new frame to the backbuffer
        g_chlclient->GetPlayerView( setup );
        g_chlclient->RenderView( setup, ( VIEW_CLEAR_COLOR | VIEW_CLEAR_DEPTH ), ( RENDERVIEW_DRAWVIEWMODEL | RENDERVIEW_DRAWHUD ) );

        g_cheat.screengrab = false;
    }

    render_context_VMT.get_old_func< ReadPixels_t >( 11 )( ecx, x, y, w, h, data, dst );
}

render_context_VMT.hook( 11, &ReadPixels );
Видел это на UK, но чтобы я не делал, это не работает на моём исходнике Free The Skinds (GSDK)
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Видел это на UK, но чтобы я не делал, это не работает на моём исходнике Free The Skinds (GSDK)
эта сигнатура устаревшая? uintptr_t g_rendercapture_ret = sigscan( "client.dll", "6A 20 8D 4D B8" );
 
Ладненько, спасибо всем за участие, я решил проблему другим путем, перенес все на imgui
 
Слишком много гемороя имхо, просто захукай void CHLClient::View_Render( vrect_t *rect ) , актуальный индекс 26.
Ищи на UC ( Perfect Anti-Screenshot ), от 1Lee.
 
Назад
Сверху Снизу