Spørsmål:
Lim inn hex-byte i IDA Pro Hex View
Ditmar Wendt
2013-10-24 14:16:00 UTC
view on stackexchange narkive permalink

Er det mulig å lime inn en serie med byte i hex-visning av IDA? Si at jeg har en stor buffer jeg må fylle med en bestemt verdi, og jeg har den i form som de fleste hex-redigerere sender ut ... 0A AB EF FF 00 01 ... er det noen rask måte å skrive denne verdien til et segment av hex-visningen? Eller gjør dette gjennom IDAPython?

Rediger:

Løst ved hjelp av PatchByte som foreslått nedenfor:

  def PatchArr (dest , str): for i, c i enumerate (str): idc.PatchByte (dest + i, ord (c)); # bruk: patchArr (startadresse, streng med byte å skrive) patchArr (0xCAFEBABE, "\ x01 \ x02 \ x03 ")  

Merk at jeg ikke er fan av endringer i ustabilt feilsøkingsminne som får IDA til å klage på at IDB blir lappet etter feilsøking ...

Tre svar:
devttys0
2013-10-24 18:14:57 UTC
view on stackexchange narkive permalink

Mens du er i IDAs Hex View, kan du gå til Edit-> Patch Program-> Change Byte , men jeg tror dette lar deg bare patch 16 byte om gangen. Hvis du trenger å lappe flere byte enn det, kan du bruke IDAPythons idc.PatchByte / idc.PatchWord / idc.PatchDword for å endre byte i IDA-database.

REDIGER:

Bare et kort notat. Hvis du vil at lappene dine skal brukes på den originale filen du la inn i IDA, må du gå til Rediger > Patch Program-> Bruk oppdateringer på inndatafilen etter at du har patchet byte i IDB.

Takk! Fikk en pythonløsning som fungerer takket være dette. Selvfølgelig er det altfor tregt å bytte enkeltbyte for hånd, var grunnen til at jeg stilte dette spørsmålet.
alexanderh
2013-10-25 20:48:09 UTC
view on stackexchange narkive permalink

Nedenfor er to funksjoner fra fwrapper som gir eksempler på hvordan du lapper IDB og importerer data fra en fil. Jeg vil anbefale å sjekke ut koden. Jeg bruker den hele tiden til prøver som dekoder / dekrypterer data, eller når jeg må dumpe en minneblokk manuelt og lappe en IDB.

  def patch (selv, temp = Ingen): ' '' patch idb med data i fwrapper.buffer '' 'hvis temp! = Ingen: self.buffer = temp for index, byte i enumerate (self.buffer): PatchByte (self.start + index, ord (byte)) def importb (selv): '' 'importer fil for å lagre i buffer' '' filnavn = AskFile (0, "*. *", 'Importer fil') prøv: self.buffer = åpen (filnavn, 'rb'). les () unntatt: sys.stdout.write ('FEIL: Kan ikke få tilgang til fil')  
Stolas
2013-10-25 01:14:29 UTC
view on stackexchange narkive permalink

Selv om dette er besvart, er IDA ment som en feilsøking. Ikke som et patchverktøy, dette har mye å gjøre med hvordan IDA-butikker fungerer. IDA oppretter en databasefil som lar deg fjerne exe etter først å ha lastet den inn. Dette kan være veldig nyttig når du jobber med immateriell eiendom / skadelig programvare. Jeg vil anbefale å bruke ImmDBG for dine oppdateringsbehov.

Er det en skrivefeil? Du mener å si at IDA ikke er ment som en feilsøking, ikke sant? Selvfølgelig ikke, det ER ment å grensesnitt med forskjellige debuggere. IDA som ikke kan forstå et minnesegment er uviktig / lapp bør ikke lagres i IDB er en legitim feil. ImmDBG er en helt egen brukstilfelle, og plattformene den støtter er svært begrenset i sammenligning.
Jeg beklager, det er mer en hjernefyt enn noe annet. Det viktigste jeg mente å si er at IDA er et verktøy du trenger for å analysere programvare og ikke knekke den.


Denne spørsmålet ble automatisk oversatt fra engelsk.Det opprinnelige innholdet er tilgjengelig på stackexchange, som vi takker for cc by-sa 3.0-lisensen den distribueres under.
Loading...