Onko olemassa ARM-purkijoita, jotka tarjoavat strukturoitua ulostuloa?

Onko olemassa ARM (tai muita kuin x86) purkijoita, jotka hajottavat käskyn komponentteihinsa koneystävällisessä rakenteessa? Ihannetapauksessa se olisi jotain XED tai distorm3 , joka hajoaa rakenteeksi ja tarjoaa sitten sovellusliittymä kyselyihin, kuten ”Onko tämä puhelu?” ”Onko tämä ehdollinen haara?” tms., tai käskyn operandien saaminen.

Löysin käsivarren myrskyn , mutta tällä hetkellä se tukee vain THUMBia.

Muokkaa: Selvennykseksi etsin jotain, johon voidaan soittaa toisesta ohjelmasta ja jolla on toivottavasti liberaali lisensointi (GPL-yhteensopiva).

Kommentit

  • Mielestäni se on jotain, joka todennäköisesti lisätään ERESI: hen lähitulevaisuudessa, sillä heillä on jo Intel ja Sparc ja ne lisäävät ARM-tukea.

vastaus

DARM (GitHub), kirjoittanut Jurriaan Bremer, on kirjoittanut ARMv7-purkajan. C: ssä ja on saatavana 3 lausekkeen BSD-lisenssillä.

Huomaa: Se ei tällä hetkellä tue Thumb-tilaa.

Yksinkertainen esimerkki DARM: n käytöstä voi olla seuraava:

// The structure which will hold all the metadata about the disassembled instruction... darm_t d; // disassemble a 32bit opcode... if( darm_armv7_disasm( &d, 0xE12FFF14 ) >= 0 ) { if( d.instr == I_BX ) { // do something with a BX instructiuon... } // print the disassembled full instruction darm_str_t str; if( darm_str( &d, &str) > 0 ) printf( "%s\n", str.instr ); } 

Kommentit

  • Näyttää siltä, mitä aioin! Oletan, että voisin jopa käyttää molempia DARM-toimintoja ja käsivarret saadaksesi täyden tuen …

Vastaa

Kyllä, IDA Pron SDK: n avulla voit käyttää ohjeiden komponentteja insn_t -luokan kautta (ua.hpp).

Kommentit

  • Se, että ' on erinomainen tietää, mutta olen ' Etsin jotain, joka voidaan kutsua toisesta ohjelmasta ja jolla on toivottavasti liberaali lisensointi.
  • @ BrendanDolan-Gavitt: Ehkä sanomalla, että kysymyksessä on sitten hyvä idea?

Vastaus

Ajantasaisempi vastaus tähän kysymykseen olisi ehdottaa Capstone kirjasto. Olen käyttänyt sitä ARM: n purkamiseen ja se on melko luotettava. IMHO, se on paras käytettävissä oleva avoimen lähdekoodin kirjasto.

Kirjasto perustuu LLVM: n TabelGen-ohjeiden kuvauksiin. Siksi sen ISA-tuki on yhtä kattava kuin LLVM.

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *