Hallo Leute,
ich wende mich voller Verzweifelung an euch, da mal wieder etwas nicht funktioniert.
Ich habe gerade einen D3D9 Endscene Hook aus dem Tutorial von SilverDeath fertiggestellt.
Ich habe den vom Autor empfohlenen Injector benutzt, um meine DLL in ein D3D9-Testprogramm (Credits an wen von ****) zu injizieren (im Anhang + ). Am Anfang ist das Testprogramm immer wieder abgeschmiert. Erst als ich den "add_log"-Aufruf in der gehookten Funktion reingestellt habe, ist es nicht mehr abgeschmiert, sondern unverändert geblieben. Ich war gelinde gesagt sehr überrascht, da ich das Tutorial eigentlich genaustens befolgt habe. Auch hatte ich daran gedacht den Injector als Admin zu starten (nutze Win7 64Bit) und ich hatte es auch ausprobiert das Testprogramm als Admin zu starten. Als ich mal Olly an das Testprogramm gehangen habe und meine DLL dann injiziert hatte, ging es plötzlich (also das grüne Rechteck war wunderbar zu sehen).
Lange Rede, kurzer Sinn: ich habe keine Ahnung woran es scheitert oder wie man es behebt. Es wäre nett, wenn mir jemand helfen könnte.
Hier erstmal der Code (eig. nur C&P vom Tutorial, aber was hätt' ich denn groß verändern sollen?):
Log Added (01/30/12 01:21:06): Message from inner EndScene!
die zeile hätte eigtl ein paar 100x in der logdatei stehen müssen, da (anscheinend vsync an) endscene rund 60x pro sekunde aufgerufen wird.
oder hast du den rest rausgeschnitten?
EDIT:
nvm, zuerst code ansehen - dann antworten...
hmm ne weiß ich nicht, wieso es bei dir nicht geht, bei mir gehts auch mit deinem code problemlos ohne die meldung.
einzige womit ich schon öfters probleme hatte ist die data execution prevention von windows, aber eigtl setzt die detourfunc aus dem tut da die rechte auf execute_read_write, das einzige was ich mir vorstellen kann, da das ganze aus nem thread aufgerufen wird, die originalfunktion aber vorher überschrieben wird, und danach erst die rechte gesetzt werden, dass dann ganz kurz noch die falschen rechte im trampolin herrschen.
deswegen hält man das prog normalerweise an, während man detourt...
kannst du evtl. fixxen indem du entweder DIP deaktivierst:
Bei mir kam die Zeile auch erst ziemlich oft, aber da mir dann 1mal reicht habe ich eben diese If-Abfrage reingebaut:
Code:
if (bMessageSent == false)
{
add_log("Message from inner EndScene!");
bMessageSent = true;
}
Bir mir funktioniert es jedenfalls nicht
Kann das am Injector liegen (hat bestimmt irgendwas mit Rechten zu tun)? Ich nutze ja den HolzIgto Injector (im Anhang + ).
Kein Problem.
Die DEP möchte ich nicht deaktivieren, da der Hook ebenfalls ohne Probleme auf anderen Rechnern laufen soll (ohne dass vorher an Windows gedreht werden muss).
Ich kam jetzt zur Erkenntnis, dass es zwar funktioniert (egal welche Detourfunktion man nutzt), aber nur wenn man den Injector vor dem Testprogramm startet (dann auch ohne Olly oder ähnlichem). Heisst das, dass das Problem beim Injector liegt?
Kein Problem.
Die DEP möchte ich nicht deaktivieren, da der Hook ebenfalls ohne Probleme auf anderen Rechnern laufen soll (ohne dass vorher an Windows gedreht werden muss).
Ich kam jetzt zur Erkenntnis, dass es zwar funktioniert (egal welche Detourfunktion man nutzt), aber nur wenn man den Injector vor dem Testprogramm startet (dann auch ohne Olly oder ähnlichem). Heisst das, dass das Problem beim Injector liegt?
Danke trotzdem
MfG
Jeoni
Wenn in der Log Datei was geschrieben wird, kann es eigentlich nicht an deinen Injektor liegen. Falls du doch nochmal einen anderen testen willst, kann ich dir winject empfehlen.
Bei Winject ist es das selbe. Allerdings bin ich darauf gekommen, dass es wohl am Zielprogramm (also "D3D Test.exe") lag, da es bei anderen Programmen ohne Probleme funktioniert (egal mit welchen Injector). Dummer Fehler, aber naja.
Trotzdem danke an euch für die Hilfe
MfG
Jeoni
D3D8/D3D9 Device Hook 01/30/2008 - Soldier Front - 4 Replies http://rapidshare.com/files/86461541/d3dx8.zip.htm l
http://rapidshare.com/files/86461553..._v2.3.zip. html
http://rapidshare.com/files/86461559..._v2.3.zip. html