[Source Code] Undetected D3D HOOK

Discussion in 'Subnautica Accounts - Buy Sell Trade' started by zmodteam, 10/4/16.

Thread Status:
Not open for further replies.
  1. zmodteam

    zmodteam
    Expand Collapse
    High Risk Status: This user has been flagged as high risk due to one or more reasons

    0   0   0

    Online
    CPP:
    Code:
    extern "C" __declspec(dllexport) BOOL WINAPI DllMain(HMODULE hDLL, DWORD dwReason, LPVOID lpvRe)
    {
    DisableThreadLibraryCalls(hDLL);

    if(dwReason == DLL_PROCESS_ATTACH)
    {
    MID_D3DX9_29();
    }
    return true;
    }
    H:
    Code:
    DWORD jump_Font,jump_Present,jump_DrawIndexedPrimitive;


    /*========================================*/
    __declspec(naked) DWORD __stdcall pPresent( LPDIRECT3DDEVICE9 pDevice, CONST RECT* pSourceRect,CONST RECT* pDestRect,HWND hDestWindowOverride,CONST RGNDATA* pDirtyRegion)
    {
    __asm
    {
    MOV EDI,EDI
    PUSH EBP
    MOV EBP,ESP
    jmp jump_Present
    }
    }
    HRESULT _stdcall my_Present(LPDIRECT3DDEVICE9 pDevice, CONST RECT* pSourceRect,CONST RECT* pDestRect,HWND hDestWindowOverride,CONST RGNDATA* pDirtyRegion)
    {

    return pPresent(pDevice, pSourceRect, pDestRect, hDestWindowOverride, pDirtyRegion);
    }
    /*========================================*/








    __declspec(naked) DWORD __stdcall pDrawIndexedPrimitive(LPDIRECT3DDEVICE9 pDevice, D3DPRIMITIVETYPE Type, INT BaseVertexIndex, UINT MinIndex,UINT NumVertices, UINT StartIndex, UINT PrimitiveCount)
    {
    __asm
    {
    MOV EDI,EDI
    PUSH EBP
    MOV EBP,ESP
    jmp jump_DrawIndexedPrimitive
    }
    }

    HRESULT _stdcall my_DrawIndexedPrimitive(LPDIRECT3DDEVICE9 pDevice, D3DPRIMITIVETYPE Type, INT BaseVertexIndex, UINT MinIndex,UINT NumVertices, UINT StartIndex, UINT PrimitiveCount)
    {

    return pDrawIndexedPrimitive(pDevice, Type, BaseVertexIndex, MinIndex, NumVertices, StartIndex, PrimitiveCount);
    }
    /*========================================*/









    /*========================================*/
    __declspec(naked) DWORD __stdcall D3DXCreateFont(DWORD A, DWORD B, DWORD C, DWORD D, DWORD E, DWORD F, DWORD G, DWORD H, DWORD I, DWORD J, DWORD K, DWORD L)
    {
    __asm
    {
    MOV EDI,EDI
    PUSH EBP
    MOV EBP,ESP
    jmp jump_Font
    }
    }
    DWORD __stdcall MyD3DXCreateFont(DWORD A, DWORD B, DWORD C, DWORD D, DWORD E, DWORD F, DWORD G, DWORD H, DWORD I, DWORD J, DWORD K, DWORD L)
    {
    DWORD thisa = *(DWORD*)A;


    /*=====Present Hook=====*/
    DWORD old_Present;
    DWORD PSAddress = thisa + 68;//17*4 Present
    DWORD MID_Present = *(DWORD*)PSAddress;
    jump_Present = MID_Present+5;

    VirtualProtect((LPVOID)MID_Present, 5, PAGE_EXECUTE_READWRITE, &old_Present);
    *(PBYTE)MID_Present = 0xE9;
    *(PULONG)(MID_Present+1) = (DWORD)my_Present - (MID_Present + 5);
    /*=====Present Hook=====*/


    /*=====DrawIndexedPrimitive Hook=====*/
    DWORD OLD_DrawIndexedPrimitive;
    DWORD DIPAddress = thisa + 328;//82*4 DrawIndexedPrimitive
    DWORD MID_DrawIndexedPrimitive = *(DWORD*)DIPAddress;
    jump_DrawIndexedPrimitive = MID_DrawIndexedPrimitive +5;

    VirtualProtect((LPVOID)MID_DrawIndexedPrimitive, 5, PAGE_EXECUTE_READWRITE, &OLD_DrawIndexedPrimitive);
    *(PBYTE)MID_DrawIndexedPrimitive = 0xE9;
    *(PULONG)(MID_DrawIndexedPrimitive+1) = (DWORD)my_DrawIndexedPrimitive - (MID_DrawIndexedPrimitive + 5);
    /*=====DrawIndexedPrimitive Hook=====*/




    *(PULONG)(jump_Font-5) = 0x0000008b;
    *(PULONG)(jump_Font-4) = 0xEC8B55FF;

    return D3DXCreateFont(A,B,C,D,E,F,G,H,I,J,K,L);
    }
    /*========================================*/







    void MID_D3DX9_29()
    {
    DWORD OLD_Font;
    HMODULE H_D3DX9_29 = LoadLibraryA("d3dx9_29.dll");

    PVOID Address_Font = (PVOID)GetProcAddress(H_D3DX9_29, eCreateFont);
    VirtualProtect(Address_Font, 5, PAGE_EXECUTE_READWRITE, &OLD_Font);
    jump_Font = (DWORD)Address_Font + 0x5;
    *(PULONG)Address_Font = 0xE9;
    *(PULONG)((DWORD)Address_Font +0x1) = (DWORD)MyD3DXCreateFont - ((DWORD)Address_Font + 0x5);
    }
     
    • This user is inactive. Hasn't logged into their account in over 60 days.
Thread Status:
Not open for further replies.