D3D Hook WriteMem Problem

01/31/2011 18:12 germanhacker#31
Quote:
Originally Posted by MrSm!th View Post
Dann warte doch bis dahin und injecte die Dll dann.
Oder mach es mit LoadLibrary, die gibt, falls die Dll schon geladen wurde, ein Handle zu ihr und ansonsten lädt sie sie und gibt dann das Handle.
Also einfach LoadLibrary("Pfad zur Dll"); anstatt GetModuleHandle nutzen.
So da bin ich wieder. Erstmal is mir noch aufgefallen, dass ich GetModuleHandleA benutzt habe, dass wird aber kein problem gewesen sein. Dann hab ich das ganze mal einfach später injectet. das game stürzte nicht ab. dann hab ich singelplayer und so gemacht.. game start... die map lädt... und abgestürzt :D
Das war also auch nix.
Dann hab ich GetModuleHandle mal mit LoadLibrary ersetzt. Also so..

DWORD Base = (DWORD) LoadLibrary("C:\Program Files\Maxis Spiele\left 4 dead 2\left4dead2\bin\server.dll") + 0x0037492C;

Das dachte ich zuerst, klappt, doch als ich dann wieder "start game" gemacht habe, und es fertig geladen hat, ist es wieder abgekrazt :D

Auf jedenfall ging das mit loadlibrary schon mal viel weiter als mit getmodulehandle^^
01/31/2011 21:10 MrSm!th#32
Debugausgaben? Welche Werte haben die Variablen? Wo genau stürtzt es ab?
Hast du zufällig Ahnung, wie man einen Debugger wie OllyDbg nutzt?
01/31/2011 21:18 germanhacker#33
Debugausgaben:

Code:
1>------ Erstellen gestartet: Projekt: Operation7_Hack, Konfiguration: Debug Win32 ------
1>Der Buildvorgang wurde am 31.01.2011 21:12:43 gestartet.
1>InitializeBuildStatus:
1>  "Debug\Operation7_Hack.unsuccessfulbuild" wird erstellt, da "AlwaysCreate" angegeben wurde.
1>ClCompile:
1>  main.cpp
1>c:\users\michael\documents\visual studio 2010\projects\operation7_hack\operation7_hack\main.cpp(75): warning C4995: 'vsprintf': der Name, der als #pragma markiert war, wurde verworfen
1>c:\users\michael\documents\visual studio 2010\projects\operation7_hack\operation7_hack\main.cpp(75): warning C4996: 'vsprintf': This function or variable may be unsafe. Consider using vsprintf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
1>          c:\program files\microsoft visual studio 10.0\vc\include\stdio.h(371): Siehe Deklaration von 'vsprintf'
1>c:\users\michael\documents\visual studio 2010\projects\operation7_hack\operation7_hack\main.cpp(107): warning C4129: 'P': Nicht erkannte Folge von Escapesequenz
1>c:\users\michael\documents\visual studio 2010\projects\operation7_hack\operation7_hack\main.cpp(107): warning C4129: 'M': Nicht erkannte Folge von Escapesequenz
1>c:\users\michael\documents\visual studio 2010\projects\operation7_hack\operation7_hack\main.cpp(107): warning C4129: 'l': Nicht erkannte Folge von Escapesequenz
1>c:\users\michael\documents\visual studio 2010\projects\operation7_hack\operation7_hack\main.cpp(107): warning C4129: 'l': Nicht erkannte Folge von Escapesequenz
1>c:\users\michael\documents\visual studio 2010\projects\operation7_hack\operation7_hack\main.cpp(107): warning C4129: 's': Nicht erkannte Folge von Escapesequenz
1>c:\users\michael\documents\visual studio 2010\projects\operation7_hack\operation7_hack\main.cpp(115): warning C4129: 'P': Nicht erkannte Folge von Escapesequenz
1>c:\users\michael\documents\visual studio 2010\projects\operation7_hack\operation7_hack\main.cpp(115): warning C4129: 'M': Nicht erkannte Folge von Escapesequenz
1>c:\users\michael\documents\visual studio 2010\projects\operation7_hack\operation7_hack\main.cpp(115): warning C4129: 'l': Nicht erkannte Folge von Escapesequenz
1>c:\users\michael\documents\visual studio 2010\projects\operation7_hack\operation7_hack\main.cpp(115): warning C4129: 'l': Nicht erkannte Folge von Escapesequenz
1>c:\users\michael\documents\visual studio 2010\projects\operation7_hack\operation7_hack\main.cpp(115): warning C4129: 's': Nicht erkannte Folge von Escapesequenz
1>Link:
1>  LINK : C:\Users\Michael\documents\visual studio 2010\Projects\Operation7_Hack\Debug\Operation7_Hack.dll wurde nicht gefunden oder beim letzten inkrementellen Linkvorgang nicht erstellt; vollständiger Link wird durchgeführt.
1>  Operation7_Hack.vcxproj -> C:\Users\Michael\documents\visual studio 2010\Projects\Operation7_Hack\Debug\Operation7_Hack.dll
1>FinalizeBuildStatus:
1>  Die Datei "Debug\Operation7_Hack.unsuccessfulbuild" wird gelöscht.
1>  Aktualisieren des Timestamps von "Debug\Operation7_Hack.lastbuildstate".
1>
1>Das Erstellen war erfolgreich.
1>
1>Verstrichene Zeit 00:00:04.77
========== Erstellen: 1 erfolgreich, Fehler bei 0, 0 aktuell, 0 übersprungen ==========
Quote:
Welche Werte haben die Variablen? Wo genau stürtzt es ab?
Welche Variablen ?
Also ich starte den AirdropInjector, stell ihn auf automatic.. starte das spiel... Vorschau und so drück ich weg...dann bin ich im menü ... geh auf singelplayer ... map eingeben und so... "game start" klicken ... Lade Fenster, wo son ladebalken ist... wenn der voll ist, stürzt das ganze ab...........

