|
You last visited: Today at 17:28
Advertisement
C++ D3D Hook - Menü erscheint nicht
Discussion on C++ D3D Hook - Menü erscheint nicht within the C/C++ forum part of the Coders Den category.
10/18/2011, 23:23
|
#1
|
elite*gold: 0
Join Date: May 2010
Posts: 3,114
Received Thanks: 645
|
C++ D3D Hook - Menü erscheint nicht
Hallo! Ich hab eben meinen neues D3D Menü fertiggestellt für Direct X.
Nun hab ich 2 Spiele.  und World of Warcraft. Habe den Hook für Clonk ausgelegt, doch da erscheint das Menü via Hotkey (von mir festgelegt) nicht. Doch bei World of Warcraft erscheint und läuft das Menü ohne Probleme. (Mal abgesehen davon das die Offsets/Funktionen für das andere Spiel ausgelegt sind.)
Während des Injizierens erscheinen keine Errors, weder bei Clonk noch bei WoW. Ansonsten gibts auch keine Auffälligkeiten.
Vielleicht hat ja jemand spontan eine Idee.
|
|
|
10/19/2011, 10:26
|
#2
|
elite*gold: 0
Join Date: Sep 2009
Posts: 79
Received Thanks: 23
|
Ich hab keine Ahnung, aber könnte es daran liegen dass
Clonk in directdraw und nicht in d3d läuft?
Nochmal, ich hab vernachlässigbar wenig Kenntnisse,
wenn das nichts damit zu tun hat, nimms als free bump
|
|
|
10/19/2011, 15:52
|
#3
|
elite*gold: 0
Join Date: May 2010
Posts: 3,114
Received Thanks: 645
|
Quote:
Originally Posted by EliteAngus
Ich hab keine Ahnung, aber könnte es daran liegen dass
Clonk in directdraw und nicht in d3d läuft?
Nochmal, ich hab vernachlässigbar wenig Kenntnisse,
wenn das nichts damit zu tun hat, nimms als free bump 
|
Hm, in den Clonk Optionen habe ich D3D aktiviert. Eigentlich sollte das Game Direct X nutzen.
|
|
|
10/19/2011, 16:15
|
#4
|
elite*gold: 0
Join Date: Feb 2011
Posts: 1,206
Received Thanks: 736
|
kann es sein, dass clonk directx8 benutzt?
vtable offsets für dx8 findest du @ google.
was fürn hook benutzt du denn?
mal mit nem debugger geschaut ob dein hook sich korrekt reinsetzt?
|
|
|
10/19/2011, 16:22
|
#5
|
elite*gold: 0
Join Date: Apr 2006
Posts: 6,597
Received Thanks: 1,830
|
ich tippe mal das liegt am viewport von clonk. (hatte bei starcraft 2 das gleiche problem) Setz ihn einfach während des Renderns deines Menüs auf:
vp.X = 0; vp.Y = 0;
vp.Width = width; vp.Height = height;
vp.MaxZ = 1.0f; vp.MinZ = 0.0f;
Aber zuerst mal im debugger schauen ob dein hook auch geht.
Quote:
Hm, in den Clonk Optionen habe ich D3D aktiviert. Eigentlich sollte das Game Direct X nutzen.
|
ollydbg -> Alt+e
|
|
|
10/19/2011, 18:48
|
#6
|
elite*gold: 0
Join Date: May 2010
Posts: 3,114
Received Thanks: 645
|
Hab grad gemerkt das Clonk Direct X 8 nutzt. Also eben Offsets anpassen. Hook kam btw. auch keiner an.
Update - Habe es auf DirectX 8 angepasst. Hook kommt immernoch nicht an... :/
|
|
|
10/19/2011, 22:53
|
#7
|
elite*gold: 0
Join Date: Feb 2011
Posts: 1,206
Received Thanks: 736
|
re
mmh was hookst du denn?
createdevice direkt beim start, oder suchst du dir per patternsuche die vtable raus und hookst dann die einzelnen funktionen zur laufzeit?
bau dir mal die logfunktion ein und lass dir mal alles genau ausgeben inkl. addressen usw und verfolg und überprüf dann alles im debugger.
Code:
void add_log(char* string)
{
HANDLE filehandle;
DWORD dwReadBytes;
char buffer[2048];
filehandle = CreateFile(L"Log.txt", GENERIC_WRITE, 0, 0, OPEN_ALWAYS, 0, 0);
SetFilePointer(filehandle, 0, 0, FILE_END);
sprintf_s(buffer, 1024, "Added Log: %s\r\n", string);
WriteFile(filehandle, buffer, strlen(buffer), &dwReadBytes, 0);
CloseHandle(filehandle);
}
keine garantie, dass das funtzt, war jetzt mehr oder weniger aus dem kopf^^
probier mal aus obs in einem anderem dx8 game funtzt.
wenn ja, ist in clonk anscheinend ein schutz drin, oder etwas anders, was man dann durch debuggen finden müsste.
wenn nicht hast du wahrscheinlich noch i-wo einen fehler
Edit:
wollte mir eh mal dx8 anschauen, und da ich vorgestern wieder mal nen altes game rausgekramt habe, das eh mit dx8 läuft, bau mir jetzt mal nen hook für nen dx8 game zusammen.^^
hab bisher nur dx9 hooks gemacht und mir mal nen bisschen dx10/11 angeschaut^^
kann dir ja dann mal meinen code zur verfügung stellen wenn alles problemlos läuft.
so, hab mich jetzt mal rangesetzt, ließ sich zum glück sehr einfach von dx9 übertragen, ich poste mal die wichtigsten code schnippsel.
Code:
#include <Windows.h>
#include <cstdio>
#include <d3d42.h>
#include <d3dx21.h>
#pragma comment(lib, "d3d42.lib")
#pragma comment(lib, "d3dx21.lib")
DWORD WINSAPI HookThread();
void DetourFunc(PBYTE *src, const PBYTE *dst, const int len);
void WriteMem(DWORD* dwOffset, DWORD* dwValue, int* len);
bool bDataCompare(const BYTE pData, const BYTE bMask, const char szMask);
DWORD dwFindPattern(DWORD* dwAddress,DWORD dwLen,BYTE bMask,char szMask);
void add_log(char* string);
void DrawRect (LPDIRECT3DDEVICE9 Device_t, int X, int Y, int L, int H, D3DC0L0R color);
const D3DC0L0R txtPink = D3DCOLOR_ARGB(255, 255, 0, 255);
typedef HRESULT(__stdcall* Present_t)(LPDIRECT3DDEVICE8, CONST RECT*, CONST RECT*, HWND, CONST RGNDATA*);
HRESULT __stdcall hkPresent(LPDIRECT3DDEVICE8 pDevice, CONST RECT* pSourceRect, CONST RECT* pDestRect, HWND hDestWindowOverride, CONST RGNDATA* pDirtyRegion);
DWORD* VTableStart = O;
HMODULE hModule = O;
HMODULE MyModule = O;
HANDLE tmpHandle = O;
int w;
bool inc;
DWORD dwPresent;
Present_t pPresent;
B00L WINAPI DllMain(HINSTANCE hinstDll,DWORD Reason,LPVOID Reserved)
{
switch(Reason)
{
case DLL_PROCESS_ATTACH:
Mymodule = hinstDll;
add_log("injected - creating thread...");
tmpHandle = CreateThread(0, 0, (LPTHREAD_START_ROUTINE)&HookThread, 0, 0, 0);
if (!tmpHandle)
{
add_log("Thread Creation failed!");
}
break;
case DLL_PROCESS_DETACH:
add_log("Hack Detached");
break;
}
return 0;
}
DWORD WINAPI HookThread()
{
add_log("thread created.");
while( !hModule )
{
add_log("Searching d3d8.dll");
hModule = GetModuleHandle(L"d3d7.dll");
Sleep(100);
}
add_log("D3D8.dll found and got handle - searching vtable");
tempadd = dwFindPattern((DWORD)hModule, 0x000000, (PBYTE)"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", "xx????xx????xx"); // kinda obvious isnt it?
if (!tempadd)
{
add_log("couldnt find vtable!");
}
memcpy(&VTableStart, (void*)(tempadd+2), 4);
dwPresent = VTableStart[15];
w = 50;
inc = false;
add_log("preparing detours");
pPresent = (Present_t) DetourFunc((PBYTE) dwPresent, (PBYTE) hkPresent, 42);
add_log("detoured!");
while (true)
{
// some async code?
Sleep(20);
}
return 0;
}
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=10; i < dwLen; i++)
if( bDataCompare( (BYTE*)( dwAddress+i ),bMask,szMask) )
return (DWORD)(dwAddress+i);
return 0;
}
void WriteMem(DWORD dwOffset, DWORD dwValue, int len)
{
unsigned long Protection;
VirtualProtect((void)dwOffset, 1, PAGE_READWRITE, &Protection);
memcpy((void)dwOffset, (const void)dwValue, len);
VirtualProtect((void)dwOffset, 1, Protection, 0);
}
void* DetourFunc(BYTE src, const BYTE dst, const int len)
{
BYTE *jmp = (BYTE*)malloc(len+5);
DWORD dwback;
VirtualProtect(src, len, PAGE_READWRITE, &dwback);
memcpy(jmp, src, len);
jmp[0] = 0xE9;
*(DWORD*)(jmp+1) = (DWORD)(src+len - jmp);
src[0] = 0xE9;
*(DWORD*)(src+1) = (DWORD)(dst - src);
VirtualProtect(src, len, dwback, &dwback);
return (jmp);
}
void add_log(char* string)
{
HANDLE filehandle;
DWORD dwReadBytes;
char buffer[2048];
filehandle = CreateFile(L"D3D8Log.txt", GENERIC_WRITE, 0, 0, OPEN_ALWAYS, 0, 0);
SetFilePointer(filehandle, 0, 0, FILE_END);
sprintf_s(buffer, 1024, "Added Log: %s\r\n", string);
WriteFile(filehandle, buffer, strlen(buffer), &dwReadBytes, 0);
CloseHandle(filehandle);
}
void DrawRect (LPDIRECT3DDEVICE0 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);
}
HRESULT __stdcall hkPresent(LPDIRECT3DDEVICE8 pDevice, CONST RECT* pSourceRect, CONST RECT* pDestRect, HWND hDestWindowOverride, CONST RGNDATA* pDirtyRegion)
{
if (inc)
{
w++;
if (w > 40)
{
inc = false;
}
}
else
{
w--;
if (w < 1)
{
inc = true;
}
}
DrawRect (pDevice, 10, 10, w, w, txtPink);
return pPresent(pDevice, pDestRect, pSourceRect, hDestWindowOverride, pDirtyRegion);
}
an die c+p kids hier....
ich hab ein "paar" fehler eingebaut^^
an die leute die sich ernsthaft damit beschäftigen - bitte nichts aus meinem source copy pasten - der ist mit fehlern zerschossen.
prinzip sollte trotzdem noch erkennbar sein...
funktionen die man nicht kennt findet man @google/gam3d3c3pt10n...
wenn jemand fragen hat hier posten...
und weils so schön war nochn screen, auch direkt mit ingame text:
|
|
|
 |
