Catastrophe ! VC++ a détruit un fichier source (panne de courant)

jockos Messages postés 321 Date d'inscription dimanche 22 octobre 2000 Statut Membre Dernière intervention 14 mai 2005 - 26 juil. 2004 à 14:21
Funto66 Messages postés 1267 Date d'inscription mercredi 1 janvier 2003 Statut Membre Dernière intervention 28 février 2007 - 29 juil. 2004 à 02:47
J'étais tranquillement en train de travailler sur mon projet avec VC++ quand une vilaine panne de courant est venu arrêter mon PC sans prévenir... violament quoi (j'suis sous XP)...

Et quand j'ai réouvert mon projet, le fichier cpp sur lequel j'étais en train de travailler ne s'est pas ouvert...
Il contient maintenant des 0 partout... (il fait la même taille qu'avant mais il est remplit qu'avec des octets à 0) !!!!!

C'est une catastrophe car je n'ai pas de sauvegarde de ce fichier et je dois donc tout me retapper... (il faisait quand même près de 1000 lignes de codes).

Ma seul piste, c'est le fichier .obj correspondant à mon fichier cpp qui lui est intact.
Le .h est aussi intact...

Bref, ma question, c'est de savoir si il est possible de récupérer le cpp à partir des fichiers .obj et .h correspondant ?
Bref, de faire une décompilation du fichier objet (.obj) pour retrouver mon cpp d'origine...

