Ghi­dra re­ver­se-en­gi­nee­ring-tool

C’t Magazine - - Inhoud - Lutz Er­fert en Da­niel Du­pré

Pro­fes­si­o­ne­le dis­as­sem­bler-pak­ket­ten voor het ana­ly­se­ren van bi­nai­re be­stan­den zo­als IDA Pro kun­nen erg duur zijn. Ghi­dra is een gra­tis al­ter­na­tief dat af­kom­stig is van de NSA.

Als je pro­fes­si­o­neel bi­nai­re be­stan­den ont­ra­felt, bij­voor­beeld om be­vei­li­gings­ga­ten in pro­gram­ma’s te ont­dek­ken of om func­ties te re­pro­du­ce­ren, ge­bruik je daar hoogst­waar­schijn­lijk het dis­as­sem­bler­pak­ket IDA Pro van Hex-Ray voor. Dat pak­ket heeft zich al de­cen­nia lang be­we­zen voor re­ver­se-en­gi­nee­ring-doel­ein­den, maar is he­laas ook erg prij­zig. Er zijn nau­we­lijks se­ri­eu­ze al­ter­na­tie­ven. De Ame­ri­kaan­se vei­lig­heids­dienst Na­ti­o­nal Se­cu­ri­ty Ag­en­cy (NSA) zorg­de voor een klei­ne sen­sa­tie toen het on­ge­veer een jaar ge­le­den het IDA Pro-al­ter­na­tief Ghi­dra uit­bracht en dat als opens­our­ce­soft­wa­re ter be­schik­king stel­de aan het gro­te pu­bliek. On­langs is ver­sie 9.1.2 van de­ze tool ver­sche­nen.

Strikt ge­no­men is Ghi­dra niet al­leen een dis­as­sem­bler voor bi­nai­re be­stan­den, maar een werk­om­ge­ving waar­in je ver­schil­len­de com­po­nen­ten als plug-in kunt doc­ken. De kern vormt de Co­de Brow­ser, waar­van de func­ti­o­na­li­teit in prin­ci­pe het­zelf­de is als van IDA Pro. Hij biedt on­der meer een dis­as­sem­bler, een hex-edi­tor en een de­com­pi­ler. Die laat­ste ge­ne­reert al­ler­eerst as­sem­bler­co­de, waar­van hij au­to­ma­tisch C-co­de van al­le func­ties ge­ne­reert. Dat maakt het ana­ly­se­ren tij­dens re­ver­se-en­gi­nee­ring mak­ke­lij­ker. Bo­ven­dien geeft de Co­de Brow­ser func­ties gra­fisch weer en is het mo­ge­lijk om bi­na­ry’s te pat­chen.

Mo­men­teel on­der­steunt Ghi­dra meer dan 40 ver­schil­len­de cpu-ar­chi­tec­tu­ren tot 64-bit, waar­on­der klas­sie­ke pc-pro­ces­sors, maar ook ARM, MIPS en klas­sie­kers zo­als 6502, Z80 en 68000. De tool kent tal van be­stands­for­ma­ten zo­als PE, ELF en Mach-O. Via de ge­ïn­te­greer­de Py­thon-shell (2.7) kun je al­le func­ties be­na­de­ren en met een script au­to­ma­ti­se­ren. Ghi­dra heeft ook een Ja­va-API waar­mee je de tool naar wens met ei­gen func­ties kunt uit­brei­den. Als je zelf een ei­gen Ghi­dra-ser­ver op­zet, is het zo­waar mo­ge­lijk om in team­ver­band aan pro­jec­ten te wer­ken.

Ghi­dra is gro­ten­deels in Ja­va ge­schre­ven, wat be­te­kent dat je het plat­for­mon­af­han­ke­lijk kunt ge­brui­ken. Om de tool te kun­nen uit­voe­ren, moet een Ja­va-11-JDK op het sys­teem ge­ïn­stal­leerd zijn. Na het uit­pak­ken van het zip­be­stand kun je de de­com­pi­ler een­vou­dig star­ten via een startscrip­t.

Bij het tes­ten liep Ghi­dra vol­le­dig sta­biel zon­der te cras­hen. De tool kon ook pro­bleem­loos over­weg met bi­na­ry’s van meer dan tien me­ga­by­te. De ini­ti­ë­le ana­ly­se van de be­stan­den duur­de wel enigs­zins lang. Het groot­ste min­punt van Ghi­dra is dat het, in te­gen­stel­ling tot IDA-Pro, nog geen ­de­bug­ger be­vat. Daar­mee is de tool in zijn hui­di­ge vorm al­leen in staat om bi­nai­re be­stan­den sta­tisch te ana­ly­se­ren.

De GUI is ver­ge­lijk­baar met an­de­re dis­as­sem­blers. Je kunt de tal­rij­ke ven­sters naar wens gro­ter ma­ken, klei­ner ma­ken, ver­plaat­sen, doc­ken, sta­pe­len en to­nen of ver­ber­gen. De con­text­ge­voe­li­ge help­func­tie is uit­ge­breid en een­vou­dig te be­grij­pen. De do­cu­men­ta­tie om­vat ook de Ja­va-API van Ghi­dra en vier HTML-pre­sen­ta­ties. Die bie­den een in­for­ma­tie­ve en sys­te­ma­ti­sche in­tro­duc­tie tot Ghi­dra.

On­danks de uit­ste­ken­de help­func­tie vergt Ghi­dra een be­hoor­lij­ke in­werk­tijd en voor­al een ge­brui­ker die weet wat hij doet. Ge­zien de me­dia-aan­dacht die het GitHub-pro­ject heeft ge­kre­gen, is het zon­der meer mo­ge­lijk dat Ghi­dra nog ver­der zal wor­den door­ont­wik­keld.

Ghi­dra wordt ge­le­verd met een plug-in voor het mi­gre­ren van IDA-Pro-da­ta­ba­ses. Des­on­danks is het on­waar­schijn­lijk dat pro­fes­si­o­ne­le IDA-Pro-ge­brui­kers zon­der meer zul­len over­stap­pen – voor­al om­dat de be­die­ning toch be­hoor­lijk af­wijkt en een de­bug­ger ont­breekt. Als je een IDA-Pro-li­cen­tie te duur vindt of al­leen een beet­je wilt ex­pe­ri­men­te­ren met re­ver­se-en­gi­nee­ring, dan is Ghi­dra ze­ker een kijk­je waard.

Newspapers in Dutch

Newspapers from Netherlands

© PressReader. All rights reserved.