[CRC - Matlab] Problème de CRC après génération DLL via matlab

Problème de CRC après génération DLL via matlab [CRC - Matlab] - Divers - Programmation

Marsh Posté le 12-02-2015 à 10:45:50    

Bonjour à tous,
 
Je bloque sur un problème depuis 2 jours, concernant le CRC de 2 fichiers "identiques".
 
Explication :
Je génère ma DLL avec matlab par exemple à 15h05.
A 15h06, je regénère cette même DLL (les sources n'ont pas changé d'un poil).  
Les deux DLL générées ont un poid identique (à l'octet près).
 
Lorsque je compare les CRC de ces 2 DLL, ils sont différents.
Ma question, comment éviter d'avoir le CRC impacté par la date de génération ?  
Ou comment faire en sorte que l'outil CRC ne tienne pas compte de la date de génération ?
 
Si quelqu'un à été confronté au même problème ou si il a une petite idée, qu'il n'hésites pas à se manifester ! :)
Bonne journée et d'avance merci !

Reply

Marsh Posté le 12-02-2015 à 10:45:50   

Reply

Marsh Posté le 12-02-2015 à 14:10:21    

Du moins est ce que vous pensez que c'est possible ? ou est-ce qu'un CRC prends en compte obligatoirement la date de création ?  
Merci.

Reply

Marsh Posté le 12-02-2015 à 18:21:49    

A priori la date de link est dans le header de la DLL, donc elles sont différentes au niveau binaire.  
 
Qu'est-ce que tu veux faire avec ton CRC ?

Reply

Marsh Posté le 13-02-2015 à 10:11:46    

Merci de ta réponse.
Le but est de prouver que mes deux DLL sont les mêmes, hormis la date de création (même code). je pensais pouvoir avoir les deux même CRC mais la date fait varier le tout.
 
Lorsque je compare les deux DLL avec Beyond Compare il me trouve une différence sur la deuxième ligne (qui doit correspondre a la date du header) et aussi une différence en plein milieu des data (ligne 400).
 
Cette deuxième différence me fait peur car je vois pas ce qu'une date viendrait faire au milieux des datas.  
 
Mais plus j'y pense, plus je me dit que ce n'est pas possible d'avoir un CRC égale avec 2 fichiers générés à des moments différents.

Reply

Marsh Posté le 13-02-2015 à 13:36:05    

La date du filesystem n'est pas prise en compte, ce n'est que le contenu qui joue.
 
A plus haut niveau, pourquoi tu veux prouver que deux DLLs sont identiques ?
Car là vu que tu patauges, c'est que c'est plus un moyen que tu penses pertinent pour atteindre un objectif, mais pas la solution.

Reply

Marsh Posté le 13-02-2015 à 14:51:19    

c'est l'inconvenient de la compil sous windows : le compilateur ajoute des infos locales (date, chemins des fichiers...).
Je ne sais pas si en changeant de compilo ou d'options de linkage, ca peut marcher

Reply

Marsh Posté le 13-02-2015 à 16:44:09    

Et bien j'ai l'impression que la date du filesystem est prise en compte !
Mes datas sont identiques mais pas le CRC, obligé que la date soit impliquée.
 
C'est pour le boulot, on a besoin de prouver que nos DLL sont identiques, même générées à des heures différentes (tant que les sources ne changent pas). Je suis parti sur l'idée du CRC, mais visiblement ça ne correspond pas totalement à notre besoin.  
Je vais continuer à chercher.
 
Je te remercie pour tes réponses.

Reply

Marsh Posté le 13-02-2015 à 16:49:40    

Oui Dardanelles, peut être qu'un autre compilo pourrait changer la done, le problème est que nous générons nos DLL avec matlab et qu'il est compliqué de changer notre chaine de génération.
Je vais quand même investiguer sur les options de compilation.
Merci !

Reply

Marsh Posté le 16-02-2015 à 10:07:46    

haaawaaax a écrit :

Et bien j'ai l'impression que la date du filesystem est prise en compte !
Mes datas sont identiques mais pas le CRC, obligé que la date soit impliquée.


T'as fait une comparaison binaire des DLLs ?
 

Citation :

C'est pour le boulot, on a besoin de prouver que nos DLL sont identiques, même générées à des heures différentes (tant que les sources ne changent pas).


 
Ç'est quoi l'objectif ? Ça ressemble à vouloir signer vos binaires sans savoir que c'est ce que vous voulez :D


Message édité par bjone le 17-02-2015 à 16:28:12
Reply

Marsh Posté le 17-02-2015 à 14:20:59    

Oui j'ai fait une comparaison binaire des DLLs.
Après concernant l'objectif, le but est de prouver les DLLs sont identiques.
 
Du coup je vais plutot prouver que mes sources sont identiques, ce sera moins contraignant.
 
Merci de vos remarques !
Bonne journée.

Reply

Marsh Posté le 17-02-2015 à 14:20:59   

Reply

Marsh Posté le 18-02-2015 à 14:46:09    

Plop. C'est avec quel compilateur ?


---------------
The Magic Words are Squeamish Ossifrage.
Reply

Marsh Posté le 20-02-2015 à 11:32:21    

Bonjour,
J'utilise Visual Studio 2008 Version 9.0  Professional Edition.
Des idées sur comment lui dire de ne pas prendre en compte la date lors de la génération ?  
Car prouver que mes sources sont identiques ne me permet pas de prouver que mes DLL générées sont identiques.
 
Merci et bonne journée.

Reply

Marsh Posté le 20-02-2015 à 11:33:38    

Bonjour,
J'utilise Visual Studio 2008 Version 9.0  Professional Edition.
Des idées sur comment lui dire de ne pas prendre en compte la date lors de la génération ?  
Car prouver que mes sources sont identiques ne me permet pas de prouver que mes DLL générées sont identiques.
 
Merci et bonne journée.

Reply

Marsh Posté le 20-02-2015 à 12:18:17    

haaawaaax a écrit :

Bonjour,
J'utilise Visual Studio 2008 Version 9.0  Professional Edition.
Des idées sur comment lui dire de ne pas prendre en compte la date lors de la génération ?

Tu ne peux pas, il y a un champ TimeDateStamp qui apparait à plusieurs reprises dans la structure du format des exécutables ou dll: http://en.wikibooks.org/wiki/X86_D [...] able_Files et tu n'as pas de contrôle cette génération. Quand je dis à plusieurs reprises, cf cet article: http://waleedassar.blogspot.fr/201 [...] iewer.html  
Vu que tu fais de la cross compilation, il te faudra déterminer quels emplacements sont effectivement écrits par ton compilo.
Tout au plus, à postériori, tu peux aller modifier ces champs avec un programme qui va modifier "en place": http://stackoverflow.com/questions [...] s-any-tool

haaawaaax a écrit :

Car prouver que mes sources sont identiques ne me permet pas de prouver que mes DLL générées sont identiques.
 
Merci et bonne journée.

Et c'est bien normal, car rien ne dit qu'avec les mêmes sources, tu utilises les mêmes options de compilation, voire le même compilo.
A+,


Message édité par gilou le 20-02-2015 à 12:21:42

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 23-02-2015 à 10:51:43    

Merci beaucoup Gilou pour ces informations !
je vais regarder les emplacements écrits par mon compilo.
Bonne journée à toi.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed