Crypter ou cacher appel aux api

jb212121 Messages postés 76 Date d'inscription mardi 6 avril 2004 Statut Membre Dernière intervention 22 décembre 2012 - 21 nov. 2007 à 22:38
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 - 23 nov. 2007 à 12:12
Bonsoir,

J'aimerai savoir s' il est possible de crypter ou de cacher l'appel d'une api

Merci

8 réponses

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
22 nov. 2007 à 00:12
LoadLibrary

ciao...
BruNews, MVP VC++
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
22 nov. 2007 à 00:12
et GetProcAddress

ciao...
BruNews, MVP VC++
0
jb212121 Messages postés 76 Date d'inscription mardi 6 avril 2004 Statut Membre Dernière intervention 22 décembre 2012
22 nov. 2007 à 07:11
Tu veux dire qu'il faut aller chercher la fonction directement en memoire ?

As tu un petit exemple stp?

Merci
0
jb212121 Messages postés 76 Date d'inscription mardi 6 avril 2004 Statut Membre Dernière intervention 22 décembre 2012
22 nov. 2007 à 07:33
J'ai trouvé un petit exemple mais j'arrive pas  à le modifier.
Comment faire si je veux utiliser la meme methode mais avec GetModuleFileName
Merci
// Type des fonctions


BOOL(WINAPI *pProcess32First)(HANDLE,LPPROCESSENTRY32);

//Functions addresses :

pProcess32First = (BOOL(WINAPI *)(HANDLE,LPPROCESSENTRY32))GetProcAddress (LoadLibrary("kernel32.dll"), "Process32First" );


//Utilisation
pProcess32First ( hTool32, &PEntry );
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
22 nov. 2007 à 12:50
Salut,


Non testé :
DWORD(WINAPI *pGetModuleFileNameA)(HMODULE, LPTSTR, DWORD);


pGetModuleFileNameA
 = (DWORD(WINAPI *)(
HMODULE, LPTSTR, DWORD
))
GetProcAddress
(LoadLibrary("kernel32.dll"), "
GetModuleFileNameA
" );


pGetModuleFileNameA(...)




Attention, certaines API (dont GetModuleFileName) sont exportées en
deux version : une suffixée par A (Version ANSI) et l'autre suffixée
par W (Version Unicode). C'est présisé dans la msdn à la fin (Et y a la dll de la fonction aussi). Tu peux changer le jeu de caractère dans la configuration du programme.

Si tu fais ça pour rendre le désassemblage de ton executable plus difficile, c'est vrai que ça va certainement le
ralentir un peu. Mais certainement pas assez pour que tu t'embètes à
faire ça pour tous tes appels. Si c'est pour un système de protection
quelconque, les crackeurs ont plutôt tendance à mettre des points
d'arrêts sur les API elles-même, donc ta méthode risque de ne pas les
gêner le moins du monde.

<hr size="2" width="100%" />3ème année en ecole d'ingé d'info cherche stage de 4 mois à partir du 01/04/08
0
cs_juju12 Messages postés 966 Date d'inscription samedi 3 avril 2004 Statut Membre Dernière intervention 4 mars 2010 4
22 nov. 2007 à 17:35
Au passage très mauvaise idée la syntaxe 
pProcess32First = (BOOL(WINAPI *)(HANDLE,LPPROCESSENTRY32))GetProcAddress (LoadLibrary("kernel32.dll"), "Process32First" );

Tu peux pas libérer la dll (FreeLibrary) et en plus si tu charges plusieurs fonctions tu va bloquer plusieurs handle pour rien.
0
jb212121 Messages postés 76 Date d'inscription mardi 6 avril 2004 Statut Membre Dernière intervention 22 décembre 2012
22 nov. 2007 à 20:38
En faite je veux passer par GetProcAddress et LoadLibrary car mon .exe est détécter par certains AV a cause des fonctions GetModuleFileName et CopyFile.
Quelqu'un sais comment utiliser GetProcAddress et LoadLibrary ?
Merci
0
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
23 nov. 2007 à 12:12
Bah comme fait plus haut sauf que comme le fait remarquer juju12, c'est
quand même mieux de garder le handle renvoyé par LoadLibrary.


T'as exemple sur wikipedia, ici(Sous le VB et le Delphi).


Globalement, il faut :

1 Déclarer un pointeur sur une fonction qui a le même proto que celle qu'on veut utiliser.

2 Déclarer un handle.

3 Charger la librairie avec LoadLibrary et récupérer le handle de la lib.

4 Récupérer l'adresse de la fonction qui nous intéresse dans la
librairie en se servant du handle de celle-ci. On met l'adresse de
cette fonction dans le pointeur déclaré plus haut.

5 Pour appeler la fonction, on se sert du pointeur.


Un AV qui refuse l'import de CopyFile et GetModuleFileName dans un exe,
c'est de la merde en boite. Faut pas déconner bordel, c'est du
n'importe quoi. Tu n'as pas à t'adapter à ce genre de logiciel de merde.

<hr size="2" width="100%" />3ème année en ecole d'ingé d'info cherche stage de 4 mois à partir du 01/04/08
0
Rejoignez-nous