Problème de CRC après génération DLL via matlab [CRC - Matlab] - Divers - Programmation
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.
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 ?
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.
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.
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
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.
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 !
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 ! |
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
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.
Marsh Posté le 18-02-2015 à 14:46:09
Plop. C'est avec quel compilateur ?
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.
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.
Marsh Posté le 20-02-2015 à 12:18:17
haaawaaax a écrit : Bonjour, |
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. |
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+,
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.
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 !