|
Thema |
Forum |
Letzter Beitrag |
Beiträge |
Zugriffe |
 |
[Help] D3D Hook - D3DXCreateFont & DrawFont
Erstellt am: Do 3. Apr 2014, 23:03
OrkSchamane
Vorschau
Go To Post
Hallo ich arbeite z.Z. ein paar tut's durch und würde gerne "Deutsche" schrift in eine Fremde Anwendung Zeichnen. Mein derzeitiger Stand: Um Links zu sehen, musst du dich registrierenCPP Code: const D3DCOLOR txtPink = D3DCOLOR_ARGB(255, 255, 0, 255); // Alpha, Rot, Grün, Blau const D3DCOLOR txtBlaue = D3DCOLOR_ARGB(255, 0, 0, 255); // Alpha, Rot, Grün, Blau void DrawFont (int X, int Y, D3DCOLOR Color, char *format, ...); void DrawRect (LPDIRECT3DDEVICE9 Device_t, int X, int Y, int L, int H, D3DCOLOR color); //Our font interface ID3DXFont *g_font=NULL; HRESULT __stdcall hkEndScene(LPDIRECT3DDEVICE9 pDevice) { DrawRect ( pDevice, 10, 10, 200, 200, txtPink); if ( g_font == 0 ) { D3DXCreateFont(pDevice, 14, 0, FW_NORMAL, 1, false, DEFAULT_CHARSET, OUT_DEFAULT_PRECIS, ANTIALIASED_QUALITY, DEFAULT_PITCH | FF_DONTCARE, (LPCWSTR)"Arial", &g_font ); } else { DrawFont ( 20, 50, txtBlaue, "Hife" ); g_font->OnLostDevice(); g_font->OnResetDevice(); } DrawFont ( 300, 50, txtPink, "Bitte" ); return pEndScene(pDevice); } //Draw------------ void DrawRect (LPDIRECT3DDEVICE9 Device_t, int X, int Y, int L, int H, D3DCOLOR color) { D3DRECT rect = {X, Y, X+L, Y+H}; Device_t->Clear(1, &rect, D3DCLEAR_TARGET, color, 0, 0); } void DrawFont (int X, int Y, D3DCOLOR Color, char *format, ...) { //const char *fps_string; //fps_string = "a"; char buffer[256]; va_list args; // deswegen: #include <cstdio> va_start (args, format); vsprintf (buffer,format, args); RECT FontRect = { X, Y, X + 120, Y + 16 }; g_font->DrawText(NULL, //pSprite (LPCWSTR) buffer, //pString -1, //Count &FontRect, //pRect DT_NOCLIP,//Format, Color); //Color //( NULL, buffer, -1, &FontRect, DT_NOCLIP , Color ); // Zeichnen va_end (args); }
Frage 2: Warum bekomme ich immer wieder den Fehler (in Visual Studio 2010) wenn ich bei buffer das (LPCWSTR) weg lasse: Das Argument vom Typ ""char *"" ist mit dem Parameter vom Typ ""LPCWSTR"" inkompatibel.Hier der Code zur Frage 2: CPP Code: g_font->DrawText( NULL, (LPCWSTR) buffer, //<--- hier ist der Bösewicht -1, &FontRect, DT_NOCLIP, Color);
und bei CPP Code: D3DXCreateFont(pDevice, 14, 0, FW_NORMAL, 1, false, DEFAULT_CHARSET, OUT_DEFAULT_PRECIS, ANTIALIASED_QUALITY, DEFAULT_PITCH | FF_DONTCARE, "Arial", //<--- hier wurde jetzt der Fehler erscheinen &g_font );
wird bei mir immer das "Arial" als Fehler angegeben: Das Argument vom Typ ""const char *"" ist mit dem Parameter vom Typ ""LPCWSTR"" inkompatibel.Frage 3: Wenn die Anwendung scalliere oder full Scren aktivere kommt diese Fehlermeldung: Um Links zu sehen, musst du dich registrierenWas kann/muss ich tun? Danke
|
VB, C/C++, Delphi, etc |
Do 21. Aug 2014, 10:23
von vedel
|
4 |
1824 |
 |
[Help] D3D Hook - D3DXCreateFont & DrawFont
Erstellt am: Do 3. Apr 2014, 23:03
OrkSchamane
Vorschau
Go To Post
kann mir nochmal jemand sagen was in meinem code falsch ist? Situation: ich möchte ein rectangle und schrift in eine directx9 Anwendung rein malen, wenn ich nun die Fenstergröße verändere wird das spiel nicht mehr gezeichnet. Der Fehlerhafte C++ Code dazu:TEXT Code: #define _CRT_SECURE_NO_WARNINGS #include <Windows.h> #include <cstdio> #include <time.h> #include <d3d9.h> //einmal endscene() hooken. #include <d3dx9.h> #pragma once #pragma comment(lib, "d3d9.lib") #pragma comment(lib,"d3dx9d.lib") #pragma comment(lib,"d3dx9.lib") const D3DCOLOR txtGreen = D3DCOLOR_ARGB(255, 0, 255, 0); //um zu in das game-Fenster zu malen brauch man ein D3DCOLOR HRESULT __stdcall hkEndScene(LPDIRECT3DDEVICE9 pDevice); typedef HRESULT(__stdcall* EndScene_t)(LPDIRECT3DDEVICE9); EndScene_t pEndScene; DWORD WINAPI HookThread(); //typedef und einen Funktionspointer davon void add_log(char* format, ...); void* DetourFunc(PBYTE src, const PBYTE dst, const int len); bool bDataCompare(const BYTE* pData, const BYTE* bMask, const char* szMask); DWORD dwFindPattern(DWORD dwAddress,DWORD dwLen,BYTE *bMask,char * szMask); HMODULE hModD3D9 = NULL; FARPROC dwEndScene = NULL; HANDLE tmpHandle = NULL; DWORD* VTableStart = NULL; //Pointer auf die VTable DWORD tempadd = NULL; const D3DCOLOR txtPink = D3DCOLOR_ARGB(100, 255, 0, 255); // Alpha, Rot, Grün, Blau const D3DCOLOR txtBlaue = D3DCOLOR_ARGB(100, 0, 0, 255); // Alpha, Rot, Grün, Blau void DrawFont (int X, int Y, D3DCOLOR Color, char *format, ...); void DrawRect (LPDIRECT3DDEVICE9 Device_t, int X, int Y, int L, int H, D3DCOLOR color); //Our font interface ID3DXFont *g_font=NULL; #pragma endregion typedef HRESULT(__stdcall* Reset_t)(IDirect3DDevice9*, D3DPRESENT_PARAMETERS*); //<-- bool DIPInit = true; Reset_t OrigReset; //--------------- BOOL WINAPI DllMain(HINSTANCE hinstDll,DWORD Reason,LPVOID Reserved) { switch(Reason) { case DLL_PROCESS_ATTACH: add_log("==========LOG START=========="); add_log("DLL Attached"); add_log("Creating Thread..."); tmpHandle = CreateThread(0, 0, (LPTHREAD_START_ROUTINE)&HookThread, 0, 0, 0); if (!tmpHandle) { add_log("ThreadCreation Failed!"); } break; case DLL_PROCESS_DETACH: add_log("DLL Detached"); add_log("==========LOG END==========\n\n\n"); break; } return 1; } DWORD WINAPI HookThread(void) { add_log("Thread Created"); while (!hModD3D9) { add_log("Searching d3d9.dll..."); hModD3D9 = GetModuleHandle("d3d9.dll"); Sleep(100); } add_log("Found d3d9.dll: %x !", hModD3D9); //---------VTable finden tempadd = dwFindPattern((DWORD)hModD3D9, 0x128000, (PBYTE)"\xC7\x06\x00\x00\x00\x00\x89\x86\x00\x00\x00\x00\x89\x86", "xx????xx????xx"); VTableStart = (DWORD*) *(DWORD*)(tempadd+2); //---------VTable finden---Ende //---------EndScene Adresse holen und dann hooken dwEndScene = (FARPROC) VTableStart[42]; pEndScene = (EndScene_t) DetourFunc((PBYTE) dwEndScene, (PBYTE)hkEndScene, 5); while (true) OrigReset = (Reset_t) DetourFunc((BYTE*) VTableStart[16], (BYTE*) ResetHook, 5); { Sleep(500); } return 0; } HRESULT __stdcall hkEndScene(LPDIRECT3DDEVICE9 pDevice) { DrawRect ( pDevice, 10, 10, 200, 200, txtPink); if (DIPInit) { D3DXCreateFont(pDevice, 14, 0, FW_NORMAL, 1, false, DEFAULT_CHARSET, OUT_DEFAULT_PRECIS, ANTIALIASED_QUALITY, DEFAULT_PITCH | FF_DONTCARE, "Arial", &g_font ); DIPInit = false; } else { char *a = "a"; // so kann man eine variable erstellen und sie zeichnen lassen DrawFont ( 20, 50, txtBlaue, a ); /* g_font->OnResetDevice(); g_font->OnLostDevice();*/ DrawFont ( 300, 50, txtPink, "Bitte" ); } return pEndScene(pDevice); } //---------- HRESULT __stdcall ResetHook(IDirect3DDevice9* Device, D3DPRESENT_PARAMETERS* Params) { if (!DIPInit) { g_font->Release(); } DIPInit = true; return OrigReset(Device, Params); } //---------- #pragma region Draw------------dinge void DrawRect (LPDIRECT3DDEVICE9 Device_t, int X, int Y, int L, int H, D3DCOLOR color) { D3DRECT rect = {X, Y, X+L, Y+H}; Device_t->Clear(1, &rect, D3DCLEAR_TARGET, color, 0, 0); } void DrawFont (int X, int Y, D3DCOLOR Color, char *format, ...) { //const char *fps_string; //fps_string = "a"; char buffer[256]; va_list args; // deswegen: #include <cstdio> va_start (args, format); vsprintf ( buffer,format, args); RECT FontRect = { X, Y, X + 120, Y + 16 }; g_font->DrawText(NULL, //pSprite buffer, //pString -1, //Count &FontRect, //pRect DT_NOCLIP,//Format, Color); //Color va_end (args); } void* DetourFunc(PBYTE src, const PBYTE dst, const int len) // Adresse der OriginalFunktion ( src) und Adresse der HookFunktion (dst) { DWORD dwback; BYTE* jmp = (BYTE*)malloc(len+5); //Speicher für unser Trampolin allokieren und die <len> Bytes aus Source hineinkopieren VirtualProtect(src, len, PAGE_READWRITE, &dwback); //save ^ und readwrite rechte geben --- mit VirtualProtect die entsprechenden Rechte zusichern memcpy(jmp, src, len); jmp += len; jmp[0] = 0xE9; // jmp befehl in den anfang der Originalfunktion reinschreiben *(DWORD*)(jmp+1) = (DWORD)(src + len - jmp) - 5; // relative adresse zu dst eintragen src[0] = 0xE9; *(DWORD*)(src+1) = (DWORD)(dst - src) - 5; VirtualProtect(src, len, dwback, &dwback); // vp wieder herstellen. VirtualProtect(jmp-len, len+5, PAGE_EXECUTE_READWRITE, &dwback); //Trampolin Execute Rechte geben return (jmp - len); } //--------------------- //um die Adresse der EndScene Funktion zu finden, ein sogenanntes "Search-Pattern", also ein Suchmuster. //Dazu benutzen wir diese beiden Funktionen hier: bool bDataCompare(const BYTE* pData, const BYTE* bMask, const char* szMask) { for(;*szMask;++szMask,++pData,++bMask) { if(*szMask=='x' && *pData!=*bMask ) { return false; } } return (*szMask) == NULL; } DWORD dwFindPattern(DWORD dwAddress,DWORD dwLen,BYTE *bMask,char * szMask) { for(DWORD i=0; i < dwLen; i++) { if( bDataCompare( (BYTE*)( dwAddress+i ),bMask,szMask) ) { return (DWORD)(dwAddress+i); } } return 0; } //Erstellt eine Log.txt in dem ausführendem verzeichniss und schreibt den erfolg/misserfolg dahinein void add_log(char* format, ...) { HANDLE filehandle; DWORD dwReadBytes; char buffer[2048]; char writebuffer[2048]; va_list args; va_start(args, format); vsprintf (buffer, format, args); filehandle = CreateFile("Log.txt", GENERIC_WRITE, 0, 0, OPEN_ALWAYS, 0, 0); SetFilePointer(filehandle, 0, 0, FILE_END); char date[18]; _strdate(date); date[8] = ' '; _strtime(date+9); sprintf_s(writebuffer, 2048, "Log Added (%s): %s\r\n", date, buffer); WriteFile(filehandle, writebuffer, strlen(writebuffer), &dwReadBytes, 0); CloseHandle(filehandle); }
|
VB, C/C++, Delphi, etc |
Do 21. Aug 2014, 10:23
von vedel
|
4 |
1824 |
 |
WallHack v.5 Undetectable 100%!
Erstellt am: Fr 11. Apr 2014, 12:39
manueeelillo
Vorschau
Go To Post
War ja fast klar ... der typ ist erst 5 Minuten hier angemeldet und postet gleich einen Hack?
|
Counter-Strike: Global Offensive |
Fr 11. Apr 2014, 22:27
von OrkSchamane
|
3 |
467 |
 |
[Help] D3D Hook - D3DXCreateFont & DrawFont
Erstellt am: Do 3. Apr 2014, 22:58
OrkSchamane
Vorschau
Go To Post
Hallo ich arbeite z.Z. ein paar tut's durch und würde gerne "Deutsche" schrift in eine Fremde Anwendung Zeichnen. Mein derzeitiger Stand: Um Links zu sehen, musst du dich registrierenFrage 1: Wie zuerkennen, Ein pinktes Rechteck in der linken oberen ecke, dann noch 2 Zeilen geschriebenes ( ist leider nicht deutsch, eigentlich steht da: links "Hilfe", rechts "Bitte"). Was muss ich verändern um da auch wirklich Deutsch herauszubekommen Mein Code ausschnitt zu den Fonts: CPP Code: const D3DCOLOR txtPink = D3DCOLOR_ARGB(255, 255, 0, 255); // Alpha, Rot, Grün, Blau const D3DCOLOR txtBlaue = D3DCOLOR_ARGB(255, 0, 0, 255); // Alpha, Rot, Grün, Blau void DrawFont (int X, int Y, D3DCOLOR Color, char *format, ...); void DrawRect (LPDIRECT3DDEVICE9 Device_t, int X, int Y, int L, int H, D3DCOLOR color); //Our font interface ID3DXFont *g_font=NULL; HRESULT __stdcall hkEndScene(LPDIRECT3DDEVICE9 pDevice) { DrawRect ( pDevice, 10, 10, 200, 200, txtPink); if ( g_font == 0 ) { D3DXCreateFont(pDevice, 14, 0, FW_NORMAL, 1, false, DEFAULT_CHARSET, OUT_DEFAULT_PRECIS, ANTIALIASED_QUALITY, DEFAULT_PITCH | FF_DONTCARE, (LPCWSTR)"Arial", &g_font ); } else { DrawFont ( 20, 50, txtBlaue, "Hife" ); g_font->OnLostDevice(); g_font->OnResetDevice(); } DrawFont ( 300, 50, txtPink, "Bitte" ); return pEndScene(pDevice); } //Draw------------ void DrawRect (LPDIRECT3DDEVICE9 Device_t, int X, int Y, int L, int H, D3DCOLOR color) { D3DRECT rect = {X, Y, X+L, Y+H}; Device_t->Clear(1, &rect, D3DCLEAR_TARGET, color, 0, 0); } void DrawFont (int X, int Y, D3DCOLOR Color, char *format, ...) { //const char *fps_string; //fps_string = "a"; char buffer[256]; va_list args; // deswegen: #include <cstdio> va_start (args, format); vsprintf (buffer,format, args); RECT FontRect = { X, Y, X + 120, Y + 16 }; g_font->DrawText(NULL, //pSprite (LPCWSTR) buffer, //pString -1, //Count &FontRect, //pRect DT_NOCLIP,//Format, Color); //Color //( NULL, buffer, -1, &FontRect, DT_NOCLIP , Color ); // Zeichnen va_end (args); }
Frage 2: Warum bekomme ich immer wieder den Fehler (in Visual Studio 2010) wenn ich bei buffer das (LPCWSTR) weg lasse: Das Argument vom Typ ""char *"" ist mit dem Parameter vom Typ ""LPCWSTR"" inkompatibel. Hier der Code zur Frage 2: CPP Code: g_font->DrawText( NULL, (LPCWSTR) buffer, //<--- hier ist der Bösewicht -1, &FontRect, DT_NOCLIP, Color);
und bei CPP Code: D3DXCreateFont( pDevice, [...] , DEFAULT_PITCH | FF_DONTCARE, "Arial", &g_font );
wird bei mir immer das "Arial" als Fehler angegeben: Das Argument vom Typ ""const char *"" ist mit dem Parameter vom Typ ""LPCWSTR"" inkompatibel. Frage 3: Wenn ich die Anwendung scalliere oder full Scren aktivere kommt diese Fehlermeldung: Um Links zu sehen, musst du dich registrierenWas kann ich tun^^
|
VB, C/C++, Delphi, etc |
Do 3. Apr 2014, 22:58
von OrkSchamane
|
0 |
374 |