Creëer een LibEWF dll om het Expert Witness Compression Format (*.EWF) te ondersteunen

IsoBuster 3.4 en hogere versies ondersteunen de mogelijkheid om een de LibEWF bibliotheek dynamisch te laden. LibEWF is reeds aanwezig in IsoBuster, maar sedert IsoBuster 3.4 is het ook mogelijk een andere of recentere versie dynamisch te laden (via een dll).

LibEWF is een bibliotheek die het 'Expert Witness Compression Format' ondersteunt. Het laat IsoBuster toe *.EWF bestanden te openen.

In dit artikel laat ik u zien hoe u zelf een LibEWF.dll kan maken, via twee bestaande compilers, MinGW en gratis Borland C++ 5.5 (BCC32)

Echter, het is belangrijk er u op te wijzen dat de Borland C++ 5.5 gecompileerde dll enkel zal werken met IsoBuster 3.6 en hogere versies. De reden daarvoor is dat MinGW en VC++ functienamen exporteren zonder decoratie waar Borland een underscore aan de functienaam toevoegd. IsoBuster versies 3.4 en 3.5 zoeken naar de functies zonder underscores. IsoBuster versies 3.6 en hoger testen met en zonder underscore om te kijken wat beschikbaar is.

Creëer een dynamische LibEWF bibliotheek (LibEWF.dll) met MinGW

+

Download de laatste of geprefereerde LibEWF bibliotheek

Het LibEWF project wordt momenteel op GitHub onderhouden maar de bestanden om de dll te kunnen bouwen dienen ergens anders afgehaald te worden. Zoals vermeld in de LibEWF wiki, download een project van deze Google drive locatie

Tijdens het schrijven van dit artikel heb ik volgende project gebruikt: libewf-20140608.tar.gz

Download en installeer MinGW

Download MinGW en start de installatie:

MinGW Installatie MinGW Installatie Manager

Aan het einde van de installatie wordt de installatie manager gestart. Installeer niets op deze manier. Ik bedoel, je mag, maar ik toon je een makkelijkere manier om er voor te zorgen dat alle nodige paketten zeker geinstalleerd worden.

Installeer de nodige MinGW paketten

Gebruik de commando prompt (CMD, sommigen noemen het DOS box) om naar de \bin\ map te gaan waar MinGW geinstalleerd is. Op mijn systeem is het geinstalleerd in deze map: M:\MinGW, dus ik dien naar map cd M:\MinGW\bin te navigeren:

M:
cd M:\MinGW\bin

Copieer en plak volgende lijn in de "command processor" (CMD, commando prompt) en duw de [Enter] toets:

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

Al de nodige paketten zullen nu installeren

MinGW nodige paketten installatie via de commando prompt
Bouw LibEWF.dll met MinGW

Pak het LibEWF project uit (vb. met WinRar). Voor dit artikel heb ik het libewf-20140608.tar.gz project uitgepakt met een zip programma, naar mijn desktop: (C:/Users/Peter/Desktop/libewf-20140608)

Start de MinGW console (MSYS genaamd) via de "command processor" (CMD), door het volgende uit te voeren:

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

MSYS zal nu starten en ziet er zo uit:

MinGW MSYS

Omdat je wil kunnen copieren en plakken binnen MSYS moet je wellicht nog een setting aanpassen (zeker na een frisse MinGW installatie).

Rechter-muis-klik op de titel balk van MSYS en selecteer 'Properties', vervolgens selecteer het 'Options' tabblad en selecteer de 'QuickEdit mode' checkbox. Als dat gedaan is klik je de 'OK' knop. Je zal nu merken dat een rechter-muis-klik op MSYS in feite plakken is.

MinGW console / MSYS Eigenschappen

Zorg dat de MinGW map aktief is. Om dit te doen, typ (of copieer & plak = rechter-muis-klik) in MSYS:

mount M:\\MinGW /mingw

Ga verder in MSYS en navigeer naar de LibEWF map. Ik heb het project naar mijn desktop uitgepakt, dus ik ga naar:

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

