2010-11-11 29 views
2

j'ai écrit ce code pour accrocher les fonctions de l'API en changeant l'adresse dans l'IAT et EAT: http://pastebin.com/7d9N1J2cIAT/EAT accrochage « gethostbyname »

Cela fonctionne très bien quand je veux accrocher « recv » ou « connecter ». Cependant, pour une raison inconnue, lorsque vous essayez d'accrocher "gethostbyname", ma fonction hook n'est jamais appelée.

J'ai essayé de trouver "gethostbyname" dans un débogueur en prenant l'adresse de base du module wsock32.dll + 0x375e, qui est ce que l'ordinal 52 de mon wsock32.dll montre comme décalage. Mais cela me fait finir dans un code asm aléatoire, pas au début d'une fonction. La même méthode fonctionne cependant bien pour essayer de trouver le point d'entrée "recv".

Est-ce que quelqu'un voit ce que je pourrais faire de mal?

Répondre

1

Exécutez un désassembleur comme IDA et attachez-vous à votre processus une fois que vous avez connecté cette fonction, ida vous appliquez des changements lors de la connexion et du processus de lecture et vérifiez ce qui ne va pas.

En autre façon, vous avez de nombreuses bibliothèques à faire des crochets avec trampolines comme Microsoft Detours, NCodeHook etc.

2

Je recommande cet outil: http://www.moduleanalyzer.com/

Ils font exactement la même chose et de montrer l'URL qui a été connecté avec cette API. Le problème est qu'il existe plusieurs API pour traduire une URL vers une adresse. L'application que vous utilisez peut utiliser une autre version de l'API que vous n'interceptez pas.