Créer une bibliothèque dynamique de LibEWF pour accéder à l'Expert Witness Compression Format *.EWF

IsoBuster 3.4 et versions suivantes donnent la possibilité de charger la bibliothèque LibEWF de manière dynamique. LibEWF vous est déjà fourni, mais depuis IsoBuster 3.4 vous pouvez charger une version plus récente de la bibliothèque open source si vous le souhaitez.

LibEWF est une bibliothèque pour accéder à l'Expert Witness Compression Format. Il permet à IsoBuster d'ouvrir les fichiers *.EWF.

Nous vous montrerons dans cet article comment compiler votre version de LibEWF.dll, en utilisant 2 compilateurs existants, MinGW et le compilateur gratuit Borland C++ 5.5 (BCC32)

Cependant, il est important de savoir que la DLL compilée avec Borland C++ 5.5 ne fonctionnera qu'avec les versions 3.6 et suivantes d'IsoBuster. Cela est dû au fait que MinGW et VC++ exportent les noms des fonctions 'telles quelles' alors que Borland ajoute un underscore au nom. IsoBuster versions 3.4 et 3.5 cherchent les fonctions sans underscore. IsoBuster versions 3.6 et suivantes testent avec et sans l'underscore et utiliseront ce qu'ils ont trouvé.

Créer une bibliothèque dynamique LibEWF (LibEWF.dll) avec MinGW

+

Télécharger la dernière bibliothèque (ou celle que vous préférez) LibEWF

Le projet LibEWF est actuellement hébergé sur GitHub mais les fichiers requis pour la compiler ne doivent pas être téléchargés depuis cet endroit. A la place, consultez le wiki LibEWF, téléchargez un projet depuis cet emplacement sur Google drive

Lors de la rédaction de cet article, j'ai téléchargé et utilisé libewf-20140608.tar.gz

Télécharger et installer MinGW

Téléchargez MinGW et démarrez l'installation :

Installation de MinGW Gestionnaire d'installation de MinGW

A la fin de l'installation, le gestionnaire d'installation est démarré. N'installez rien de cette façon. Vous pouvez, mais je vais vous indiquer une méthode plus simple pour être sûr que tous les paquets requis sont installés.

Installer les paquets requis de MinGW