Quote:
Hast du zufällig Ahnung, wie man einen Debugger wie OllyDbg nutzt?
Ein wenig, hab mir schon verschiedene Tutorials darüber angesehn, wie man cracked, den LT Pointer von CF findet und so..

Meinste vllt mit OllyDbg die adresse von server.dll raussuchen ?

€dit: mir fällt gerad auf, dass mein game aufeinmal einfach so abkrazt.. ohne hack und so :o
€dit: hää ich hab das spiel 2x aufn computer und das 2. stürzt jetzt auch dort ab (wie oben beschrieben)

so letzter €dit für heute..
Hab ja neu eingestellt, dass ich wieder als admin starten muss und so.. also muss ich das spiel jetzt auch als admin starten. Jetzt krazt es wieder am anfang schon ab und ohne hack lässt es sich wieder spielen .... da denkt man, man kam ein kleines stückchen weiter und jetzt ist man wieder am anfang
-.-
.
.
.

Doch noch ein €dit^^

Habs jetzt ENDLICH hinbekommen, nach einigen versuchen und so..

erstmal hab ich mir selbst die debugausgabe angesehn und hab mich über diese fehler erkundigt:

warning C4129: 'P': Nicht erkannte Folge von Escapesequenz

Dann hab ich aus einem "\\" überall zwei "\\" gemacht. Also so dann:

DWORD Base = (DWORD) LoadLibrary("C:\\Program Files\\Left 4 Dead 2\\left4dead2\\bin\\server.dll") + 0x0037492C;

Dann hab ich das spiel gestartet und zuerst ging auch alles, bis im spiel dann der godmode komischerweise nicht ein ging.
Mir fiel auf, dass ich noch den Dateipfad ändern musste :D also so..

DWORD Base = (DWORD) LoadLibrary("C:\\Program Files\\L4D2\\left4dead2\\bin\\server.dll") + 0x0037492C;

Dann wieder alles ausprobiert und endlich ging es :D

Nach so vielen Tagen rumprobieren, fehler suchen hat es sich doch noch gelohnt :)

Vielen, vielen Dank, dass du mir so viel geholfen hast MrSm!th !!

Ohne dich und Google wäre das nix geworden :D
01/31/2011 23:09 MrSm!th#34
Quote:
Originally Posted by germanhacker View Post
Debugausgaben:
ich meinte natürlich deine damit, also die messageboxen.

Quote:
Welche Variablen ?
Base und Address :rolleyes:
Quote:
Also ich starte den AirdropInjector, stell ihn auf automatic.. starte das spiel... Vorschau und so drück ich weg...dann bin ich im menü ... geh auf singelplayer ... map eingeben und so... "game start" klicken ... Lade Fenster, wo son ladebalken ist... wenn der voll ist, stürzt das ganze ab...........
Hast du nun alles wieder vergessen? Du konntest mir gerade den Code-Teil nennen, an dem es gecrasht hat, wie wärs, wenn du das mit einzelnen MessageBoxen im Quelltext nun wieder probierst?

