Hello every one. I have a littel problem. When I do a DIP-hook. Then the game will freeze, The music contiues but the screen doesn't refresh any more...

I did the Midhook this way:
Code:
DIP hook: (This is in DIP)
648DB6F0  - 0F84 1A5A6C>JE D3DHook2.57FA1110 //naked call
648DB6F6    90          NOP
648DB6F7    395E 18     CMP DWORD PTR DS:[ES>
Code:
Naked function:
57FA1110    60          	PUSHAD
57FA1111    9C          	PUSHFD
57FA1112    833D 2C65FA>	CMP DWORD PTR DS:[57FA652C],1
57FA1119    75 02       	JNZ SHORT 57FA111D
57FA111B    EB 21       	JMP SHORT 57FA113E
57FA111D    36:FF75 20  	PUSH DWORD PTR SS:[EBP+20]
57FA1121    36:FF75 1C  	PUSH DWORD PTR SS:[EBP+1C]
57FA1125    36:FF75 18  	PUSH DWORD PTR SS:[EBP+18]
57FA1129    36:FF75 14  	PUSH DWORD PTR SS:[EBP+14]
57FA112D    36:FF75 10 	 	PUSH DWORD PTR SS:[EBP+10]
57FA1131    36:FF75 0C  	PUSH DWORD PTR SS:[EBP+C]
57FA1135    36:FF75 08  	PUSH DWORD PTR SS:[EBP+8]
57FA1139    E8 42FFFFFF 	CALL 57FA1080 //Call my DIP
57FA113E    61          	POPAD
57FA113F    9D          	POPFD
57FA1140    36:8975 EC  	MOV DWORD PTR SS:[EBP-14],ESI //restore
57FA1144    36:8975 D4  	MOV DWORD PTR SS:[EBP-2C],ESI //restore
57FA1148    36:895D D8  	MOV DWORD PTR SS:[EBP-28],EBX //restore
57FA114C  - FF25 2465FA57       JMP DWORD PTR DS:[57FA6524]                                   ; d3d9.648DB6F7 //return back to the return address. Is this wrong? d3d9.648DB6F7 << 648DB6F7 si correct.. But "MP DWORD PTR DS:[57FA6524]"?
Code:
MyDIP:
57FA1080    55          PUSH EBP
57FA1081    8BEC        MOV EBP,ESP
57FA1083    83EC 0C     SUB ESP,0C
57FA1086    8B45 08     MOV EAX,DWORD PTR SS:[EBP+8]
57FA1089    8B08        MOV ECX,DWORD PTR DS:[EAX]
57FA108B    53          PUSH EBX
57FA108C    56          PUSH ESI
57FA108D    57          PUSH EDI
57FA108E    8D55 FC     LEA EDX,DWORD PTR SS:[EBP-4]
57FA1091    52          PUSH EDX
57FA1092    8D55 F8     LEA EDX,DWORD PTR SS:[EBP-8]
57FA1095    52          PUSH EDX
57FA1096    8D55 F4     LEA EDX,DWORD PTR SS:[EBP-C]
57FA1099    33F6        XOR ESI,ESI
57FA109B    52          PUSH EDX
57FA109C    56          PUSH ESI
57FA109D    50          PUSH EAX
57FA109E    8B81 940100>MOV EAX,DWORD PTR DS:[ECX+194]
57FA10A4    8975 F8     MOV DWORD PTR SS:[EBP-8],ESI
57FA10A7    8975 FC     MOV DWORD PTR SS:[EBP-4],ESI
57FA10AA    C705 2C65FA>MOV DWORD PTR DS:[57FA652C],1
57FA10B4    FFD0        CALL EAX
57FA10B6    85C0        TEST EAX,EAX
57FA10B8    75 0B       JNZ SHORT 57FA10C5
57FA10BA    8B45 F4     MOV EAX,DWORD PTR SS:[EBP-C]
57FA10BD    8B08        MOV ECX,DWORD PTR DS:[EAX]
57FA10BF    8B51 08     MOV EDX,DWORD PTR DS:[ECX+8]
57FA10C2    50          PUSH EAX
57FA10C3    FFD2        CALL EDX
57FA10C5    3975 FC     CMP DWORD PTR SS:[EBP-4],ESI
57FA10C8    8B75 20     MOV ESI,DWORD PTR SS:[EBP+20]
57FA10CB    8B7D 1C     MOV EDI,DWORD PTR SS:[EBP+1C]
57FA10CE    8B5D 18     MOV EBX,DWORD PTR SS:[EBP+18]
57FA10D1    75 19       JNZ SHORT 57FA10EC
57FA10D3    8B45 14     MOV EAX,DWORD PTR SS:[EBP+14]
57FA10D6    8B4D 10     MOV ECX,DWORD PTR SS:[EBP+10]
57FA10D9    8B55 0C     MOV EDX,DWORD PTR SS:[EBP+C]
57FA10DC    56          PUSH ESI
57FA10DD    57          PUSH EDI
57FA10DE    53          PUSH EBX
57FA10DF    50          PUSH EAX
57FA10E0    8B45 08     MOV EAX,DWORD PTR SS:[EBP+8]
57FA10E3    51          PUSH ECX
57FA10E4    52          PUSH EDX
57FA10E5    50          PUSH EAX
57FA10E6    FF15 2865FA>CALL DWORD PTR DS:[57FA6528]                                  ; d3d9.648DB6B1
57FA10EC    8B4D 14     MOV ECX,DWORD PTR SS:[EBP+14]
57FA10EF    8B55 10     MOV EDX,DWORD PTR SS:[EBP+10]
57FA10F2    8B45 0C     MOV EAX,DWORD PTR SS:[EBP+C]
57FA10F5    56          PUSH ESI
57FA10F6    57          PUSH EDI
57FA10F7    53          PUSH EBX
57FA10F8    51          PUSH ECX
57FA10F9    8B4D 08     MOV ECX,DWORD PTR SS:[EBP+8]
57FA10FC    52          PUSH EDX
57FA10FD    50          PUSH EAX
57FA10FE    51          PUSH ECX
57FA10FF    FF15 2865FA>CALL DWORD PTR DS:[57FA6528]                                  ; d3d9.648DB6B1
57FA1105    5F          POP EDI
57FA1106    5E          POP ESI
57FA1107    5B          POP EBX
57FA1108    8BE5        MOV ESP,EBP
57FA110A    5D          POP EBP
57FA110B    C2 1C00     RET 1C //return
I copied de DIP form the internet. This is to test if it works:

Code:
HRESULT WINAPI DrawIndexedPrimitive_Detour(LPDIRECT3DDEVICE9 Device_Interface, D3DPRIMITIVETYPE Type, INT BaseIndex, 
	UINT MinIndex, UINT NumVertices, UINT StartIndex, UINT PrimitiveCount) {

	LPDIRECT3DVERTEXBUFFER9 Stream_Data;
	UINT Offset = 0;
	UINT Stride = 0;
	MultipleDIP = TRUE;

	if(Device_Interface->GetStreamSource(0, &Stream_Data, &Offset, &Stride) == D3D_OK)
		Stream_Data->Release();

	if(Stride == 0)
	{
		// ...
		DrawIndexedPrimitive_Pointer(Device_Interface, Type, BaseIndex, MinIndex, NumVertices, StartIndex, PrimitiveCount);
		// ...
	}

	HRESULT Result = DrawIndexedPrimitive_Pointer(Device_Interface, Type, BaseIndex, MinIndex, NumVertices, StartIndex, PrimitiveCount);

	//MultipleDIP = FALSE;
	return Result;
}
I hooked at this place:
Code:
648DB6B1    8BFF        MOV EDI,EDI
648DB6B3    55          PUSH EBP
648DB6B4    8BEC        MOV EBP,ESP
648DB6B6    6A FF       PUSH -1
648DB6B8    68 28BEA464 PUSH 64A4BE28
648DB6BD    64:A1 00000>MOV EAX,DWORD PTR FS>
648DB6C3    50          PUSH EAX
648DB6C4    83EC 20     SUB ESP,20
648DB6C7    53          PUSH EBX
648DB6C8    56          PUSH ESI
648DB6C9    57          PUSH EDI
648DB6CA    A1 5092A564 MOV EAX,DWORD PTR DS>
648DB6CF    33C5        XOR EAX,EBP
648DB6D1    50          PUSH EAX
648DB6D2    8D45 F4     LEA EAX,DWORD PTR SS>
648DB6D5    64:A3 00000>MOV DWORD PTR FS:[0]>
648DB6DB    8965 F0     MOV DWORD PTR SS:[EB>
648DB6DE    8B7D 08     MOV EDI,DWORD PTR SS>
648DB6E1    33DB        XOR EBX,EBX
648DB6E3    3BFB        CMP EDI,EBX
648DB6E5    0F84 BA0300>JE 648DBAA5
648DB6EB    8D77 04     LEA ESI,DWORD PTR DS>
648DB6EE    3BDB        CMP EBX,EBX
MOV DWORD PTR SS:[EBP-14],ESI //Here I hook
MOV DWORD PTR SS:[EBP-2C],ESI //Here I hook
MOV DWORD PTR SS:[EBP-28],EBX //Here I hook
648DB6F7    395E 18     CMP DWORD PTR DS:[ES>

Did I made a mistake here? Or is somting else the problem? Its so strange.. The game doesn't crash... The screen only freeze. I hope some one can help me. Thanks!

Edit:
Btw, I use a DLL for this.