Aller au contenu

[RESOLU] lecture et modif d'un .EXE


Messages recommandés

- Essaye plutôt de créer des nouveaux topics

- Tu as ce warning parce que scanf peut conduire à des failles de sécurité si tu ne fais pas attention. Il te conseille donc d'utiliser une autre fonction plus sécurisée (scanf_s) et légèrement différente qui oblige de spécifier la taille de la variable qui recoit les entrées, pour ne pas dépasser cette taille et ainsi empêcher les fameuses failles de buffer overflow.

- Tu dois obligatoiremeent déclarer avant d'utiliser. Et c'est mieux (bonne pratique) de tout déclarer en début de fonction.

- L'executable est dans <Dossier Projet>/bin/Debug/

quand tu parle de spécifier la taille de la variable, j'imagine que c'est avec char, long, double etc...?

g du mal a comprendre (meme si c tres clair), de toute facon la longueur de la variable est determinée au moment de la declaration...

sinon j'ai beau avoir lu quelque truc sur le buffer overflow, j'ai encore du mal a faire la relation avec un truc aussi "petit" (dsl) que scanf

apres tout ce juste une instruction qui permet de donner une valeur a une variable non?

et puis admetton que je la fasse bugger avec 3,4*10^308+1, sa va durer combien de temps, 1 cent miliardieme de seconde ...

c'est flou... je doit me melanger quelque part

enfin dernier point qu'il me deconseille scanf je veut bien mais de la à me l'interdire et empecher la compilation

sinon g penser qu'un "Topic-C/C++" serait peut etre plus approprié et moins "vague", et peut etre préciser mode console/win32 (parce que si jamais je me mets a creer un topic a chaque nouvelle question c'est le forum qui vas vite etre overflow) ??

juste pour info vous pouvez me donner quelques nom de bon bouquin traitant de la programation en generale/C et surtout de l'informatique que je comprennent un peut se qui se passe dans la machine quand je lui donne une instruction, ou meme pour comprendre comment est structurer un systeme d'exploitation

Lien vers le commentaire
Partager sur d’autres sites

Bjarne Stroustrup.

Le langage C++.

Campus Press, 3ème édition, mars 2001.

Ce livre m'a été conseillé par les profs, mais je ne l'ai jamais lut :francais: .

Pour le buffer overflow, arrêtez moi si je me trompe, mais ça viens surtout de la manière qu'utilise scanf pour récupérer les données.

Si jamais ont lui fait prendre un char, et que le type met "chameau", les autres lettres sont conservés.

Même chose quand on appuie sur "entrée", le retour charriot laisse des traces.

et tous ses caractères peuvent entrer en conflit avec d'autres données dans la mémoire principal (RAM), voir les effacer.

Après y'a des fonctions comme sscanf et sprintf qui doivent améliorer les choses.

Mais je suis plus trop spécialiste du C, maintenant on fait plus que du C++.

Lien vers le commentaire
Partager sur d’autres sites

Ba c'est le même principe, mais ça existe aussi dans l'écriture en console dans les langages de programmation :dd:

dans ce cas on devrait l'entendre ... ;)

juste pour reprendre un truc un peut plus haut

pour les machine virtuelle g trouver Virtual box

a voir si les installation n'impact pas l'ensemble du systeme ...

rappel : l'idee est d'avoir un "compartiment" enfin une "base" qui serve par exemple aux telechargement, a la navigation sur internet, etc... de manière à ce qu'en cas d'attaque ou de chopage de virus l'ensemble du systeme ne soit pas impacter mais seulement la partie prévue a cette effet.

a voir si le principe des machines virtuelle le permet?

Lien vers le commentaire
Partager sur d’autres sites

Même si tu passe en paramètre une chaîne allouée pour 10 caractères, printf ne va pas aller vérifier sa taille, simplement parcequ'il n'a pas moyen de la connaître :). Donc si tu fais

char* str = new char[10];
scanf("%s", str);

et que je tape "chameauAAAAAAAAAAAAAAAA" dans le prompt, il va écrire tout ce que j'ai écrit dans la mémoire, à partir du premier caractère de str. Donc, comme mon str ne fait que 10 caractères, il se pourrait qu'une autre variable située juste derrière en mémoire se fassent écraser par mes A. Et à partir de là il y a dépassement de tampon (buffer overflow).

Par contre si tu fais :

scanf_s("%s", str, 10)

tu spécifies à scanf_s que ton buffer ne fait que 10 caractères et il pourra faire attention à ne rien écrire au delà de 10 caractères. Ceux qui dépassent sont perdus, mais il n'est pas possible de faire un dépassement.

Ah et puis très bon choix virtualbox ;)

Lien vers le commentaire
Partager sur d’autres sites

@ shtong

OK pigé pour le principe.

j'imagine que si la longueur n'est pas préciser il accepte la longueur max de variable (soit pour char 255 si je me trompe pas)

par contre je ne connais pas * et STR (STR j'imagine que c'est comme NOM_DE_VARIABLES. Abreviation de string ???),

et j'utilise "%lf" ou "%ld" selon le type de variable mais j'suppose c parce que t en C++ ??

par contre sans dec c la première fois qu'on me fait le coup du "je l'ai jamais lu"

Pas compris ?

C la première fois qu'on me conseille : "essaye ce bouquin la il est super, je l'ai jamais lu"...... :francais: mais j'ai compris que ton prof l'avait lu.... Lol.

par contre pour le retour chariot, vu qu'on ecrit aucune instruction à ce sujet j'imagine que sa doit etre inclus dans les librairie, donc si je procede par analogie "ENTRER" doit avoir sa propre instruction d'allocation en RAM

la question avec virtual box c'est :

1/ est ce que sa me permettra d'obtenir le resultat escompté..(proteger mon OS principal)

2/ est ce que je pourrais installé vista dessus sachant que c'est déja mon OS principal (linux ou assimilé me parrait aussi interessant mais je suis pas sur d'avoir de quoi en maitriser la portée, ... et puis qqpart autant conserver un outil auquel ont est habitué")

par contre je crois pas qu'on m'ai fournis le disque d'installation de vista, il etait déja sur la machine, c normal docteur (le PC etait neuf) ??

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...