Quote:
Ein wenig, hab mir schon verschiedene Tutorials darüber angesehn, wie man cracked, den LT Pointer von CF findet und so..
Dann könntest du eventuell einfach mal im Debugger schauen, was passiert. Dann siehst du ja, warum es crasht.
Quote:
Meinste vllt mit OllyDbg die adresse von server.dll raussuchen ?
Nein, ich meinte, den Code durchzusteppen, um zu sehen, wo der Fehler auftritt. Die Adresse solltest du mit LoadLibrary bekommen.

Und wie gesagt, gewöhn dir an, MessageBoxen zur Debug-Ausgabe einzubauen, falls etwas unerwartetes auftritt!!!
Quote:
€dit: mir fällt gerad auf, dass mein game aufeinmal einfach so abkrazt.. ohne hack und so :o
€dit: hää ich hab das spiel 2x aufn computer und das 2. stürzt jetzt auch dort ab (wie oben beschrieben)
Dann installier es doch neu.

Quote:
Doch noch ein €dit^^

Habs jetzt ENDLICH hinbekommen, nach einigen versuchen und so..

erstmal hab ich mir selbst die debugausgabe angesehn und hab mich über diese fehler erkundigt:

warning C4129: 'P': Nicht erkannte Folge von Escapesequenz

Dann hab ich aus einem "\\" überall zwei "\\" gemacht. Also so dann:

DWORD Base = (DWORD) LoadLibrary("C:\\Program Files\\Left 4 Dead 2\\left4dead2\\bin\\server.dll") + 0x0037492C;
Und genau deswegen sollst du die Grundlagen vernünftig lernen!!
Quote:
Dann hab ich das spiel gestartet und zuerst ging auch alles, bis im spiel dann der godmode komischerweise nicht ein ging.
Mir fiel auf, dass ich noch den Dateipfad ändern musste :D also so..

DWORD Base = (DWORD) LoadLibrary("C:\\Program Files\\L4D2\\left4dead2\\bin\\server.dll") + 0x0037492C;

Dann wieder alles ausprobiert und endlich ging es :D

Nach so vielen Tagen rumprobieren, fehler suchen hat es sich doch noch gelohnt :)

Vielen, vielen Dank, dass du mir so viel geholfen hast MrSm!th !!

Ohne dich und Google wäre das nix geworden :D
Na dann ist ja gut, freut mich.
Ich kenne diese tage- und wochenlangen Fehlersuchen bestens ;<
02/01/2011 15:37 germanhacker#35
Das mit dem Pfad angeben, geht das auch schneller ? und andere haben vllt einen anderen pfad..
bei mir heißt mein neuer ordner z.b. "L4D2" ... er könnte ja auch "Left 4 Dead 2" heißen.

D.h. dieser hack funzt nur, wenn man das game im selben pfad gespeichert hat und mit dem selben ordner namen oder wie..

DWORD Base = (DWORD) LoadLibrary("C:\\Program Files\\..\\left4dead2\\bin\\server.dll") + 0x0037492C;

so oder wie könnte das gehen, vllt den pfad der left4dead2.exe ermitteln und dann nach der dll suchen ?
02/01/2011 17:07 MrSm!th#36
Du kannst den User den Pfad in einer Ini angeben lassen.
Du kannst vorschreiben, dass die Dll ins selbe Verzeichnis muss, dann arbeitest du einfach mit dem Namen.
Du kannst den Pfad aus der Registry auslesen.
Du kannst GetModuleHandle nutzen, wartest aber mit dem Ausrechnen der Adresse solange, bis der Rückgabewert ungleich Null ist.
02/01/2011 18:34 germanhacker#37
Quote:
Originally Posted by MrSm!th View Post
Du kannst GetModuleHandle nutzen, wartest aber mit dem Ausrechnen der Adresse solange, bis der Rückgabewert ungleich Null ist.
Das klappt perfekt. Super, danke! :)
02/01/2011 19:16 yihaaa#38
LOL. Ich tippe mal das er eine externe Anwendung machen will. Das sieht nicht nach einer .dll aus. Mal eine andere Frage, wie willst du den D3D-Hook schaffen, wenns schon am Detouren scheitert?

