Vannak olyan ARM szétszerelők, amelyek strukturált kimenetet nyújtanak?

Van olyan ARM (vagy más, nem x86-os) szétszerelő, amely gépbarát struktúrában bontja le az utasítást annak alkatrészeire? Ideális esetben valami olyan lenne, mint XED vagy distorm3 , amelyek szétszerelődnek egy szerkezetté, majd biztosítják API olyan kérdések lekérdezéséhez, mint a “Ez egy hívás?” – Feltételes ág ez? stb., vagy egy utasítás operandusainak megszerzése.

Találtam armstormot , de jelenleg csak a THUMB-ot támogatja.

Szerkesztés: Tisztázásképpen keresek valamit, ami meghívható egy másik programon belül, és remélhetőleg liberális licenccel rendelkezem (GPL-kompatibilis).

Megjegyzések

  • Amire érdemes, azt gondolom, hogy ez egy olyan dolog, amelyet a közeljövőben valószínűleg hozzáadnak az ERESI-hez, már rendelkeznek az Intel és a Sparc számára, és további ARM támogatást nyújtanak. / div>

    Válasz

    DARM (GitHub) Jurriaan Bremer, az ARMv7 szétszerelője C-ben, és 3 záradékú BSD licenc alatt érhető el.

    Megjegyzés: Jelenleg nem támogatja a Thumb módot.

    A DARM használatának egyszerű példája a következő lehet:

    // 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 ); } 

    Megjegyzések

    • Ez úgy néz ki, mint amire mentem! Feltételezhetem, hogy mindkét DARM-ot is használhatnám és karvihar a teljes támogatáshoz …

    Válasz

    Igen, IDA Pro SDK lehetővé teszi az utasítások összetevőinek elérését a insn_t osztályon keresztül (az ua.hpp fájlban).

    Megjegyzések

    • Ezt ' kiválóan ismeri, de én ' olyasmit keresek, amely meghívható egy másik programon belül, és remélhetőleg liberális licenccel rendelkezik.
    • @ BrendanDolan-Gavitt: talán kijelentette, hogy a kérdésben akkor jó ötlet? >

    Válasz

    Erre a kérdésre naprakészebb válasz az lenne, ha javasolna Capstone könyvtár. ARM szétszerelésre használtam, és meglehetősen megbízható. IMHO, ez a rendelkezésre álló legjobb nyílt forráskódú könyvtár.

    A könyvtár az LLVM TabelGen utasításainak leírásán alapul. Ezért az ISA támogatása teljes, mint az LLVM.

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük