Une liste de produits utilisables :

Process Monitor suffit-il ? :
http://www.microsoft.com/technet/sysinternals/ProcessesAndThreads/processmonitor.mspx
Non, mais resort quand même des infos assez intéressantes.

Strace NT a l’air pas mal, mais pur ligne de commande :
http://www.softpedia.com/get/Programming/Debuggers-Decompilers-Dissasemblers/StraceNT.shtml
Sauf que quelquefois il fait planter le programme, et en général je ne comprends rien à ses filtres dont le résultat semble aléatoire. Si on trace EnterCriticalSection, le résultat semble bon, c’est donc les fonctions Cert* qu’il ne sait pas gérer ?

A voir API Monitor :
http://www.apimonitor.com/

Un autre ?
http://www.rohitab.com/apimonitor/

TracePlus/win32 (il y a aussi la version ethernet, la version Web Detective, c’est peut-être bien ce produit là qui m’avait le plus convaincu) :
http://www.sstinc.com/windows.html
En fait, impossible de voir autre chose que les fonctions qu’il connait, et il manque certains domaines entiers dans la liste !!
Inutilisable pour la crypto

FlexTracer (très orienté base de données)
http://www.softpedia.com/get/Programming/Debuggers-Decompilers-Dissasemblers/FlexTracer.shtml
Effectivement ne fait que la base de registre et les IO dans les api génériques
Sauf que … Avec Dll2Sym.exe, on crée à partir de n’importe quelle DLL le fichier xml qu’il utilise pour tracer ses appels de fonctions, et on peut éditer ensuite le fichier XML pour lui indiquer où sont les paramètres dans la pile.
+ possibilité d’utiliser un javascript pour rajouter une couche plus avancée d’interprétation des paramètres
Shareware à 40$, donc prix raisonnable

Comment pourrait-on refaire cela ?
Struture IAT :
http://www.koders.com/c/fid5EFFEB29E1AB6549A22F358E40815F463F33F041.aspx?s=IMAGE_THUNK_DATA
Un programme qui inclut une partie des fonctionnalités :
http://sourceforge.net/projects/hte

Stop ! On arrête tout et on utilise WinAPIOverride32 qui est vraiment très cool, et avec source disponible en GPL.
Seul point négatif, la syntaxe pour spécifier les paramètres est plus lourde que FlexTracer, et il manque un équivalent des possibilités d’interprétation avec le javascript. + les paramètres loggués sont coupé au delà d’une certaine longeur.
Pour les paramètres coupés, la solution est de faire un BreakBeforeAndAfterCall et on les récupère facilement en entier.