Franchement, j'suis trop dégouté... VC++ a trop abusé... je ne comprend pas pourquoi mon fichier est maintenant remplit qu'avec des 0... (je sais que VC++ l'a ouvert en lecture/ecriture et n'a pas eu le temps de libérer la ressource mémoire du fichier à cause de la panne de courant, mais quand même, c'est abusé !).

Merci pour votre aide...

11 réponses

Clonk Messages postés 278 Date d'inscription mardi 22 janvier 2002 Statut Membre Dernière intervention 29 août 2006
26 juil. 2004 à 14:39
Bha... je vais être un peu défaitiste, mais là... Y a rien à faire... G eu le meme problème avec un fichier .ll (C du Lisp), et... bah on peut rien y faire. C pas non plus la faute de VC++, il a pas de mode dégradé là dessus, C à toi de sauvegarder (meme si ça soule).
Mais sinon, la décompilation, franchemenent, j'y crois pas...
Désolé!
0
jockos Messages postés 321 Date d'inscription dimanche 22 octobre 2000 Statut Membre Dernière intervention 14 mai 2005 2
26 juil. 2004 à 14:47
Mais pourtant, j'ai sauvegardé... c'est ça qui est hallucinant...

C'est un fichier que j'ai crée il y a plusieurs jours... je n'ai pas tout écrit en une seule fois sans sauvegardé...
d'ailleurs, j'ai pris l'habitude de cliquer très régulièrement sur le bouton de sauvegarde de VC++ sans que je m'en rende compte...

Ce qui me dégoute, c'est que VC++ a écrit que des 0 dans mon fichier... ou alors c'est Windows qui a fait cela en déswappant mon fichier source de la mémoire... quoique vu qu'il y a eu une panne de courant, ça veut dire que ce n'est même pas cela...

C'est assez déroutant...

Je compile en mode DEBUG et apparemment, il y a peut être moyen de retrouver mon cpp à partir du obj et de mon .h.
J'ai vu un message sur le forum dans le genre mais il n'y a pas vraiment eu de réponse...

Mais je crois que c'est faisable...

A+ et merci quand même...

Jock
0
Funto66 Messages postés 1267 Date d'inscription mercredi 1 janvier 2003 Statut Membre Dernière intervention 28 février 2007 4
27 juil. 2004 à 11:47
Retrouver le fichier .cpp je pense pas (dsl...) par contre tu peux encore utiliser le fichier obj pour compiler; et si tu veux rajouter des fonctions à ta classe tu pourrais modifier le .h et créer un autre .cpp pour continuer l'implémentation.
Mais en revanche si t'as quelque chose à changer dans ton fichier .cpp/.obj, bref dans l'implémentation que t'as déjà faite, ben ça sera pas possible...à moins de décompiler le prog fini, modifier en ASM et réassembler mais bon :p

Patience et longueur de temps font plus que force ni que rage....
0
jockos Messages postés 321 Date d'inscription dimanche 22 octobre 2000 Statut Membre Dernière intervention 14 mai 2005 2
27 juil. 2004 à 12:47
J'ai refait entièrement mon fichier source cpp...

Merci quand même pour votre aide...

Jock
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Clonk Messages postés 278 Date d'inscription mardi 22 janvier 2002 Statut Membre Dernière intervention 29 août 2006
27 juil. 2004 à 17:20
Bah tu as sauvegardé le fichier sur lequel VC++ écrivait, donc ça change pas que CT le fichier que tu utilisais à ce moment là!
Je suis pas sûr à 100%, mais il me semble qu'on peut pas ouvrir en lecture/écriture un fichier s'il est déjà ouvert par visual studio (je demanderais confirmation), il aurait fallu le sauvegarder à un autre endroit, voire un autre disque...

Donc Visual Studio avait peut être déjà ouvert ton fichier, le plantage a fait perdre toutes les infos qu'il y avait dessus, sur la table des fichiers, il existe bien, il a une taille définie, mais les données à l'intérieur on été détruites, ce qui explique la présence de zéros.
Enfin, t'as eu le courage de tout refaire, chapeau! ;-)
0
jockos Messages postés 321 Date d'inscription dimanche 22 octobre 2000 Statut Membre Dernière intervention 14 mai 2005 2
27 juil. 2004 à 17:33
Ouais, mais c'est super violent ce qui s'est passé quand même.

Mon fichier cpp fait partit d'un projet VC++ (un workspace).
Et je travaillais dessus depuis Visual C++.

Je venais de refaire une petite sauvegarde (car j'ai pris l'habitude de sauvegarder mes fichiers source toute les 5 minutes environ quand je travail dessus).

Bref, j'avais pas fait beaucoup de nouveau truc depuis la dernière sauvegarde quand la panne de courant (dans toute ma maison) a eu lieu.
Je me suis dit que ce n'était pas très grave... (sauf pour le harware de mon PC à la rigueur).

Et quand j'ai relancer mon PC, réouvert VC++ et mon Workspace, il m'a dit que le fichier cpp était au format binaire...
Et quand j'ai regardé le contenu de mon fichier, il n'y avait que des 0 dedans...

Il y avait d'autres fichiers ouvert dans VC++ au moment de la panne de courant, mais c'est uniquement le fichier qui était actif dans le MDI VC++ qui a été écrasé par des 0...

Le pire, c'est que la panne de courant a eu lieu chez mon voisin aussi... Donc j'suis un peu vénère contre EDF et aussi contre VC++ qui a écrasé mon fichier avec des 0 à cause de la panne de courant...

Maintenant, je me méfirais... et je ferais des backup (chose que je fais toujours habituellement, mais comme par hasard, je n'avais pas sauvegardé ce fichier ailleurs)...

Bref, j'ai tout recodé... donc tout est OK maintenant...

Merci pour votre aide...

++

Jock
0
Funto66 Messages postés 1267 Date d'inscription mercredi 1 janvier 2003 Statut Membre Dernière intervention 28 février 2007 4
28 juil. 2004 à 16:15
Effectivement, t'as eu du courage, chapeau :S
Juste une question comme ça, c'est quoi le projet en question? ;)

Patience et longueur de temps font plus que force ni que rage....
0
jockos Messages postés 321 Date d'inscription dimanche 22 octobre 2000 Statut Membre Dernière intervention 14 mai 2005 2
28 juil. 2004 à 16:30
C'est un projet en rapport avec la signature numérique...

Mon fichier cpp que j'ai perdu mais qu ej'ai refait entièrement sert à lire et écrire dans un Token sécurisé (carte à puce, clé USB sécurisée, ...) via l'interface PKCS#11 (en utilisant la dll fournit avec le Token).

C'est donc pour avoir un code source commun de lecture/ecriture dans la partie privée de n'importe quel token compatible PKCS#11.

Voilà...

++
0
Funto66 Messages postés 1267 Date d'inscription mercredi 1 janvier 2003 Statut Membre Dernière intervention 28 février 2007 4
28 juil. 2004 à 16:35
Ouhla ouhla, en fait tu fais un prog pour écrire sur les cartes à puce O_o
PKCS#11 -> ça me dit rien du tout lol
Ben bonne chance pour ton projet alors...

Patience et longueur de temps font plus que force ni que rage....
0
jockos Messages postés 321 Date d'inscription dimanche 22 octobre 2000 Statut Membre Dernière intervention 14 mai 2005 2
28 juil. 2004 à 16:50
Merci...

Pour info, PKCS#11, c'est une norme internationale crée par RSA Laboratories sur la manière d'écrire et de lire des informations (DATA, CLE PUBLIQUE, CLE PRIVEE, CLE SECRETE, ...) dans un Token sécurisé (carte à puce, ...).

PKCS = Public Key Cryptography Standards
Il y a un paquet de standard différent (#1, #5, #6, #12, ...) et chaque standard traite sur un domaine spécifique des systèmes cryptographiques à clé publiques.

Les constructeurs de cartes à puce implémentent les fonctions d'une librairie (dll ou lib). Le profil de chaque fonction doit être respecté conformément à la norme PKCS#11 (c'est exactement le même système que pour un plugin par exemple).

Ainsi les programmes clients accèdent à tout les Token compatible PKCS#11 de la même manière (il suffit de charger la librairie dynamique PKCS #11 qui va avec le Token).
Le code source coté client est donc unique (pas besoin de faire un code source pour chaque type de Token).

Bonne prog à toi...
0
Funto66 Messages postés 1267 Date d'inscription mercredi 1 janvier 2003 Statut Membre Dernière intervention 28 février 2007 4
29 juil. 2004 à 02:47
Ouais ok je vois...
Merci pour cette petite explication ;)

Patience et longueur de temps font plus que force ni que rage....
0
Rejoignez-nous