Problème Hook de fonction

Statut
N'est pas ouverte pour d'autres réponses.

neku

Codeur roumain
Alors voila, j'ai hook une fonction mais mon problème est (il me semble) que la fonction d'origine soit appelée avant ou alors malgré que je modifie les paramètre passé à la fonction il retourne ceux d'origine.

Code:
01D0E1AF   68 2890E801	  PUSH hl.01E89028						 ; ASCII "HUD_DirectorMessage"
01D0E1B4   51			   PUSH ECX
01D0E1B5   A3 F4CAF302	  MOV DWORD PTR DS:[2F3CAF4],EAX
01D0E1BA FFD6	 CALL ESI

0x2F3CAF4 Contient l'adresse de HUD_DirectorMessage
EAX = 0x01942920

01942920   8B15 F079A101	MOV EDX,DWORD PTR DS:[1A179F0]		   ; hl.01E884C0
01942926   8D4424 08		LEA EAX,DWORD PTR SS:[ESP+8]
0194292A   8D4C24 04		LEA ECX,DWORD PTR SS:[ESP+4]
0194292E   50			   PUSH EAX
0194292F   51			   PUSH ECX
01942930   FF92 94000000	CALL DWORD PTR DS:[EDX+94]

0x01942930 - 0x01942920 = 0x10

La fonction utilise 2 arguments
1) int iSize
2) void* pbuf

iSize est placé dans ECX
pbuf est placé dans EAX

__declspec( naked )void Gateway2_HUD_DirectorMessage( void )
{
	__asm
	{
		call HUD_DirectorMessage;
		jmp retaddress;
	}
}

DWORD DirectorMessage= (DWORD)&Gateway2_HUD_DirectorMessage;
__declspec( naked )void Gateway1_HUD_DirectorMessage( void )
{
	__asm
	{
		push esi;
		mov esi,dword ptr ss:[esp+0x10];
		mov retaddress,esi;
		push DirectorMessage
		pop esi;
		mov dword ptr ss:[esp+0x10],esi;
		pop esi;
		ret;
	}
}
Pour lui indiquer de passer pas ma fonction :
Code:
gClient.HUD_DirectorMessage = &Gateway1_HUD_DirectorMessage;
Et la fonction HUD_DirectorMessage (dans ma source)
Code:
void HUD_DirectorMessage (int iSize, void* pbuf) {
	return;
}
J'ai beau modifier le contenu de pbuf ou iSize il s'en moque totalement, quelqu'un aurais t'il une idée ?
 
1er
OP
neku

neku

Codeur roumain
Vraiment personne pour m'aider ?
 

guslinux

Gamerz'ien
c'est quoi pour un langage ca ?
 

Ezekiel !

Elite
k o D a dit:
çà ressemble à de l'ASM appelé via du C
On dirait bien o_O
Je savais pas qu'on pouvait faire ça... Ca doit pas être super pratique qd meme :s
 
Statut
N'est pas ouverte pour d'autres réponses.
Haut