OldSchoolHack

Register / Login English

d3d hook


icon d3d hook #1

Join Date: Feb 2010

Posts: 4

Hi, ich hol mir den device-pointer indem ich beginscene hooke (ähnlich dem tutorial von knacker).

Um das zu tun schreibe ich an den anfang von beginscene in der d3d9.dll folgenden asm-code
push edx
mov edx, adresse
jmp edx

Alle abgeschnittenen Befehle fülle ich natürlich mit nop's und führe diese vor dem rücksprung in meiner hook-funktion aus (diese befindet sich natürlich in einer injecteten dll). Jeder veränderte register wird durch push/pop wieder hergestellt etc ...

Funktioniert alles auch so weit ganz gut.
Allerdings crasht counter-strike source wenn während dem schreiben von obigen code das spiel etwas auf den bildschirm zeichnet.
Es funktioniert also nur wenn ich im fullscreen-modus bin, das spiel minimiere und dann den hook starte.
Meine Vermutung: Bedingt durch exesives Multitasking schreibe ich den code nicht in einem rutsch in den speicher sondern stückweise, sodass es vorkommen kann, dass unvollständiger code vom spiel ausgeführt wird.

Wie kann ich das in den Griff kriegen?
Hab schon versucht alle Threads des Spiels (außer den hook-thread) zu pausieren währden ich in den Speicher schreibe, jedoch kommt der crash dann nachdem ich ich die threads vortführe ...

HELP ME

icon #2

Join Date: Aug 2007

Posts: 8643

User-Rating:

199 positive
33 negative
ein Threadingproblem schließe ich aus, sonst wäre das Problem verbreiteter. Du solltest im Debugger schauen ob die Befehle wirklich alle genauso sind wie original (also dein Trapolin zurück zu BeginScene). Falls er auf dem Weg dahin keinen Fehler fabriziert, solltest du trotzdem noch nachschauen, ob der Stack und die Register wirklich exakt im gleichen Zustand sind, wie vor deinem Hook.

greetz KN4CK3R

__________________

Hallo
icon #3

Join Date: Aug 2008

Posts: 2594

User-Rating:

17 positive
5 negative
Mal ne Frage.
Wieso machst du es dir so kompliziert? Wieso nimmst du nicht einfach die Detour Function?
icon #4

Join Date: Feb 2010

Posts: 4

naja die frage ist: welchen nutzen hat es für mich sowas zu coden?
mir gehts bis jetzt einzig um das wissen wie sowas geht. und wenn ich das selbst schreibe versteh ich mehr als wenn ich ne andere api benutze.

knacker hatte recht. läuft jetzt.
war etwas unsauber mit meinen push-pops :/
thx nochmal knacker für die ganzen tuts. waren sehr hilfreich
jetzt gehts ans engine-funktionen hooken ... bah ich hasse das source-sdk ;D
icon #5

Join Date: Aug 2008

Posts: 2594

User-Rating:

17 positive
5 negative
Quote from egami
naja die frage ist: welchen nutzen hat es für mich sowas zu coden?
mir gehts bis jetzt einzig um das wissen wie sowas geht. und wenn ich das selbst schreibe versteh ich mehr als wenn ich ne andere api benutze.
Wenn du gescheit üben willst, musst du trainers machen. Bei trainers gibt es sehr viele möglichkeiten und man muss öfters eine Lösung suchen. Abgesehn haben singleplayer spiele keinen wirklichen anticheat schutz, zumindestens kein tool dafür.
Das was du machst ist absoluten blödsinn und du wiedersprichst dir selbst. Du sagst du willst üben und selbst willst die sdk hooken... Wenn du wirklich übel willst, musst du schon ohne hilfe von SDK auskommen, 90% alle Spiele sind nicht Open Source, in gegensatz dafür, funktioniert die DetourFunction immer... merkst du was?