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:
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:
Copieer en plak volgende lijn in de "command processor" (CMD, commando prompt) en duw de [Enter] toets:
Al de nodige paketten zullen nu installeren
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:
MSYS zal nu starten en ziet er zo uit:
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.
Zorg dat de MinGW map aktief is. Om dit te doen, typ (of copieer & plak = rechter-muis-klik) in MSYS:
Ga verder in MSYS en navigeer naar de LibEWF map. Ik heb het project naar mijn desktop uitgepakt, dus ik ga naar:
Ga verder in MSYS en copieer volgende lijn:
Na een aantal minuten configureren dien je enkel nog alles te maken in MSYS:
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.
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:
Copieer en plak volgende lijn in de 'command processor' (CMD, command prompt) en druk de [Enter] toets:
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.
Start de MinGW console (MSYS genaamd) via de 'command processor' (CMD), door het volgende uit te voeren:
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:
Ga verder in MSYS en copieer / plak volgende lijn:
En vervolgens:
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)
Vervolgens, nog steeds in CMD, voer make.bat uit
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)
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.
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