|
You last visited: Today at 19:04
Advertisement
[C++] D3D Hook
Discussion on [C++] D3D Hook within the C/C++ forum part of the Coders Den category.
11/24/2011, 16:45
|
#1
|
elite*gold: 0
Join Date: Feb 2011
Posts: 16
Received Thanks: 3
|
[C++] D3D Hook
Hey Com,
ich möchte gerne einen simplen Gamehack für ein "Opfer-Game" schreiben.
Da ich D3D benutze, frage ich mich nun, wie ich dies Hooken kann.
Ich habe mir bereits einige Tutorials angesehen, doch leider funktioniert keins. Ich benutze Visual C++.
D3D8, D3D9 ist korrekt installiert!
Es wäre seehr nett, wenn mir jemand eine Art "Schablone" oder ein gutes Tutorial, mit dem ich D3D hooken kann. Ein Simpler Text auf dem Spiel, wie "Hello elitepvpers" würde mir genügen. Menüs kann ich selber erstellen.
Wäre wirklich seehr dankbar um eine Antwort!
Grüße
derjans / Jan
|
|
|
11/24/2011, 18:30
|
#2
|
elite*gold: 0
Join Date: Feb 2011
Posts: 1,206
Received Thanks: 736
|
diamonds hooking tut für dx9, wenn du das nicht selber hinkriegst, lass es, c+p schablonen gebe ich zumindest nicht.
wenn du ein konkretes problem hast, dir z.b. eine zeile nicht klar ist und google sie dir auch nicht erklärt, oder irgendetwas aus für dich unerklärlichen gründen nicht funktioniert, kannst du gerne fragen^^
|
|
|
11/29/2011, 12:34
|
#3
|
elite*gold: 0
Join Date: Feb 2011
Posts: 16
Received Thanks: 3
|
Habe das Tutorial angefangen und bin jetzt zu dem Punkt gekommen, wo ich das erste mal die DLL testen kann. Doch leider funktioniert es nicht.
Das ist mein Code:
Code:
// ======================================================================= //
#include "stdafx.h"
#include <windows.h>
#include <cstdio>
#include <d3d9.h>
#include <d3dx9.h>
#pragma once
#pragma comment(lib, "d3d9.lib")
#pragma comment(lib, "d3dx9.lib")
// ======================================================================= //
void InitHook();
void *DetourFunc(BYTE *src, const BYTE *dst, const int len);
HRESULT __stdcall EndScene(LPDIRECT3DDEVICE9 pDevice);
typedef HRESULT(__stdcall* EndScene_t)(LPDIRECT3DDEVICE9);
EndScene_t pEndScene;
const D3DCOLOR txtPink = D3DCOLOR_ARGB(255, 255, 0, 255);
void add_log(char* string);
// ======================================================================= //
int WINAPI DllMain(HINSTANCE hInst,DWORD reason,LPVOID reserved)
{
switch(reason)
{
case DLL_PROCESS_ATTACH:
add_log("Versuche Thread zu erstellen!");
CreateThread(0, 0, (LPTHREAD_START_ROUTINE) InitHook, 0, 0, 0);
break;
}
return true;
}
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);
}
HRESULT __stdcall hkEndScene(LPDIRECT3DDEVICE9 pDevice)
{
DrawRect ( pDevice, 10, 10, 200, 200, txtPink);
return pEndScene(pDevice);
}
void InitHook() {
add_log("Thread erstellt!");
HMODULE hModule = NULL;
while( !hModule )
{
hModule = GetModuleHandleA( "d3d9.dll" ); // Handle zur DLL holen
Sleep( 100 ); // 100ms warten
}
add_log("d3d9.dll gefunden!");
pEndScene = ( EndScene_t )DetourFunc((PBYTE) 0x0001CE09,(PBYTE)hkEndScene, 5);
}
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);
}
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);
}
Die add_log-Funktion habe ich von Dr.Coxxy (aus diesem Thread:
 )
Die EndScene-Adresse sollte richtig sein (habe IDA Pro verwendet):
Die Log.TXT-Datei spuckt dabei folgendes aus:
Code:
Added Log: Versuche Thread zu erstellen!
Added Log: Thread erstellt!
Added Log: d3d9.dll gefunden!
Vielleicht habe ich auch einfach nur ein Brett vor dem Kopf, wäre euch sehr dankbar für eine Antwort!
|
|
|
11/29/2011, 14:45
|
#4
|
elite*gold: 0
Join Date: Feb 2011
Posts: 1,206
Received Thanks: 736
|
am ende wird eine findpattern funktion beschrieben um die vtable zu finden.
die benutzen, dann sollte es gehen.
Code:
tempadd = dwFindPattern((DWORD)hModule, 0x128000, (PBYTE)"\xC7\x06\x00\x00\x00\x00\x89\x86\x00\x00\x00\x00\x89\x86", "xx????xx????xx");
memcpy(&VTableStart, (void*)(tempadd+2), 4);
dwEndScene = VTableStart[42];
pEndScene = (EndScene_t) DetourFunc((PBYTE) dwEndScene, (PBYTE)hkEndScene, 5);
und ein thread ist DWORD WINAPI und nicht void.
dementsprechend auch return 0; am ende...
|
|
|
11/30/2011, 09:44
|
#5
|
elite*gold: 0
Join Date: Feb 2011
Posts: 16
Received Thanks: 3
|
Danke! Hat mir seehr geholfen!
|
|
|
Similar Threads
|
<26.06.11> Chico™ Public Hook, //Invisible//Chams /Stamina/Mini Hook/NO CRASH VERSION
07/08/2011 - WarRock Hacks, Bots, Cheats & Exploits - 46 Replies
26.06.11 Hack Released
26.06.11 SuperNoSpread Problem Fixxen Status= Not in Hack
Hej Com, leider hab ich eine schlechte nachricht xP^^ aus egendeinen Grund verursacht bei mir SuperNoSpread einen Direkten Crash sobald man in game ist, deshalb habe ich es entfernt O,o
der Hack ist tortzdem nett und wird euch gefallen, sobald ich mehr addys habe kommen mehrere funktionen noch dazu ;)
http://img4.fotos-hochladen.net/uploads/public24e lfvtrw1u.png
STOP! VOR DEM DOWNLOAD!
Mit Dem...
|
All times are GMT +1. The time now is 19:04.
|
|