Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > General Coding
You last visited: Today at 18:07

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



probleme bei d3d

Discussion on probleme bei d3d within the General Coding forum part of the Coders Den category.

Reply
 
Old   #1
 
elite*gold: 0
Join Date: Jan 2010
Posts: 250
Received Thanks: 21
probleme bei d3d

hey hab nochmal des tut von purple.d1amond gemacht.
das erstellen klappt ohne Fehler, doch es wird kein kasten angezeigt im game(warrock)
Code:
#include <windows.h>
#include <cstdio>
#include <d3d9.h>
#include <d3dx9.h>

const D3DCOLOR txtPink = D3DCOLOR_ARGB(255,255,0,255);

void *DetourFunc(BYTE *src, const BYTE *dst, const int len) // credits to gamedeception
{
BYTE *jmp = (BYTE*)malloc(len+5);
DWORD dwback;
VirtualProtect(src, len, PAGE_READWRITE, &dwback);
memcpy(jmp, src, len); jmp += len;
jmp[0] = 0xE9;
*(DWORD*)(jmp+1) = (DWORD)(src+len - jmp) - 5;
src[0] = 0xE9;
*(DWORD*)(src+1) = (DWORD)(dst - src) - 5;
VirtualProtect(src, len, dwback, &dwback);
return (jmp-len);
}

typedef HRESULT(_stdcall* EndScene_t)(LPDIRECT3DDEVICE9);
EndScene_t pEndScene;

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); // bei Google gibt’s näheres
}

HRESULT _stdcall hkEndScene(LPDIRECT3DDEVICE9 pDevice)
{
	DrawRect ( pDevice, 10, 10, 200, 200, txtPink);
	return pEndScene(pDevice);
}

void initHook()
{
	HMODULE hModule = NULL;
	while(!hModule)
	{
		hModule = GetModuleHandleA("d3d9.dll");
		Sleep(100);
	}
	pEndScene = (EndScene_t)DetourFunc((PBYTE) 0x7542CE09, (PBYTE)hkEndScene, 5);
}

int WINAPI DllMain(HINSTANCE hInst,DWORD reason, LPVOID reserverd)
{
	switch(reason)
	{
	case DLL_PROCESS_ATTACH:
			CreateThread(0,0,(LPTHREAD_START_ROUTINE)initHook, 0, 0, 0);
		break;
	}
	return true;
}

erkennt jmd den fehler?
habe ich auch das DrawRect ( pDevice, 10, 10, 200, 200, txtPink); richtig gesetzt?
bammes is offline  
Old 02/27/2011, 10:44   #2
 
black0utCpp's Avatar
 
elite*gold: 0
Join Date: Oct 2010
Posts: 381
Received Thanks: 210
Ich hab keine ahnung von d3d aber evtl liegt es daran ,dass du xie funktion gar nicht
aufrufst also in der nicht vorhandenen main funktion
black0utCpp is offline  
Thanks
1 User
Old 02/27/2011, 10:53   #3
 
elite*gold: 0
Join Date: Jan 2010
Posts: 250
Received Thanks: 21
wird es doch eigendlich

pEndScene = (EndScene_t)DetourFunc((PBYTE) 0x7542CE09, (PBYTE)hkEndScene, 5);

laut tut tut das des starten.
bammes is offline  
Old 02/27/2011, 11:29   #4
 
.BritainAndy's Avatar
 
elite*gold: 0
Join Date: Jan 2010
Posts: 1,385
Received Thanks: 1,006
Du sollst die EndScene func. nicht hardcoden!
.BritainAndy is offline  
Old 02/27/2011, 11:38   #5
 
elite*gold: 0
Join Date: Jan 2010
Posts: 250
Received Thanks: 21
? aber im tut steht doch, dass man das so machen soll.

oder habe ich da was falsch verstanden oder ist das tut einfach alt?

edit falls ihr net wisst welches tut hier:

