во 1х. Опять спрашиваешь помощи не приложив даже кода.
Во 2х. если вызываешь где либо чтение памяти, может оно крашит из за невалид офсетов?
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 и может реверсеры скажут что не так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 уже не актуальны. Скинь полностью класс IRenderer и может реверсеры скажут что не так
Скорее всего оффсеты из IRenderer уже не актуальны. Скинь полностью класс IRenderer и может реверсеры скажут что не так
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 день и андетект уже месяци это чудо просило деньги за свои пастерские курсы.........
мейби вы не будете всякую дичь высирать? Я просто попросил помощи. + Все что я пастю, не идет в продажуи это чудо просило деньги за свои пастерские курсы.........
Попробуй замени char pad_0x000000[0x14D000]; --> char pad_0x000000[0x14CD80];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];
извини конечно за вопрос, а что ты не пастишь?)мейби вы не будете всякую дичь высирать? Я просто попросил помощи. + Все что я пастю, не идет в продажу
Не умеетизвини конечно за вопрос, а что ты не пастишь?)
Проект предоставляет различный материал, относящийся к сфере киберспорта, программирования, ПО для игр, а также позволяет его участникам общаться на многие другие темы. Почта для жалоб: admin@yougame.biz