Echec de l'installation du pilote avec l'erreur 0xE000024B

0

Nous avons un pilote qui est construit et signé en interne. Nous avons récemment eu des problèmes pour l’installer sur Windows 7. À l’origine, il manquait des certificats, ce qui a été résolu en installant les certificats racine et intermédiaire. Les contrôles Signtool sont tous réussis. Mais maintenant, je reçois cette erreur lors de l'installation:

Failed to verify file 'WdfCoInstaller01009.dll' against catalog. Catalog = avp3ioc2.cat, Error = 0xE000024B
!!!  sto:                          Catalog did not contain file hash. File is likely corrupt or a victim of tampering.

J'ai vérifié le fichier catalogue et vérifié l'empreinte numérique par rapport à celle de WdfCoInstaller01009.dll. Tout correspond.

Qu'est-ce qui peut causer ça? Puis-je résoudre ce problème sans signer à nouveau les pilotes (le processus est long)? Toute aide serait très appréciée.

PS EWF est activé sur la partition Windows. Le pilote est installé via DiInstallDriver.

Gayan
la source

Réponses:

0

Le fichier .cat contient une somme de contrôle de tous les fichiers du pilote. Si vous ne signez que le fichier .cat, il ne couvre que le fichier d'origine (comme un fichier .sys). Vous ne pouvez pas en copier et en utiliser un nouveau à moins de le signer également.

Il existe deux contrôles de signature différents. L'une est la vérification au moment de l'installation, qui s'applique uniquement aux packages de pilotes PnP. Cette vérification est effectuée sur tous les systèmes, 32 et 64 bits. Dans ce cas, le .cat est important. Si le fichier .cat est signé WHQL, l'installation est silencieuse. Si .cat est signé par vous-même, vous recevez un avertissement ("faites-vous confiance à cela ...)". Si votre fichier .cat est non signé ou manquant, vous recevez l'avertissement "pilote non signé". L'utilisateur peut contourner n'importe lequel de ces problèmes et permettre l'installation du pilote.

L'autre est la signature de code en mode noyau, qui est effectuée chaque fois que le pilote est chargé, mais exclusivement sur des systèmes 64 bits. Pour cette vérification, vous pouvez signer les fichiers de pilote .sys ou, si vous disposez d'un package de pilotes, vous pouvez signer les fichiers .cat. Pour cette vérification, vous devez utiliser un certificat de signature de code de classe 3 et utiliser le certificat croisé approprié de Microsoft pour accéder à leur domaine de certificat. Vous pouvez vérifier si vous avez correctement effectué cette opération en utilisant "signtool verify / kp / v". Si vous ne voyez pas la "racine de vérification du code Microsoft", vous n'avez probablement pas utilisé de certificat croisé. C'est une grosse douleur, je sais.

Maintenant que tout est éclairci, la réponse à votre question est OUI, vous devrez re-signer le pilote.

Surmente
la source
Merci Overmind. Cela rend les choses beaucoup plus claires. Nous utilisons un pilote en mode noyau et signtool verify confirme qu'il a été croisé. Pour revenir à la question, oui, nous n’avons signé que le fichier .cat et nous n’avons modifié aucun fichier. Les empreintes de pouce correspondent au SHA-1 de inf, sys et coInstaller. Mais sur notre machine de test avec la protection en écriture améliorée activée, j'obtiens l'erreur mentionnée dans la question. Pourquoi dirait-on "le catalogue ne contient pas de hachage de fichier" alors qu'il a clairement trois empreintes digitales pour les trois fichiers? Cela pourrait-il être affecté par les versions de WdfCoInstaller déjà installées?
Gayan
Êtes-vous sûr que le fichier .inf n'a pas été modifié? Si le .sys est toujours l'original, je ne pense pas que la cause puisse être le fichier .inf. Une protection en écriture améliorée peut empêcher l’écriture de quelque chose. Mieux comparer les fichiers déployés avec les originaux en utilisant un gestionnaire de fichiers correct, juste pour s’assurer que rien d’étrange n’est arrivé pendant leur déploiement. Essayez également de copier le fichier .cat lui-même à partir d'un ordinateur fonctionnel. Le .cat réel peut être corrompu.
Overmind