---
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