En ligne de commande (CMD, certains l'appellent Commandes DOS ou DOS box), allez dans le dossier \bin\ où vous avez installé MinGW. Je l'ai installé dans M:\MinGW, donc je dois taper cd M:\MinGW\bin

M:
cd M:\MinGW\bin

Copiez et collez la ligne suivante dans l'invite de commande (CMD) et appuyez sur [Entrée] :

mingw-get install binutils mingw-runtime w32api libgmp libmpc libiconv pthreads gettext libz gcc-core mingw32-make msys gcc-c++

Tous les paquets requis vont s'installer

Installation des paquets de MinGW via la ligne de commande
Compiler LibEWF.dll avec MinGW

Décompressez le projet LibEWF. Pour cet article, j'ai décompressé libewf-20140608.tar.gz avec un programme de décompression vers mon Bureau (C:/Users/Peter/Desktop/libewf-20140608)

Démarrez la console de MinGW (appelée MSYS) via la ligne de commande (CMD), en tapant :

M:\MinGW\msys\1.0\msys.bat

MSYS va démarrer et ressembler à ceci :

MinGW MSYS

Etant donné que vous allez probablement faire des copier-coller de lignes dans MSYS, vous devriez changer ses propriétés (certainement après une nouvelle installation).

Faites un clic droit sur la barre de titre de la fenêtre MSYS et sélectionnez 'Propriétés', sélectionnez l'onglet 'Options' et cochez la case 'mode QuickEdit', puis cliquez sur 'OK'. Vous remarquerez que faire un clic droit dans MSYS revient à faire un 'coller'

Console MinGW / Propriétés de MSYS

Vérifiez que le dossier de MinGW soit monté. Pour ce faire, tapez (ou copiez & collez = clic droit) dans MSYS :

mount M:\\MinGW /mingw

Continuez dans MSYS et allez dans le dossier LibEWF. J'ai décompressé le projet sur mon Bureau, donc je copie-colle ceci :

cd C:/Users/Peter/Desktop/libewf-20140608

Poursuivez avec MSYS et copiez / collez la ligne suivante :

CPPFLAGS=-DWINVER=0x0501 ./configure --prefix=/mingw

Après quelques minutes de compilation, vous devrez exécuter make dans MSYS :

make

Fini ! La DLL compilée (libewf-2.dll) apparaîtra dans le dossier \libewf\.libs\ du projet

Vérifiez la DLL avec un vérificateur de dépendance pour voir quelles DLL de l'installation de MinGW il utilise. J'ai bien sûr déjà vérifié ceci et vous devrez copier zlib1.dll et libgcc_s_dw2-1.dll depuis le dossier d'installation de MinGW, vers le dossier où vous utiliserez la DLL libewf

Enfin, pour utiliser la DLL avec IsoBuster, renommez libewf-2.dll en libewf.dll et copiez-la, avec with zlib1.dll et libgcc_s_dw2-1.dll, vers le dossier /Plugins/ du dossier où vous avez installé IsoBuster. Une fois copiés dans ce dossier, IsoBuster chargera libewf.dll au moment où il en aura besoin.

LibEWF.dll compilée avec MinGW pour IsoBuster

Créer une bibliothèque dynamique de LibEWF (LibEWF.dll) avec Borland C++ 5.5

+

Télécharger la dernière bibliothèque (ou celle que vous préférez) de LibEWF

Cette étape est exactement la même que celle décrite précédemment, mais si vous avez commencé à lire depuis cet endroit, voici ce qu'il faut faire :

Le projet LibEWF est actuellement hébergé sur GitHub mais les fichiers requis pour la compiler ne doivent pas être téléchargés depuis cet endroit. A la place, consultez le wiki LibEWF, téléchargez un projet depuis cet emplacement sur Google drive

Lors de la rédaction de cet article, j'ai téléchargé et utilisé libewf-20140608.tar.gz

Télécharger et installer Borland C++ 5.5

Téléchargez Borland C++ 5.5 et installez-le dans le dossier par défaut C:\Borland\BCC55 car les scripts à suivre se basent sur cet emplacement.

Télécharger d'autres outils et fichiers requis

Téléchargez la bibliothèque zlib
Téléchargez ce fichier projet master.zip, ouvrez-le et extrayez-y generate_bcc32.sh (rien d'autre)
Téléchargez libewf-20140608-bcc.patch depuis cet emplacement de Google drive, mais si vous utilisez une version différente du projet vous devrez chercher un fichier patch pour ce projet-là. Il est également possible que de futurs paquets de LibEWF n'auront pas besoin de ce fichier de patch, nous verrons.

Comme le script *.sh a besoin d'être exécuté mais que le fichier *.patch a besoin d'être appliqué en premier, des outils Unix sont nécessaires. Si vous n'avez rien d'installé qui puisse s'en occuper (par ex. CygWin), je suggère d'utiliser MinGW. L'installation et l'utilisation de MinGW sont expliquées dans la première partie de cet article. Laissez-moi vous guider dans ce que vous devez faire :

Si MinGW n'est pas encore installé, faite exactement ce qui était décrit dans la partie "Télécharger et installer MinGW" de cet article.

A l'invite de commandes (CMD, certains l'appellent Commandes DOS ou DOS box), allez dans le dossier \bin\ où vous avez installé MinGW. Je l'ai installé dans M:\MinGW, donc je dois taper cd M:\MinGW\bin

M:
cd M:\MinGW\bin

Copiez et collez la ligne suivante à l'invite de commandes (CMD) et appuyez sur [Entrée]:

mingw-get install msys-patch

Patch est nécessaire pour appliquer le fichier *.patch file que vous avez téléchargé précédemment

Compiler LibEWF.dll avec BCC32

Créez un nouveau dossier (j'ai créé /bcc_compile/ sur mon Bureau) et décompressez les deux bibliothèques zlib-1.2.8.tar.gz et libewf-20140608.tar.gz dans ce dossier. Si vous utilisez différentes versions de ces bibliothèques, les noms seront différents.

Renommez le sous-dossier zlib-1.2.8 en zlib

Copiez generate_bcc32.sh et libewf-bcc.patch dans le sous-dossier libewf-20140608.

Organisation des fichiers pour Borland BCC 5.5

Démarrez l'application console MinGW (appelée MSYS) via l'invite de commandes (CMD), en tapant :

M:\MinGW\msys\1.0\msys.bat

Pour plus d'informations sur MinGW et la manière de le paramétrer pour la prise en charge du copier / coller, référez-vous à une partie précédente de cet article.

Continuez dans MSYS et allez dans le dossier LibEWF. J'ai décompressé le projet vers /bcc_compile/ sur mon Bureau, donc je copie-colle :

cd C:/Users/Peter/Desktop/bcc_compile/libewf-20140608

Poursuivez avec MSYS et copiez / collez la ligne suivante :

patch -p1 < libewf-20140608-bcc.patch

Et ensuite :

sh generate_bcc32.sh

L'étape suivante est de compiler (make) la DLL, mais avant de le faire, il y a des choses à savoir. Make.bat a été généré et placé dans le dossier du projet (\bcc_compile\libewf-20140608\). Ouvrez-le avec un éditeur de texte, vous verrez que les chemins vers le dossier d'installation de BCC32 (C:\Borland\BCC55\) sont entrés en dur. C'est pourquoi j'avais recommandé l'installation de Borland dans ce dossier. Les fichiers *.bcc générés pointent aussi vers le dossier d'installation de BCC pour les includes (références). Si vous savez ce que vous faites, vous pouvez modifier ces chemins pour un emplacement différent, à la fois dans le fichier .bat et le *.bcc . Ou, dans le cas du fichier .bat, enregistrez un chemin relatif et appuyez-vous sur la variable dans PATH. PATH est cependant un autre problème à prendre en considération. Si vous avez un autre compilateur Borland/CodeGear/Embarcadero installé, la variable PATH peut très bien pointer vers des binaires différents qui seront exécutés avant que les binaires de BCC 5.5 soient considérés. Vous devriez donc éditer la seconde ligne du fichier .bat pour n'utiliser que les binaires de BCC 5.5 : set PATH=C:\Borland\BCC55\bin.

Lorsque vous serez prêt, allez dans le dossier du projet dans l'invite de commandes (CMD)

cd c:\users\peter\desktop\bcc_compile\libewf-20140608

Et ensuite, toujours dans CMD, exécutez le fichier make.bat

make.bat

Tout va se compiler et le fichier libewf.dll résultant apparaîtra dans \libewf-20140608\libewf\ (c:\users\peter\desktop\bcc_compile\libewf-20140608\libewf\ sur mon système)

Borland BCC 5.5

Avec un vérificateur de dépendance, vous pouvez voir que la DLL nécessite zlib.dll, que vous pouvez trouver dans le dossier \zlib\ (c:\users\peter\desktop\bcc_compile\zlib\ sur mon système)

Pour utiliser la DLL avec IsoBuster, copiez-la avec zlib.dll, vers le dossier \Plugins\ du dossier d'installation d'IsoBuster. Une fois copiés dans ce dossier, IsoBuster chargera libewf.dll au moment où il en aura besoin.

BCC32 compiled LibEWF.dll for IsoBuster

Personnellement, je préfère compiler la DLL avec Borland, car elle est plus petite, requiert moins de DLL tierces et que son utilisation est gratuite, alors que le compilateur MinGW impose davantage de restrictions. Cependant, comme expliqué, la DLL compilée par Borland exporte les fonctions avec un underscore, donc vous aurez besoin d'IsoBuster 3.6 minimum. La DLL créée avec Borland (BCC) ne fonctionnera donc pas avec les versions antérieures à IsoBuster 3.6

Vous pouvez télécharger les DLL créées en utilisant les méthodes décrites dans cet article ici :

Télécharger libewf-20140608 via MinGW
Télécharger libewf-20140608 via BCC32