bammes is offline  
Old 02/27/2011, 11:54   #6
 
mydoom's Avatar
 
elite*gold: 0
Join Date: Dec 2007
Posts: 322
Received Thanks: 98
Ja das Tutorial ist alt, aber die Adresse zu "hardcoden" war meiner Meinung nach schon immer suboptimal.

Und übrigens:
Quote:
CreateThread(0,0,(LPTHREAD_START_ROUTINE)initHook, 0, 0, 0);
Quote:
void initHook()
Vergiss das "void" vor einer Thread-Routine sofort wieder. Das geht so:
Quote:
DWORD WINAPI Funktionsname(LPVOID param);
mydoom is offline  
Thanks
1 User
Old 02/27/2011, 12:18   #7
 
elite*gold: 0
Join Date: Jan 2010
Posts: 250
Received Thanks: 21
wiso das?

void is doch nur ne funktion ohne rückgabe.

wiso sollte ich des DWORD nehmen?
bammes is offline  
Old 02/27/2011, 13:15   #8
 
elite*gold: 0
Join Date: Mar 2008
Posts: 747
Received Thanks: 245
Quote:
Originally Posted by bammes View Post
wiso das?

void is doch nur ne funktion ohne rückgabe.

wiso sollte ich des DWORD nehmen?
Weil Thread funktionen immer mit DWORD deklariert werden und das niccht zu machen ist ein sehr schlechter programmierstiel.

Quote:
Originally Posted by bammes View Post
? aber im tut steht doch, dass man das so machen soll.

oder habe ich da was falsch verstanden oder ist das tut einfach alt?
In dem Tutorial steht doch sogar drinn wie man die addresse zur laufzeit ermittelt.
Akorn is offline  
Old 02/27/2011, 13:34   #9
 
elite*gold: 0
Join Date: Jan 2010
Posts: 250
Received Thanks: 21
Quote:
Weil Thread funktionen immer mit DWORD deklariert werden und das niccht zu machen ist ein sehr schlechter programmierstiel.
k dann mach ichs in dword

Quote:
In dem Tutorial steht doch sogar drinn wie man die addresse zur laufzeit ermittelt.
meinsch die endscene adresse?
also die stimmt bei mir
bammes is offline  
Old 02/27/2011, 16:06   #10
 
.BritainAndy's Avatar
 
elite*gold: 0
Join Date: Jan 2010
Posts: 1,385
Received Thanks: 1,006
nein er meitn wie du die endscene addresse ermittelst, ohne IDA da diese funktion veraltet ist.
.BritainAndy is offline  
Old 02/27/2011, 19:08   #11


 
MrSm!th's Avatar
 
elite*gold: 7110
Join Date: Jun 2009
Posts: 28,904
Received Thanks: 25,394
Quote:
Originally Posted by bammes View Post
wiso das?

void is doch nur ne funktion ohne rückgabe.

wiso sollte ich des DWORD nehmen?
Es hat übrigens nicht nur was mit dem Stil zutun, ein Thread gibt ja was zurück.
Nämlich einen Fehlerwert; 0 bei Erfolg, ansonsten eben nen Error Code.
MrSm!th is offline  
Thanks
1 User
Old 02/27/2011, 20:23   #12
 
elite*gold: 0
Join Date: Jan 2010
Posts: 250
Received Thanks: 21
Quote:
ohne IDA da diese funktion veraltet ist.
wie geht es anders?
bammes is offline  
Old 02/27/2011, 21:56   #13


 
MrSm!th's Avatar
 
elite*gold: 7110
Join Date: Jun 2009
Posts: 28,904
Received Thanks: 25,394
Du kannst es trotzdem mit IDA machen, aber hol dir wie gesagt die aktuelle und nimm nicht die aus dem Tutorial.
Trotzdem ist das eine schlechte Idee, du solltest den Hook lieber dynamisch machen.