Ga verder in MSYS en copieer volgende lijn:

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

Na een aantal minuten configureren dien je enkel nog alles te maken in MSYS:

make

Voila ! De resulterende dll (libewf-2.dll) zal nu verschijnen in de project \libewf\.libs\ map

Test de dll met een afhankelijkheidsstester om te zien welke dlls er gebruikt worden van de MinGW installatie map. Ik heb dit uiteraard reeds gedaan en u dient zlib1.dll en libgcc_s_dw2-1.dll van de MinGW installatie map, naar de map waar u de libewf dll bewaard te copieren.

Ten laatste, om de dll met IsoBuster te gebruiken, hernoem libewf-2.dll naar libewf.dll en copieer de dll, tesamen met zlib1.dll en libgcc_s_dw2-1.dll, naar de IsoBuster installatie /Plugins/ map. Eens de dll zich daar bevindt zal IsoBuster libewf.dll laden zodra het deze functionaliteit nodig heeft.

MinGW gecompileerde LibEWF.dll voor IsoBuster

Creëer een dynamische LibEWF bibliotheek (LibEWF.dll) met Borland C++ 5.5

+

Download de laatste of geprefereerde LibEWF bibliotheek

Deze stap is precies hetzelfde als wat reeds beschreven werd in dit artikel, maar voor het geval u hier start:

Het LibEWF project wordt momenteel op GitHub onderhouden maar de bestanden om de dll te kunnen bouwen dienen ergens anders afgehaald te worden. Zoals vermeld in de LibEWF wiki, download een project van deze Google drive locatie

Tijdens het schrijven van dit artikel heb ik volgende project gebruikt: libewf-20140608.tar.gz

Download en installeer Borland C++ 5.5

Download Borland C++ 5.5 en installeer het in de standaard gesuggereerde locatie: C:\Borland\BCC55 omdat de vervolgens gecreëerde code en scripts van deze locatie uitgaan.

Download andere nodige bestanden en software

Download de zlib bibliotheek
Download de master.zip voor dit project, open het bestand en haal er generate_bcc32.sh uit (niets anders)
Download libewf-20140608-bcc.patch van deze Google drive locatie, echter indien u een andere versie LibEWF wil maken dient u naar een patch bestand voor die versie te zoeken. Het is ook mogelijk dat toekomstige LibEWF bibliotheken het patch bestand niet meer nodig gaan hebben, we zullen zien.

Omdat het *.sh script uitgevoerd dient te worden en omdat het *.patch bestand toegepast moet worden, hebben we Unix programma's nodig. Indien u niets heeft geinstalleerd dat met deze bestanden omkan (e.g. CygWin), suggereer ik om MinGW te gebruiken. De installatie en gebruik van MinGW werden reeds uitvoerig beschreven, bovenaan in dit artikel. Volgende dient dan zeker gedaan te worden:

Indien MinGW nog niet geinstalleerd is, doe exact wat er beschreven werd in het "Download en installeer MinGW" gedeelte van dit artikel.

Gebruik de commando prompt (CMD, sommigen noemen het DOS box) om naar de \bin\ map te gaan waar MinGW geinstalleerd is. Op mijn systeem is het geinstalleerd in deze map: M:\MinGW, dus ik dien naar map M:\MinGW\bin te navigeren:

M:
cd M:\MinGW\bin

Copieer en plak volgende lijn in de 'command processor' (CMD, command prompt) en druk de [Enter] toets:

mingw-get install msys-patch

Patch is nodig om het *.patch bestand te kunnen toepassen

Bouw LibEWF.dll met BCC32

Creëer een nieuwe map (Ik maakte er een op mijn desktop: /bcc_compile/) en pak de twee bibliotheken zlib-1.2.8.tar.gz en libewf-20140608.tar.gz uit in de nieuwe map. Indien u andere versies gebruikt van de bibliotheken zullen de namen ook anders zijn.

