---
# System prepended metadata

title: Winsec - 1
tags: [' moemoea.fierin', winsec]

---

---
title: Winsec - 1
tags: winsec, moemoea.fierin
date: 04/09/2020
---

# Introduction
Visual Studio langage de dev de Microsoft 

Grandes parties du cours:
- réseau
- authentification
- ...

# Visual Studio
Version  gratuite de visual studio S1Shell (?)
Justification des choix de logiciels en entreprise.

Application binairement compatible; System assure la perenité dans le temps.

## Commandes
F12  ->declaration de la variable
F10 debug pas a pas

## Call Stack
**NTDLL** termine ce qu'a commencer le noyau.
"Boot Thread" le thread qui démarre le programme.

Permet aussi de récupérer les exception

**Deuxieme bibliotheque (Kernel32):**
- initialise l'env d'exec windows du programme
- env d'execution pour des types de programme (avant on avait plusieurs types)

**Ensuite demarrage du programme:**
- alloue de la memoire
- nc'est le noyau qui alloue 
- Le CRT 

Dans le format PE c'est le run time C -> CRT

Kernel32 resout les import

//// hors cours
ASLR
certaines addr sont absolue
les modules ne sont jamais chargé a l'addr de base.
///


Ref - Documentation Windows MSDN 2002 February: https://docs.microsoft.com/en-us/archive/msdn-magazine/2002/february/inside-windows-win32-portable-executable-file-format-in-detail

## L'API Windows
L'os offrent des dixaine de DLL (API Windows).
Exemple:
    - si j'alloue "malloc". Ces fonctions sont implem par le runtime C. C'est pas performant et on n'a pas la finesse de l'API Windows. On va preferer l'API Win 32.
    - inconvenient API Win 32: uniquement du C et il faudra être confrome a la methode de prpgrammation de cette API.
    
**Specificité API Win32 :**
au lieu d'utiliser les types c (int, bool, ..) on va utiliser d'autre type; 32 bits non signé = dword
"Windows data type"

Dans visual si je fais un dword ca marche pas , poir utoloser l'api de windows il faut ajouter le .h: "Windows.h"
:::info
On peut avoir accès a la definition dans visual studio
C'est un unsigned long
:::


## Variante de fonctions
rajout de certaines function

## Notation hongroise
le but d'un programme c'est d'assurer sa perenite dans le temps
il faut donc plusieurs personnes et il y'a des regles
"Les conventions de ..."
dans l'api windows on a la notation hongroise qui specifie un certain nombre de chose

Notation hongroise:
- type de variable en majuscule
- type de variable prefie par leur type
- function premiere lettre en maj
- ...

Documentation microsoft de la notation hongroise

# Runtime
2 type de runtimes:
- Soit runtime a l'interieur du programme (dynamique)
- soit a l'exterieur sous forme d'une DLL (statique)

--Runtime Inclue:--
**Avantage** (runtime inclue) Autonomie
**Inconvenient:** un bug dans le runtime C le programme reste vulnerable
Alors qu'en externe windows update va s'en occuper.


--Sur Visual Studio--
Dans les options
Runtime ->encapsulé a l'interieur du programme

-- c runtime (CRT)--
fonction sécurisé:
exemple: strcat-s permet d'avoir la taille contrairement a strcat normal

# Symboles
on les utilise sous windows pour le reverse essentiellement

PDB-> table de symboles
il y'a des information sensiibles dans la table de symbole des fois
on a les symbole privée ce qui supprome les informations sur le code souce, les types de données, les données privées

## serveur de symboles
qd on veut recup les symb sur le serv microsoft
sys de cache

Si on n'a pas les modules de symboles de base c'est qu'on n'a pas acces a internet

# Appel bibliotèque

:::info
Shims Windows
:::

API native: NTDLL
APIWIN32: Kernel


# process hacker
Interet process hacker: outil tres utiliser en interne microsoft 
et il est en open source

# analyse de code
/analyse
projet ->analyser ->
Faut pas le faire a la fin par ce qe ca prendra du temps, il faut le faire au fil du projet

pointeur near vs far:
auj c'est la meme chose

en plus de la verification de code on a la SAL en plus a
LE SAL(Source Code Annotation Language) vient preciser comment on doit utiliser les arguments

Principale notations
notation de base
param optionnel
specification des taillles


analyse de code rajouter un certain nb de fonction
SAl qui vient preciser les val de ret

# Code d'erreur
helpmsg 2 (en console)


# Traces
Peut etre recuperer par des mechanismes de detections
Certaines traces ne peuvent etre acceder que par Microsoft.



# Exercice(s)/Site web
http://aurelien26.free.fr/epita/
login:mdp = epita:srs2020

# Traces
Fonctionnement: 
Ajout du header de traces: http://aurelien26.free.fr/epita/Exemples/wpp/
Init les traces au debut du code
On clean les traces a la fin  avant le return
eviter les exits entre le debut et la fin des traces

