Kérdés:
Hogyan lehet megszerezni a CPU architektúrát az Idapythonon keresztül?
langlauf.io
2015-11-25 15:54:27 UTC
view on stackexchange narkive permalink

Nem találtam API függvényt a betöltött bináris processzor architektúrájának megszerzéséhez. A idaapi.py fájlban található egy def set_processor_type (* args) függvény, de nincs megfelelője, például a get_processor_type.

Nem szeretnék visszalépni néhány további (python) eszköz futtatásához, mint például a fájl, a readelf vagy a python ELF elemző. Nem tetszik az az ötlet sem, hogy az IDA-összeállítási lista elején megjelenő karakterláncokat elemezzem.

A idc.py , a használatára mód van. idaapi.py vagy idautils.py ehhez.

Sajnálom, hogy feltámasztottam ezt a régi szálat, de olyan okokból, amelyeket nem tudok rájönni, az info.is_64bit () és az info.is_32bit () sem működnek nálam. IDA C ++ SDK v7.1 verziót használok. Még akkor is, ha az adatbázisban a futtatható fájl 64 bites, mégis átmegy a 32 bites ellenőrzésen. Van ötlet, miért történik ez?
Ha új kérdése van, kérjük, tegye fel a [Kérdés feltevése] (https://reverseengineering.stackexchange.com/questions/ask) gombra kattintva. Vegyen fel egy linket erre a kérdésre, ha az segít a kontextus megadásában. - [Felülvizsgálatból] (/ review / low-quality-posts / 15395)
Három válaszokat:
tmr232
2015-11-25 17:48:40 UTC
view on stackexchange narkive permalink

A processzor nevét a idainfo struktúrából szerezheti be:

  import idaapiinfo = idaapi.get_inf_structure (), ha info.is_64bit (): bits = 64elif info.is_32bit (): bits = 32else: bits = 16try: is_be = info.is_be () kivéve: is_be = info.mfendian = "nagy", ha másképp "kis" nyomtatás 'Processzor: {}, {} bit, {} endian'.format (info.procName, bits, endian) # Eredmény: Processzor: mipsr, 32bit, big endian  

Még mindig nem találta meg az endiánt.

SZERKESZTÉS: Az Endian a processzor neve alapján határozható meg. Például a mipsr nagy endián, a mipsrl pedig kevés endian.

EDIT:
Megfelelő endian-ellenőrzést adott hozzá ( mf == Először az MSB). ez a válasz alapján.

SZERKESZTÉS:
Az IDA7 béta 3 (170724) óta az idainfo.mf eltávolításra került, és az idainfo.is_be () fájlt kell használni. kulcstartó

alapján
Steven D
2017-01-05 00:33:19 UTC
view on stackexchange narkive permalink

Nem minden processzornév tartalmaz endian információkat. Általában a következőképpen határozható meg:

  BIG_ENDIAN, ha _idaapi.cvar.inf.mf más LITTLE_ENDIAN  
w s
2015-11-25 16:14:46 UTC
view on stackexchange narkive permalink

Ez határozottan nem pontos válasz, de valószínűleg felhasználhatja a következőt:

  idaapi.ph_get_regnames () 

Visszaadja a regisztrálja a neveket a processzor modulban meghatározottak szerint

A különböző platformok különböző regiszterkészletekkel rendelkeznek, és ha nem találja meg a pontos CPU-val kapcsolatos megoldását, akkor kipróbálhatja. Ez a funkció az IDA 6.8 verzióban található .



Ezt a kérdést és választ automatikusan lefordították angol nyelvről.Az eredeti tartalom elérhető a stackexchange oldalon, amelyet köszönünk az cc by-sa 3.0 licencért, amely alatt terjesztik.
Loading...