--- title: WINSEC cours 1 authors: jeremy.delbarre tags: winsec, jeremy.delbarre --- # Execution la première fonction a se llancer est ntdll qui lance kernel32 ntdll finit l'initialisation kernel32 lance l'environnement d'execution de notre programme et résoud les imports. Windows utilise le CRT (runtime C) qui lancera le main de notre programme Windows relocs toute les libs il n'est jamais sur l'addresse de préférence ## PE doc https://docs.microsoft.com/en-us/archive/msdn-magazine/2002/february/inside-windows-win32-portable-executable-file-format-in-detail # API Windows pour utiliser il faut importer <Windows.h> les fonctions fopen et malloc sont implémenté par le CRT donc plus lente que les fonction de WIN32 WIN32 rend le programme C fonctionnant seulement sur Windows. les types C en WIN32 api sont différentes int -> DWORD les informations concernant une fonction sont dispo sur msdn pour ajouter des lib aller dans les paramètre puis éditeur de liens puis entrée # Notation ## notation hongroise - fonction -> CeciEstUneFonction() - pAdd : private function - g_Add: handle - type: en majuscule - nom de varaible commence par son type - DWORD dwCount # CRT le C runtime peut etre a la fois en statique et en dynamique L'inconvénient de le mettre en statique c'est que si il y a une vulnerabilite le programme restera vulnerable en générale on le met en statique pour s'assurer du fonctionnement sur d'autre systeme windows :::info avec PEbrowse on peut ouvir les exe et voir si il sont en dynamique ou statique ::: # Les symboles les symboles prive donne bcp d'information sur le binaire compilé # process explorer configurer les symboles dans les options # Analyse de code statique /analyse permet d'analyser le code a faire tout le long du developpement. ## SAL améliore la vérification statique du code(/analyse ) annotation qui précise l'utilisation des arguments et des valeurs de retoure- :::info bon outils process hacker ::: # Representation des caractère unicode a normaliser les caractere encodage utf qui représentee en bits de l'unicode il a des type pour ascci et pour unicode. il a le type TCHAR qui sera asci si on definie en asci et inversement # gestion d'erreur ETW difficile a mettre en place WPP plus facile utilise ETW on