Results 1 to 15 of 42

Threaded View

  1. #1
    COD3RIN's Avatar
    Join Date
    May 2013
    Gender
    male
    Location
    Posts
    5,308
    Reputation
    468
    Thanks
    28,826
    My Mood
    Angelic

    Source Code Model Logger C++

    This is a useful source code in blackshot you need to modified this code to make it work in game

    here my example image in blackshot







    It work in few games but i don't tested it what games is that be




    Code:
    
    
    Code:
    #include <vector>
    #include <windows.h>
    #include <detours.h>
    #include <iostream>
    #include <d3d9.h>
    #include <d3dx9.h>
    
    #pragma comment(lib, "detours.lib")
    #pragma comment(lib, "d3d9.lib")
    #pragma comment(lib, "d3dx9.lib")
    
    #pragma intrinsic(_ReturnAddress)
    
    #define TEXT_POS_X 500.0f
    #define TEXT_POS_Y 280.0f
    
    typedef HRESULT(WINAPI *Prototype_Present)(LPDIRECT3DDEVICE9, CONST RECT*, CONST RECT*, HWND, CONST RGNDATA*);
    typedef HRESULT(WINAPI *Prototype_Reset)(LPDIRECT3DDEVICE9, D3DPRESENT_PARAMETERS*);
    typedef HRESULT (WINAPI* Prototype_DrawIndexedPrimitive)(LPDIRECT3DDEVICE9, D3DPRIMITIVETYPE, INT, UINT, UINT, UINT, UINT);
    
    Prototype_Present Orginal_Present;
    Prototype_Reset Orginal_Reset;
    Prototype_DrawIndexedPrimitive Orginal_DrawIndexedPrimitive;
    
    HRESULT WINAPI Hooked_Present(LPDIRECT3DDEVICE9 Device, CONST RECT *pSrcRect, CONST RECT *pDestRect, HWND hDestWindow, CONST RGNDATA *pDirtyRegion);
    HRESULT WINAPI Hooked_Reset(LPDIRECT3DDEVICE9 Device, D3DPRESENT_PARAMETERS *pp);
    HRESULT WINAPI Hooked_DrawIndexedPrimitive(LPDIRECT3DDEVICE9 Device, D3DPRIMITIVETYPE PrimType, INT BaseVertexIndex, UINT MinVertexIndex, UINT NumVertices, UINT startIndex, UINT primCount);
    
    ID3DXFont*                            g_Font                    = NULL;
    bool                                g_Init                    = false;
    int                                    g_Index                    = -1;
    HMODULE                                g_HModule                = 0;
    std::vector<void*>                    g_Vector;
    char                                g_Text[128]                = {'\0'};
    void*                                g_SelectedAddress        = NULL;
    LPDIRECT3DTEXTURE9                    g_Blue                    = NULL,
                                        g_Green                    = NULL;
    
    namespace Drawing
    {
        void Line(LPDIRECT3DDEVICE9 pDevice, float X, float Y, float Width, float Height, D3DCOLOR Color)
        {
            struct Vertex2D
            {
                float m_X, m_Y, m_Z, m_T;
                DWORD m_Color;
            };
            Vertex2D Vertex[4];
            Vertex[0].m_Color = Vertex[1].m_Color = Vertex[2].m_Color = Vertex[3].m_Color = Color;
            Vertex[0].m_Z = Vertex[1].m_Z = Vertex[2].m_Z = Vertex[3].m_Z = 0;
            Vertex[0].m_T = Vertex[1].m_T = Vertex[2].m_T = Vertex[3].m_T = 0;
            Vertex[0].m_X = Vertex[2].m_X = X;
            Vertex[0].m_Y = Vertex[1].m_Y = Y;
            Vertex[1].m_X = Vertex[3].m_X = X + Width;
            Vertex[2].m_Y = Vertex[3].m_Y = Y + Height;
            pDevice->SetTexture(0, NULL);
            pDevice->SetFVF(D3DFVF_XYZRHW|D3DFVF_DIFFUSE|D3DFVF_TEX1);
            pDevice->DrawPrimitiveUP(D3DPT_TRIANGLESTRIP, 2, Vertex, sizeof(Vertex2D));
        }
    
        void Box(LPDIRECT3DDEVICE9 pDevice, float X, float Y, float Width, float Height, float Thickness, D3DCOLOR Color)
        {
            Line(pDevice, X + Thickness, Y + Height - Thickness, Width - (Thickness * 2), Thickness, Color);
            Line(pDevice, X, Y, Thickness, Height, Color);
            Line(pDevice, X + Thickness, Y, Width - (Thickness * 2), Thickness, Color);
            Line(pDevice, X + Width - Thickness, Y, Thickness, Height, Color);
        }
    
        void DrawString(ID3DXFont *Font, float PosX, float PosY, DWORD Color, char *Text)
        {
            if(Font == NULL)
                return;
            static RECT FontRect;
            SetRect(&FontRect, 0, 0, 0, 0);
            Font->DrawTextA(0, Text, -1, &FontRect, DT_CALCRECT, Color);
            int Width = FontRect.right - FontRect.left;
            int Height = FontRect.bottom - FontRect.top;
            FontRect.right = FontRect.left + Width;
            FontRect.bottom = FontRect.top + Height;
            FontRect.left = (LONG)PosX;
            FontRect.top = (LONG)PosY;
            Font->DrawTextA(0, Text, -1, &FontRect, DT_NOCLIP, Color);
        }
    }
    
    DWORD FindDevice(DWORD Len)
    {
         DWORD dwObjBase = 0;
            
         dwObjBase = (DWORD)LoadLibrary("d3d9.dll");
         while (dwObjBase++ < dwObjBase + Len)
         {
             if ( (*(WORD*)(dwObjBase + 0x00)) == 0x06C7
               && (*(WORD*)(dwObjBase + 0x06)) == 0x8689
               && (*(WORD*)(dwObjBase + 0x0C)) == 0x8689
               ) { dwObjBase += 2; break; }
         }
         return( dwObjBase );
    }
    
    DWORD GetDeviceAddress(int VTableIndex)
    {
        PDWORD VTable;
        *(DWORD*)&VTable = *(DWORD*)FindDevice(0x128000);
        return VTable[VTableIndex];
    }
    
    void HookThread()
    {
        Orginal_Present = (Prototype_Present)DetourFunction((PBYTE)GetDeviceAddress(17), (PBYTE)Hooked_Present);
        Orginal_Reset = (Prototype_Reset)DetourFunction((PBYTE)GetDeviceAddress(16), (PBYTE)Hooked_Reset);
        Orginal_DrawIndexedPrimitive = (Prototype_DrawIndexedPrimitive)DetourFunction((PBYTE)GetDeviceAddress(82), (PBYTE)Hooked_DrawIndexedPrimitive);
    
        while(true)
        {
            if(GetAsyncKeyState(VK_PAUSE) &1)
            {
                FreeLibraryAndExitThread(g_HModule, 0);
                return;
            }
            else if(GetAsyncKeyState(VK_RIGHT) &1)
            {
                if(g_Index != g_Vector.size() - 1)
                {
                    g_Index++;
                    g_SelectedAddress = g_Vector[g_Index];
                }
            }
            else if(GetAsyncKeyState(VK_LEFT) &1)
            {
                if(g_Index >= 0)
                {
                    g_Index--;
                    g_SelectedAddress = g_Vector[g_Index];
                    if(g_Index == -1)
                        g_SelectedAddress = NULL;
                }
            }
            Sleep(100);
        }
    }
    
    BOOL WINAPI DllMain(HINSTANCE hInsatnce, DWORD dwReason, LPVOID lpReserved)
    {
        if(dwReason == DLL_PROCESS_ATTACH)
        {
            g_HModule = hInsatnce;
            EXECUTETHREADHEREPLS(0, 0, (LPTHREAD_START_ROUTINE)HookThread, 0, 0, 0);
        }
        else if(dwReason == DLL_PROCESS_DETACH)
        {
            if(g_Font != NULL)
            {
                g_Font->OnLostDevice();
                g_Font->OnResetDevice();
                g_Font->Release();
                g_Font = NULL;
            }
            DetourRemove((PBYTE)Orginal_Present, (PBYTE)Hooked_Present);
            DetourRemove((PBYTE)Orginal_Reset, (PBYTE)Hooked_Reset);
            DetourRemove((PBYTE)Orginal_DrawIndexedPrimitive, (PBYTE)Hooked_DrawIndexedPrimitive);
        }
        return TRUE;
    }
    
    bool IsAddressPresent(void* Address)
    {
        for(auto it = g_Vector.begin(); it != g_Vector.end(); ++it)
        {
            if(*it == Address)
                return true;
        }
        return false;
    }
    
    HRESULT GenerateTexture(LPDIRECT3DDEVICE9 pDevice, IDirect3DTexture9 **ppD3Dtex, DWORD colour32)
    {
        if( FAILED(pDevice->CreateTexture(8, 8, 1, 0, D3DFMT_A4R4G4B4, D3DPOOL_MANAGED, ppD3Dtex, NULL)) )
            return E_FAIL;
        
        WORD colour16 =    ((WORD)((colour32>>28)&0xF)<<12)
                |(WORD)(((colour32>>20)&0xF)<<8)
                |(WORD)(((colour32>>12)&0xF)<<4)
                |(WORD)(((colour32>>4)&0xF)<<0);
    
        D3DLOCKED_RECT d3dlr;    
        (*ppD3Dtex)->LockRect(0, &d3dlr, 0, 0);
        WORD *pDst16 = (WORD*)d3dlr.pBits;
    
        for(int xy=0; xy < 8*8; xy++)
            *pDst16++ = colour16;
    
        (*ppD3Dtex)->UnlockRect(0);
    
        return S_OK;
    }
    
    HRESULT WINAPI Hooked_Present(LPDIRECT3DDEVICE9 Device, CONST RECT *pSrcRect, CONST RECT *pDestRect, HWND hDestWindow, CONST RGNDATA *pDirtyRegion)
    {
        if(!g_Init)
        {
            if(g_Font == NULL)
                D3DXCreateFontA(Device, 21, 0, true, 1, false, DEFAULT_CHARSET, OUT_DEFAULT_PRECIS, ANTIALIASED_QUALITY, DEFAULT_PITCH | FF_DONTCARE, "Arial", &g_Font);
            memset(g_Text, 0, sizeof(g_Text));
            GenerateTexture(Device, &g_Blue, D3DCOLOR_ARGB(255, 0, 0, 255));
            GenerateTexture(Device, &g_Green, D3DCOLOR_ARGB(255, 0, 255, 0));
            g_Init = !g_Init;
        }
    
        D3DVIEWPORT9 VP;
        memset(&VP, 0, sizeof(D3DVIEWPORT9));
        Device->GetViewport(&VP);
        float X = (float)VP.Width / 800;
        float Y = (float)VP.Height / 600;
    
        Drawing::Box(Device, X * TEXT_POS_X - 10.0f, Y * TEXT_POS_Y + 23.0f, 300.0f, 82.0f, 4.0f, D3DCOLOR_ARGB(200, 255, 0, 0));
        Drawing::DrawString(g_Font, X * TEXT_POS_X, Y * TEXT_POS_Y, D3DCOLOR_ARGB(200, 255, 0, 0), "Momo5000's Return Address Logger");
    
        memset(g_Text, 0, sizeof(g_Text));
        sprintf_s(g_Text, sizeof(g_Text), "Vector size: %d", g_Vector.size());
        Drawing::DrawString(g_Font, X * TEXT_POS_X, Y * TEXT_POS_Y + 25.0f, D3DCOLOR_ARGB(200, 0, 0, 255), g_Text);
    
        memset(g_Text, 0, sizeof(g_Text));
        sprintf_s(g_Text, sizeof(g_Text), "Selected Index: %d", g_Index);
        Drawing::DrawString(g_Font, X * TEXT_POS_X, Y * TEXT_POS_Y + 50.0f, D3DCOLOR_ARGB(200, 0, 0, 255), g_Text);
    
        memset(g_Text, 0, sizeof(g_Text));
        sprintf_s(g_Text, sizeof(g_Text), "Selected Address: [0x%X]", g_SelectedAddress);
        Drawing::DrawString(g_Font, X * TEXT_POS_X, Y * TEXT_POS_Y + 75.0f, D3DCOLOR_ARGB(200, 0, 0, 255), g_Text);
    
        return Orginal_Present(Device, pSrcRect, pDestRect, hDestWindow, pDirtyRegion);
    }
    
    HRESULT WINAPI Hooked_Reset(LPDIRECT3DDEVICE9 Device, D3DPRESENT_PARAMETERS *pp)
    {
        if(g_Font != NULL)
        {
            g_Font->OnLostDevice();
            g_Font->OnResetDevice();
        }
        return Orginal_Reset(Device, pp);
    }
    
    HRESULT WINAPI Hooked_DrawIndexedPrimitive(LPDIRECT3DDEVICE9 Device, D3DPRIMITIVETYPE PrimType, INT BaseVertexIndex, UINT MinVertexIndex, UINT NumVertices, UINT startIndex, UINT primCount)
    {
        void* ReturnAddress = _ReturnAddress();
        if(!IsAddressPresent(ReturnAddress))
            g_Vector.push_back(ReturnAddress);
    
         if(ReturnAddress != NULL && g_SelectedAddress != NULL && ReturnAddress == g_SelectedAddress)
         {
             Device->SetRenderState(D3DRS_ZENABLE, FALSE);
             Device->SetTexture(0, g_Blue);
             Orginal_DrawIndexedPrimitive(Device, PrimType, BaseVertexIndex, MinVertexIndex, NumVertices, startIndex, primCount);
            Device->SetRenderState(D3DRS_ZENABLE, TRUE);
            Device->SetTexture(0, g_Green);
         }
    
        return Orginal_DrawIndexedPrimitive(Device, PrimType, BaseVertexIndex, MinVertexIndex, NumVertices, startIndex, primCount);
    
    }
    
    



    credit in source code
    Last edited by COD3RIN; 12-29-2013 at 07:31 AM.
    ᚛C☢dℝin3᚜
    Love you.
    ~Kenshit13
    Quote Originally Posted by cheaterman26 View Post
    COD3RIN PUT A BACKDOOR ON HIS OWN CHEAT HE HACK MY COMPUTER AND MY STEAM, DON'T TRUST THIS GUYS !



  2. The Following 2 Users Say Thank You to COD3RIN For This Useful Post:

    sahrul012 (01-27-2014),Yakinican (09-30-2015)

Similar Threads

  1. [Request] Key Logger Source Code
    By furmonk in forum General Hacking
    Replies: 1
    Last Post: 03-07-2013, 06:39 PM
  2. [Help Request] Source Code logger
    By alombrown in forum WarRock Help
    Replies: 2
    Last Post: 12-06-2012, 03:22 PM
  3. [Source Code] Combat Arms address logger source code (Gellin !!!)
    By ~Silver~ in forum Combat Arms BR Hack Coding/Source Code
    Replies: 17
    Last Post: 02-04-2012, 10:13 AM
  4. [C++ Source Code]WarRock Position Logger
    By BlacK_Šata in forum WarRock Hack Source Code
    Replies: 6
    Last Post: 11-10-2010, 09:45 AM
  5. HALO 2 (XBOX) Source Code
    By mirelesmichael in forum General Game Hacking
    Replies: 12
    Last Post: 09-23-2006, 04:35 AM