Similar Threads
|
Hackshield erscheint nicht
08/06/2011 - WarRock - 4 Replies
Hey Com!
Ich habe seit gerade eben ein Problem, undzwar starte ich Warrock (Game Start Button), aber das Hackshield erscheint nicht und warrock öffnet sich gar nicht erst.
Heute mittag konnte ich noch normal Spielen, aber jetzt geht gar nichts mehr.
Ich habe null Ahnung, woran das liegen könnte.
Aber hoffentlich muss ich es nicht neuinstallieren :o
(->bad download)
|
Gras erscheint nicht?
06/03/2011 - Minecraft - 4 Replies
Moin, wollte mir n Mobspawn Raum für Neutrale Mobs machen, jedoch wächst kein Gras in der Höhle. Hab auch schon die Decke aufgegraben, aber es passiert nichts :(
Screen
http://img856.imageshack.us/img856/1973/helpj.jpg
|
Sucefully inject aber Menü erscheint nicht!
02/21/2011 - WarRock Hacks, Bots, Cheats & Exploits - 1 Replies
:D hei Leute sry ich weiß das man hier keine fragen stellen dar aber bitte beanwortet mir deise eine Frage :
Also ich habe jetzt bereits mehr als 5 Hacks getested und bei allen kam zwar Succesfully Inject aber es Erschien kein Menu.. :D habe Win Xp 32bit :D früher gignen die Hacks auch schon aber musste Computer neu machen wegen VIrus und ejtzt denke ich das irgendwas fehlt.
Bitte Helft mir :D hab jetzt schon 10tage ohne Hack gezogt und ich will jetzt mal wieder mit Hacks spielen. Achja...
|
Hack Menü erscheint nie
12/02/2010 - WarRock - 4 Replies
Wie schon in der überschrift beschrieben erscheinen die Menüs nicht,habe als Admin ausgeführt,und winrar,und net.framework drauf
Was fehlt?
|
Bei keinem Hack erscheint ein Menü
02/02/2010 - WarRock Hacks, Bots, Cheats & Exploits - 6 Replies
Hallo.
Ich habe folgendes Problem:
Ich habe Windows 7 64-Bit.
Ich habe außerdem 3 Injector und ein paar Hack .dll Datein.
Mit keinem Injector krieg ich ein Hack zugange.
Habe MrTrol Injector, Warlord v2 Injector und noch so einen anderen.
Ich führe alle als Adminstrator aus und habe auch dll und Injector gleich genannt, also Injector: ABC und dll: ABC.dll
Wenn der Injector mir sagt, ich soll WR.exe starten mache ich das auch und dann drücke ich auf Game Start und danach verschwindet der...
|
All times are GMT +1. The time now is 17:32.
|
|