Küsimus:
Kuidas teatud IDA funktsioone antud loendist automaatselt ümber nimetada?
tigrou
2016-01-28 18:44:24 UTC
view on stackexchange narkive permalink

Mul on tekstifail, mis sisaldab funktsiooni nime ja aadressipaari loendit, mis on üles ehitatud järgmiselt:

  194C: 841B LoadMessage194C: 8429 ShowDialog ...  

Kas on mingit viisi (nt: skript, automatiseerimine, ...), kuidas IDA demonteerimise kõik seosefunktsioonid automaatselt tekstifaili järgi ümber nimetada?

Mida see pöördumisvorm tähendab?
See on vana DOS 16-bitise programmi segmenteeritud aadress. Vaadake siit: https://et.wikipedia.org/wiki/X86_memory_segmentation Võime lugeda, et see sisaldab 32-bitiseid tavalisi aadresse, kui see seda hõlbustab.
üks vastus:
w s
2016-01-28 19:33:50 UTC
view on stackexchange narkive permalink

Sel viisil, et automatiseerida asju, mida nimetatakse IDAPythoniks, on selle dokumentatsioon siin:

1 - salvestage see skript kuhugi, pidage meeles, kuhu.

  #Ei ole kasutatud, pole silutud, pole käivitatud isegi üks kord # Kasutage omal vastutusel, hoiduge vigadestimportige idaapiimport idautilsimport idcdef do_rename (l): split = l.split () straddr = split [0] strname = split [1] .preplace ( "\ r", ""). asendage ("\ n", "") kui straddr.find (":")! = -1: #oleva vormi segment: nihe # eemaldav segment, nihe peaks olema kordumatu, kui see on pole nii, me peaksime seda käsitlema erinevalt straddr = straddr.split (":") [1] eaaddr = int (straddr, 16) idc.MakeCode (eaaddr) idc.MakeFunction (eaaddr) idc.MakeNameEx (int (straddr) , 16), strname, idc.SN_NOWARN) kui __nimi__ == "__main__": f = avatud ("teie_faili_nimi", "r") l-le f-is: do_rename (l) f.close ()  

IDA-s avage fail File -> Script, valige skript ja käivitage see. Pange tähele, et peaksite sisestama oma faili nime ja kontrollima, kas aadress on konv. eksis hästi. Loodan, et see annab mingisuguse suuna.

Hoia mind kursis :)
See töötas nagu võlu. Ainus muudatus, mille ma tegin, oli lineaarse aadressi arvutamine: "eaaddr = int (aadress [0], 16) * 16 + int (aadress [1], 16) + nihe". Nihe arvutatakse funktsiooni C järgi, mille IDA suutis leida ja mille jaoks tean aadressi: `offset = LocByName (" _ system ") - 0x189B`


See küsimus ja vastus tõlgiti automaatselt inglise keelest.Algne sisu on saadaval stackexchange-is, mida täname cc by-sa 3.0-litsentsi eest, mille all seda levitatakse.
Loading...