Das geht, indem du entweder die Adresse per Patternsearch findest oder, indem du erst Direct3DCreate9Ex hookst, den Output (Pointer auf ein IDirect3D9 Interface) speicherst, davon die Methode CreateDevice hookst und davon dann wieder den Output (Pointer auf ein IDirect3DDevice9) speicherst, dann kannst du mit diesem die Adresse der EndScene bestimmen.
MrSm!th is offline  
Thanks
2 Users
Old 02/28/2011, 20:45   #14
 
elite*gold: 0
Join Date: Jan 2010
Posts: 250
Received Thanks: 21
ja klar ist mir dass des net die gleiche ist^^ hab ja auch andrer genommen

wiso ist das ne schlechte idee? sit diese adresse zu ungenau??
bammes is offline  
Old 02/28/2011, 22:02   #15
 
mydoom's Avatar
 
elite*gold: 0
Join Date: Dec 2007
Posts: 322
Received Thanks: 98
Ich würde sagen das Problem ist folgendes: Wenn du eine statische Adresse benutzt ist die Chance viel größer, dass dein Programm auf anderen Systemen nicht funktioniert. Falls die Adresse jedoch dynamisch berechnet wird, ist diese Chance geringer. (Außerdem konnte ich eine dll ohne große Änderungen in ein anderes Spiel injecten und alle visuellen "Hacks" haben anstandslos funktioniert. Gut, das ist eigentlich nicht der Hauptgrund, aber dennoch in manchen Situationen ganz hilfreich)
mydoom is offline  
Thanks
2 Users
Reply


Similar Threads Similar Threads
Probleme mit S4
10/23/2012 - S4 League - 19 Replies
Hallo, Ich habe seit heute ein neuen PC, ich wollte S4L drauf installieren doch dort kommt immer eine Fehlermeldung, wenn ich auf "Wiederholen" klicke Installiert er S4 aber ich bekomme ein Bluescreen. Der kommt auch wenn ich die Fehlermeldung bei der Installation bekomme ca 5min & ich habe nen bluescreen. Ich habe XPHome 32-bit drauf, im Handbuch meines PC's steht das ich nur WinXP OEM Version drauf tun solle da es bei den anderen zu Problemen kommen kann. Habe nen bild angehang.
G15 Probleme
06/01/2010 - Archlord - 26 Replies
Hallo ertma weiß nicht wie oft dieses thema schon angesprochen wurde aber ich komme nicht weiter. Wenn ich AL-webzen starte kann ich im spiel keine makros erstellen weil die MR taste nich mehr funzt (aber vorher gehts). habe XP 64 bit was kann ich noch machen würde mich über eine antwort freuen :)
probleme in rl
03/25/2010 - Off Topic - 6 Replies
ich habe ein merkliches problem in meinem leben wollte erfahrungen austauschen undzwar haben sich bei mir automatismen angelegt die ich nicht verstehen kann diese sind dass ich menschen für jede sache in meinem kopf kritisiere ich sehe alle ihre fehler und denke darüber nach ich äußer sie natürlich nicht aber sie fallen mir auf ich würde sogar sagen dass es ein zu hohes interessieren wäre was andere von mir halten denn ich gehe zu weit manchmal , wollte wissen wie man das rückgängig...
Hamachi Probleme Über Probleme.
02/21/2010 - Metin2 Private Server - 9 Replies
Hallo Com. also ich hab ein Problem also auf meinen hamachi kann ich dmg ändern von 2händern 1 hand usw dolche aber bei Glocke kommt so eine meldung wenn ich die dann hinterher anziehen will ingame. http://img51.imageshack.us/img51/3891/glocke.png
help big probléme
12/10/2009 - CO2 Private Server - 1 Replies
the monster knocks me has 1 of damage and I died while i have 19k life



All times are GMT +2. The time now is 18:07.


Powered by vBulletin®
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2024 elitepvpers All Rights Reserved.