[C++] MessageBoxA (user32.dll API HOOKING )

  • Partenaires

Utilisateurs qui regardent le poste (Total: 0, Members: 0, Invité: 0)

Statut
La discussion n'est pas ouverte à d'autres réponses
Misuki

Misuki

Git Wizard en freelance
Level 5
Level 4
Level 3
Level 2
Ancien staff
Level 1
15 Juin 2012
2,299
66
954
Salut tout le monde !

J'ai pas trop le temps d'expliquer en quoi consiste l'api hooking ni de trop présenter le problème en lui même...

Ci-join, 2 projet C++, créer avec Visual Studio 2010. Le premier étant un logiciel simple qui lance une messageboxA après la validation, l'autre qui est une DLL a injecté dans le programme d'avant.

Le but est qu'une fois la méthode MessageBoxA appelé (je rappelle que le module utilisé est user32.dll) il faut que ça change le texte de la MessageBoxA du programme.

Seulement... ça ne changes rien.. Et je ne comprends pas pourquoi. J'ai un petit peu leech le code (j'vous rassure, c'était à la base pour voir si ça marchait).

Les liens:

Win32 App:
C++HookMessageBoxA:
 
A

Antilopes

Level 2
Level 1
17 Nov. 2013
9
0
121
36
J'ai pas envie de DL, mets ton code ou crée un pastebin pour voir ton problème.
 
Misuki

Misuki

Git Wizard en freelance
Level 5
Level 4
Level 3
Level 2
Ancien staff
Level 1
15 Juin 2012
2,299
66
954
=> C++HookMessageBox

Le code de l'autre application importe peu, le projet est très petit.
 
Misuki

Misuki

Git Wizard en freelance
Level 5
Level 4
Level 3
Level 2
Ancien staff
Level 1
15 Juin 2012
2,299
66
954
Petit up ... :/
 
A

Antilopes

Level 2
Level 1
17 Nov. 2013
9
0
121
36
Je m'excuse de répondre si tard, mais après avoir vu ton code je te suggère d'apprendre le c++ d'abord, vu ton emploie des fonctions je doute fort que tu connais les bases du langage.
 
TheHardButcher

TheHardButcher

Programmeur C/C++
Level 5
Level 4
Level 3
Level 2
Level 1
14 Déc. 2009
1,460
58
964
France
Je pense avoir un conseil tout aussi simple, au lieu d'uniquement copié les sources de tuto sur l'api hooking, essai réellement de la comprendre !
 
Misuki

Misuki

Git Wizard en freelance
Level 5
Level 4
Level 3
Level 2
Ancien staff
Level 1
15 Juin 2012
2,299
66
954
Oups là, j'avais oublier ce poste !

THB, le fameux fantôme de la section programmation m'a donc répondu.
J'ai essayer de comprendre, et je comprend la façon de faire (et encore + maintenant après avoir un peu approfondis). Le problème étant que je n'ais pas toute les bases du C++, donc j'ai du mal, sur ce point je suis d'accord => j'retourne apprendre le C++.

Merci quand même, je réparerais ça tout seul !
 
Nayres

Nayres

Membre Banni
15 Avr. 2012
3,431
0
341
Quelque part.
Je vois que tu as pris le src de mon tutoriel, ce que je déconseille, le source code est vraiment ancien, tu peux maintenant facilement faire du hooking à l'aide du header "detour.h" ou bien cette fonction :

PHP:
void* detourFunc(BYTE *src, const BYTE *dst, const int len)
{
	BYTE *jmp = (BYTE*)malloc(len+5);
	DWORD dwback;

	VirtualProtect(src, len, PAGE_READWRITE, &dwback);

	memcpy(jmp, src, len);	jmp += len;

	jmp[0] = 0xE9;
	*(DWORD*)(jmp+1) = (DWORD)(src+len - jmp) - 5;

	src[0] = 0xE9;
	*(DWORD*)(src+1) = (DWORD)(dst - src) - 5;

	VirtualProtect(src, len, dwback, &dwback);

	return (jmp-len);
}

tu définis la fonction que tu veux hook par exemple
Et tu n'as qu'a crée ta fonction, puis mettre un jmp grâce à la fonction que je t'ai donné précédemment.
 
Statut
La discussion n'est pas ouverte à d'autres réponses