Hernoem de gemaakte map zlib-1.2.8 naar zlib

Copieer generate_bcc32.sh en libewf-bcc.patch in de libewf-20140608 map.

Borland BCC 5.5 bestanden setup

Start de MinGW console (MSYS genaamd) via de 'command processor' (CMD), door het volgende uit te voeren:

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

Voor meer informatie over MinGW en hoe het kan ingesteld worden om te kunnen copieren en plakken, lees het relevante deel in dit artikel.

Ga verder in MSYS and navigeer naar de LibEWF map. Ik heb het project uitgepakt in /bcc_compile/ op mijn desktop dus ik typ:

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

Ga verder in MSYS en copieer / plak volgende lijn:

patch -p1 < libewf-20140608-bcc.patch

En vervolgens:

sh generate_bcc32.sh

Volgende stap is "make", wat de dll maakt, maar er zijn een aantal zaken om rekening mee te houden. Make.bat werd in de project map (\bcc_compile\libewf-20140608\) gecreëerd. Open het met een tekst editor en je zal hard gecodeerde paden naar de BCC map zien (C:\Borland\BCC55\). Dat is de reden waarom ik zei om in de standaard gesuggereerde map te installeren. De gecreëerde *.bcc bestande refereren ook naar de BCC installatie map, voor de 'includes'. Als u weet wat u doet kan u de paden in de .bat en *.bcc bestanden aanpassen. En/of, in geval van het .bat bestand, maak de paden relatief en val terug op de PATH variabele. PATH echter is een ander mogelijk probleem om rekening mee te houden. Indien u een andere versie Borland/CodeGear/Embarcadero compiler geinstalleerd heeft zal de PATH variabele mogelijk naar andere compilatie bestanden wijzen die mogelijk eerst uitgevoerd zullen worden, voor dat de BCC 5.5 uitvoerbare bestanden worden gebruikt. Dus, u kan wellicht de tweede lijn in het .bat bestand aanpassen om enkel de BCC 5.5 compilatie bestanden te gebruiken: set PATH=C:\Borland\BCC55\bin.

Wanneer u klaar bent om verder te gaan, navigeer naar de project map in de 'command processor' (CMD, commando prompt)

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

Vervolgens, nog steeds in CMD, voer make.bat uit

make.bat

Alles zal nu compileren en de resulterende libewf.dll zal in de \libewf-20140608\libewf\ map verschijnen (c:\users\peter\desktop\bcc_compile\libewf-20140608\libewf\ op mijn system)

Borland BCC 5.5 make.bat

Test de dll met een afhankelijkheidsstester en u zal zien dat de libewf.dll de zlib.dll nodig heeft, welke u kan vinden in de eerder aangemaakte \zlib\ map (c:\users\peter\desktop\bcc_compile\zlib\ op mijn system)

Ten laatste, om de dll met IsoBuster te gebruiken, copieer de libewf.dll, tesamen met zlib.dll, naar de IsoBuster installatie /Plugins/ map. Eens de dll zich daar bevindt zal IsoBuster libewf.dll laden zodra het deze functionaliteit nodig heeft.

BCC32 gecompileerde LibEWF.dll voor IsoBuster

Persoonlijk zou ik waarschijnlijk voor de Borland gecompileerde dll kiezen, omdat deze dll kleiner is, minder andere dlls nodig heeft, en gratis is om te gebruiken, terwijl de MinGW compiler mogelijke restricties heeft voor uw gebruik. Echter, zoals reeds uitgelegd, de Borland gecompileerde dll exporteert de functies met een underscore, dus u heeft op z'n minst IsoBuster 3.6 nodig. De Borland (BCC) gemaakte dll zal niet werken met IsoBuster 3.4 en 3.5 versies.

U kan de dlls die ik gemaakt heb via bovenaan beschreven methodes hier downloaden, ter informatie:

Download libewf.dll versie 20140608 gemaakt met MinGW
Download libewf.dll versie 20140608 gemaakt met BCC32