d3d9.dll EndScene ?

07/18/2010 19:56 N1GHTLIFE#1
Hey, ich wollte mal fragen ob es noch möglich ist die Funktion EndScene aus der d3d9.dll zu hooken. Weil bei mir findet IDA die Funktion EndSene nicht...

Ich hab Windows 7 64 bit Professional. (In der d3d10.dll ist auch keine Funktion die EndSene heißt)


mfG
07/18/2010 20:09 Akorn#2
Dann such mal nach EndScene
07/18/2010 20:12 N1GHTLIFE#3
Das ist ein Rechtschreibfehler ich weiß das die Funktion EndScene heißt :rolleyes:

PS: Siehe Titel :D

mfG
07/18/2010 21:11 Akorn#4
Du hattest es aber auch direkt 2mal falsch geschrieben.
07/18/2010 21:52 xWaffeleisen#5
Machs doch einfach mit VTable by Gordon (google hilft) dann gehts auch mit jeder Version der dll.
07/18/2010 22:05 Bl@ze!#6
Quote:
Originally Posted by xWaffeleisen View Post
Machs doch einfach mit VTable by Gordon (google hilft) dann gehts auch mit jeder Version der dll.
* solange sich die Virtuellen Funktionen nicht verändern und verschieben. :)
07/18/2010 23:47 P-a-i-n#7
und 64 bit hat nach jedem systemneustart eine andere adresse also müßte man es da immer neu machen

da haste z.B was
[Only registered and activated users can see links. Click Here To Register...]
07/19/2010 01:04 vst0rm#8
hey da ich auch die Funktion EndScene suche/gesucht hab hab ich mir das ganze mal im debugger angesehen
hier der Source Code meines test programms
PHP Code:
// include the basic windows header files and the Direct3D header file
#include <windows.h>
#include <windowsx.h>
#include <d3d9.h>

// include the Direct3D Library file
#pragma comment (lib, "d3d9.lib")

// global declarations
LPDIRECT3D9 d3d;    // the pointer to our Direct3D interface
LPDIRECT3DDEVICE9 d3ddev;    // the pointer to the device class

// function prototypes
void initD3D(HWND hWnd);    // sets up and initializes Direct3D
void render_frame(void);    // renders a single frame
void cleanD3D(void);    // closes Direct3D and releases memory

// the WindowProc function prototype
LRESULT CALLBACK WindowProc(HWND hWndUINT messageWPARAM wParamLPARAM lParam);


// the entry point for any Windows program
int WINAPI WinMain(HINSTANCE hInstance,
                   
HINSTANCE hPrevInstance,
                   
LPSTR lpCmdLine,
                   
int nCmdShow)
{
    
HWND hWnd;
    
WNDCLASSEX wc;

    
ZeroMemory(&wcsizeof(WNDCLASSEX));

    
wc.cbSize sizeof(WNDCLASSEX);
    
wc.style CS_HREDRAW CS_VREDRAW;
    
wc.lpfnWndProc WindowProc;
    
wc.hInstance hInstance;
    
wc.hCursor LoadCursor(NULLIDC_ARROW);
    
wc.hbrBackground = (HBRUSH)COLOR_WINDOW;
    
wc.lpszClassName L"WindowClass";

    
RegisterClassEx(&wc);

    
hWnd CreateWindowEx(NULL,
                          
L"WindowClass",
                          
L"DirectX test Window",
                          
WS_OVERLAPPEDWINDOW,
                          
300300,
                          
400300,
                          
NULL,
                          
NULL,
                          
hInstance,
                          
NULL);

    
ShowWindow(hWndnCmdShow);                    // ### 002710A4 siehe Bild ###

    // set up and initialize Direct3D
    
initD3D(hWnd);

    
// enter the main loop:

    
MSG msg;

    while(
TRUE)
    {
        while(
PeekMessage(&msgNULL00PM_REMOVE))
        {
            
TranslateMessage(&msg);
            
DispatchMessage(&msg);
        }

        if(
msg.message == WM_QUIT)
            break;


        
render_frame();
    }

    
// clean up DirectX and COM
    
cleanD3D();

    return 
msg.wParam;
}


// this is the main message handler for the program
LRESULT CALLBACK WindowProc(HWND hWndUINT messageWPARAM wParamLPARAM lParam)
{

    switch(
message)
    {
        case 
WM_DESTROY:
            {
                
PostQuitMessage(0);
                return 
0;
            } break;

        case 
WM_CHAR:
            {
                if (
wParam == 'w')
                    
MessageBoxA(0"push w""wParam"0);
                
            }break;
    }

    return 
DefWindowProc (hWndmessagewParamlParam);
}


// this function initializes and prepares Direct3D for use
void initD3D(HWND hWnd)
{
    
d3d Direct3DCreate9(D3D_SDK_VERSION);    // create the Direct3D interface

    
D3DPRESENT_PARAMETERS d3dpp;    // create a struct to hold various device information

    
ZeroMemory(&d3dppsizeof(d3dpp));    // clear out the struct for use
    
d3dpp.Windowed TRUE;    // program windowed, not fullscreen
    
d3dpp.SwapEffect D3DSWAPEFFECT_DISCARD;    // discard old frames
    
d3dpp.hDeviceWindow hWnd;    // set the window to be used by Direct3D


    // create a device class using this information and the info from the d3dpp stuct
    
d3d->CreateDevice(D3DADAPTER_DEFAULT,
                      
D3DDEVTYPE_HAL,
                      
hWnd,
                      
D3DCREATE_SOFTWARE_VERTEXPROCESSING,
                      &
d3dpp,
                      &
d3ddev);
}


// this is the function used to render a single frame
void render_frame(void)
{
    
// clear the window to a deep blue
    
d3ddev->Clear(0NULLD3DCLEAR_TARGETD3DCOLOR_XRGB(040100), 1.0f0);

    
d3ddev->BeginScene();    // begins the 3D scene

    // do 3D rendering on the back buffer here

    
d3ddev->EndScene();    // ends the 3D scene

    
d3ddev->Present(NULLNULLNULLNULL);   // displays the created frame on the screen
}


// this is the function that cleans up Direct3D and COM
void cleanD3D(void)
{
    
d3ddev->Release();    // close and release the 3D device
    
d3d->Release();    // close and release Direct3D

und hier ein Screenshot vom Debugger: [Only registered and activated users can see links. Click Here To Register...]

hab EndScene markiert mir ist aber unklar warum die Addresse der Funktion so aufgelöst wird wenn wer näheres weiß bitte posten xD

Edit:
na ja ich war gestern wohl ein wenig müde ... hab ne Antwort gefunden ^^
[Only registered and activated users can see links. Click Here To Register...]