MfG
02/01/2011 19:40 germanhacker#39
Quote:
Originally Posted by yihaaa View Post
LOL. Ich tippe mal das er eine externe Anwendung machen will. Das sieht nicht nach einer .dll aus. Mal eine andere Frage, wie willst du den D3D-Hook schaffen, wenns schon am Detouren scheitert?

MfG
Das ist eine Dll.
Außerdem scheitert da nix, funzt ja alles ;)
02/01/2011 19:46 mydoom#40
@yihaaa:
Scheint doch nun zu klappen? Klar hätte man sich ne Menge Ärger durch die Grundlagen ersparen können, aber hey: Jeder soll so "lernen" wie er möchte.
02/01/2011 20:58 germanhacker#41
Quote:
Originally Posted by mydoom View Post
@yihaaa:
Scheint doch nun zu klappen? Klar hätte man sich ne Menge Ärger durch die Grundlagen ersparen können, aber hey: Jeder soll so "lernen" wie er möchte.
Ich weiß zwar nicht, was du mit Grundlagen genau meinst, aber sowas wie Detours und D3D Hook kam in dem Buch "Jetzt lerne ich C++" nicht vor.
Ich hab das mit dem D3D Hooking jetzt mal durch ein Tutorial kennengelernt, viele Fehler durch Google und euch beheben können und letztendlich einen Hack erstellen können.
02/01/2011 21:12 MrSm!th#42
Nunja, ich denke, er meinte den korrekten Umgang mit der MSDN, vielleicht ein vernünftiges Tutorial über Detours und eins über D3D Hooks und naja, gute Kenntnisse der WinApi und der Dll-Programmierung können auch nicht schaden.

Die Grundlagen könnten sich auch auf Speicherzugriffe bezogen haben, denn simple Zeigerdereferenzierung und memcpy gehören zu den Grundlagen, die haben nichts mit Hacks zutun.

Aber nun hast du es ja hinbekommen und alles ist gut :D
02/01/2011 21:22 germanhacker#43
hab noch eine frage, warum verschwindet der text meines d3d menüs immer ?
Zuerst sieht man alles, dann nach 1min oder so verschwindet sie ganz und nur noch ein kasten ist zu sehen
02/01/2011 21:44 P-a-i-n#44
Die Frage kann ich dir beantworten das problem ist deine Font.

D3DXCreateFont(pDevice, 14, 0, FW_NORMAL, 1, 0, DEFAULT_CHARSET, OUT_DEFAULT_PRECIS,ANTIALIASED_QUALITY, DEFAULT_PITCH | FF_DONTCARE, "Arial", &g_pFont );

Kann man in die EndScene machen brauch aber meist ein Pre/Post Reset aber um es dir einfacher zu machen.
Das hat mehr was zutun das der Directx Alt + Tab verkraftet aber da du sone sehr Anfängermäßige methode hast beim Zeichen drawen crasht es nicht. (sei froh)

Um dir gleich noch so etwas zu Dx zu sagen Font,Liner,Texturen,Shaders brauchen entweder ein Reset oder eine einmal Anfrage damit sie bei veränderungen erneut geladen werden können.

Wie du das machst ich lass mal den Reset weg
nur eine normale INIT(initialisierung)

Code:
bool Init = false;

void MeineInit(LPDIRECT3DDEVICE9 pDevice)
{

	if(g_pFont == NULL)	D3DXCreateFont(pDevice, 14, 0, FW_NORMAL, 1, 0, DEFAULT_CHARSET, OUT_DEFAULT_PRECIS,ANTIALIASED_QUALITY, DEFAULT_PITCH | FF_DONTCARE, "Arial", &g_pFont );
		Init= true;

}
Das ganze rufste dann so in der EndScene ganz oben auf
Code:
	if(!Init )MeineInit(pDevice);
Du kannst auch so eine Anfrage in der EndScene machen aber so externe Aufrufe sind besser wenn du mehr und mehr hinzufügst bleibt alles übersichtlicher.

Dann sollte es nicht mehr verschwinden.

Kannste C&P habs auf deine Font angepasst.

Wenn du bei Directx bleiben willst brauchste zu 150% ein Buch google wird dir da nur sehr sehr selten Helfen ich hab 5 Stück.
Und mit sehr sehr viel Abstand zu anderen ist das das beste.
[Only registered and activated users can see links. Click Here To Register...]
02/01/2011 21:51 MrSm!th#45
Das hab ich doch schon gesagt, du darfst den Font nicht jedes Mal beim Zeichnen erstellen!