Jeg har prøvd hele dagen for å få dette til å fungere. Vet noen hvordan å få grep eller noe lignende, for å hente utskudd av heksestrenge i en fil, jeg har en haug med hexdumps som jeg må sjekke om strenger og deretter kjøre igjen og se om verdien har endret seg. Jeg har prøvd hexdump og dd, men problemet er fordi det er en strøm, jeg mister offset for filene. Noen må ha hatt dette problemet og en løsning. Hva kan jeg gjøre For å klargjøre, har jeg en serie dumpede minneområder fra GDB. Jeg prøver å begrense et tall ved å søke ut alle stedene nummeret er lagret, og deretter gjøre det igjen og sjekke om den nye verdien er lagret på samme minnested. Jeg kan ikke få grep å gjøre noe fordi jeg ser etter hex-verdier, slik at alle tider jeg har prøvd (som en bazillion, omtrent), vil det ikke gi meg riktig utgang. Hex-dumpene er bare ferdige binære filer, paternene er innenfor float-verdier på larges så 8 byte. Mønstrene pakker ikke linjene jeg er klar over. Jeg er klar over hva det endrer seg til, og jeg kan gjøre samme prosess og sammenligne lister for å se hvilken kamp. Hex-dumpene slutter normalt (totalt) 100 megs-ish. Perl KAN være et alternativ, men på dette punktet vil jeg anta min mangel på kunnskap med bash og dens verktøy er den viktigste synderen. Det er litt vanskelig å forklare produksjonen jeg får siden jeg egentlig ikke får noen utdata. Jeg forventer (og forventer) noe i tråd med: Hva er den ganske bra standardutgangen jeg vanligvis vil få med grep - URbFo ltsearchtermgt . gt ltoutputgt Problemet er at når jeg prøver å søke etter hex-verdier, får jeg problemet med å bare ikke søke etter hex-verdiene, så hvis jeg søker etter 00, må jeg bli som en million treff, fordi det er alltid blankspace, men i stedet det søker etter 00 som tekst, så i hex, 3030. Eventuelle ideer jeg kan tvinge det gjennom hexdump eller noe av koblingen, men fordi det er en strøm det vil ikke gi meg offsets og filnavn som det fant en kamp i. Bruke grep - b-alternativet virker heller ikke, jeg prøvde alle flaggene som virket nyttig for min situasjon, og ingenting fungerte. Ved hjelp av xxd - u usrbinxxd som eksempel får jeg en utgang som ville være nyttig, men jeg kan ikke bruke det for å søke. Fint utgang, akkurat det jeg ser, men det virker bare ikke for meg i denne situasjonen. Dette er noen av tingene jeg har prøvd siden jeg postet dette: Hvilket format tar hex-dumpene? Gjør mønstrene du leter etter vikle rundt linjer Er det en forskyvning på begynnelsen av hver linje Hvor lenge er mønsteret du leter etter Når mønsteret endres, vet du hva det endrer til Hvor stor er hex-dumpene. Overvägde du å bruke Perl ndash Jonathan Leffler 12. juni 11 på 4:14 Det jeg faktisk brukte til å bruke for xxd var: xxd - ps - u-c 100000000000000000000 input. file gt output. file for å kvitte seg med overflødig informasjon og gi meg rå hex. Dette ga meg en måte å bruke grep til å søke i heksen selv, men når det returnerer en forskyvning, husk å dividere forskyvningen med 2 for å få den faktiske forskyvningen. Takk så mye for din hjelp Oh, og jeg kan ikke stemme enda. ndash user650649 Jun 14 11 at 1:25 xxd har - g alternativet som vil hjelpe deg med å forhindre samsvar mellom to byte. Dvs. bruk xxd - g1 i stedet for xxd. ndash Ruslan 27 januar kl 14:09 Dette ser ut til å fungere for meg: Output (cygwin binær): Så du kan grep dette igjen for å trekke ut kompensasjoner. Men ikke glem å bruke binær modus igjen. grep har en - P-bryter som tillater å bruke perl regexp syntaks, perl regex tillater å se på byte, ved hjelp av x. syntaks. så du kan se etter en gitt heksestreng i en fil med: grep-aP xdf, men utgangen vil ikke være veldig nyttig, faktisk bedre gjøre en regexp på hexdump-utgangen Grep - P kan være nyttig, men bare å finne filer som matrching en gitt binær mønster. Eller å gjøre en binær spørring av et mønster som faktisk skjer i tekst (se for eksempel Hvordan regexp CJK ideographs (i utf-8)) Vim er ikke laget for å redigere binære filer, men det er mulig at det tas hensyn til å unngå automatisk formatering som kan ødelegge en binær fil. Vim distribueres med xxd-verktøyet som gir en praktisk metode til å dumpe en binær fil til hex. Du kan redigere de utskrivbare hex-tegnene, og bruk xxd for å reversere prosessen for å skrive en oppdatert binærfil. Det er mulig å automatisere hex-konverteringen, men å vite hvordan det fungerer vil gi deg et mer allsidig verktøy. Dumping en binær fil som hex Edit Du kan lese en hex-dump fra en binær fil til gjeldende buffer. Følgende kommando legger inn en hex-dump av filen sample. bin etter linjen som holder markøren: Linjer som ligner på følgende, vil bli satt inn i bufferen: Den venstre kolonnen viser offset for den første byten på hver linje. Midtkolonnen viser byte i heks, i grupper på to (i eksemplet er den første byte heks 00, etterfulgt av heks 01, 02, 03, 30, 31 etc). Den høyre kolonnen viser den utskrivbare teksten, hvis noen (den siste byten på første linjen er heks 47 som er ASCII-koden for G). Du kan lese xxd-bruksteksten i den nåværende Vim-bufferen med: Generere C-kilde for en binær fil Redigere I et C-program kan det hende du vil ha en matrise som inneholder data som er lik innholdet i en binærfil. Følgende kommando leser en dump av fil sample. bin. formatert som C-kilde: Bruke den samme binære filen som tidligere, ville resultatet være: Redigering av binære filer Rediger Bruk - b-alternativet for å angi binær modus før du redigerer en binær fil, for eksempel: Hvis du vil, kan du vise ikke-skrivbare tegn i hex , og du kan pakke linjer: I normal modus, skriv g og Ctrl-G for å vise byte nummeret ved markøren, eller skriv et byte nummer og deretter gå for å hoppe til den byte (for eksempel 123go vil hoppe til byte nummer 123) . Den første byte i filen har byte nummer 1. Følgende kommando erstatter bufferen med en hex-dump: Du kan redigere hex-bytes, og konverter deretter filen tilbake til binær med kommandoen: Kommandoen ovenfor reverserer hex-dumpen ved å konvertere hex-byte til binær (den skrivbare teksten i høyre kolonne blir ignorert). Se også Rediger Referanser Rediger Kommentarer Rediger annonse blokker forstyrrelser oppdaget Wikia er et gratis-å-bruke nettsted som tjener penger fra annonsering. Vi har en endret opplevelse for seere som bruker annonseblokkere. Wikia er ikke tilgjengelig hvis du har gjort ytterligere endringer. Fjern den egendefinerte annonseblokkerregelen (e), og siden lastes som forventet. Forbedret hex-redigering opprettet 160200732183 kompleksitet 160basic32183 forfatter 160Fritzophrenic32183 versjon 1607.0 Mange avanserte tekstredigerere tillater redigering av filer i en heksemodus, spesielt nyttig for redigering av binære filer. Vim gir denne muligheten gjennom det eksterne programmet xxd, som er inkludert som standard i standard distribusjoner av Vim. Dessverre er det ikke-intuitivt og feilaktig å bruke et eksternt program for denne oppgaven. En bruker må huske hvordan man kjører filteret (: xxd for å konvertere til hex, 160: xxd - r for å konvertere tilbake), må huske å konvertere tilbake fra hex før lagring, kan ikke konvertere skrivebeskyttede filer uten advarsler og mer. Dette tipset forbedrer bruken av xxd for å redigere hex-filer ved å legge til en kartlegging og kommando for enkelt å bytte frem og tilbake mellom hex og ikke-hex modus, og automatisere oppgaver som å konvertere tilbake fra hex-filtrert skjema før du lagrer en fil. Angi enkelt og gå ut av hex-modus Rediger Hvis du legger inn følgende kode i vimrc, vil du få en: Hexmode ex-kommando for å slå xxd hex-modus på eller av. Det vil holde rede på hvilken modus du er i, så du trenger ikke. Denne ex kommandoen er enkel å kartlegge slik: Merk at ltC-Hgt allerede er en definert kommando, så overstyr den med forsiktighet (eller bruk en annen venstre side til kartleggingen). Se 58help160CTRL-H. 58help160iCTRL-H. 58help160vCTRL-H. Du må også kanskje bruke gvim for å skille mellom ltC-Hgt og ltBSgt. Behandle hex-modus automatisk Rediger Det ville være fint hvis brukeren ikke behøvde å huske å konvertere tilbake fra hex før du lagret endringer i en binær fil. Også enkelte filer er nesten alltid binære, det ville være fint om Vim ville hente på dette og automatisk skrive inn en passende redigeringsmodus. Hjelpefilene for Vim inneholder følgende råd for å automatisere xxd-stil hex-redigeringsfunksjonene for Vim, for å automatisere konverteringen og automatisk skrive inn hex-modus for binære filer: Det er noen problemer med denne tilnærmingen: Bare filer med a. bin utvidelse åpnes på denne måten, selv om du redigerer en fil i binær modus (f. eks. med bin) Dette angir det binære alternativet for eventuelle fremtidige dokumenter åpnet også. Hvis du for eksempel bruker tabe, eller hvis du har Vim satt opp for å åpne nye filer i faner. da åpnes noen nye filer som åpnes i binær modus. Hvis du bestemmer deg for å redigere en binær fil uten xxd, vil BufWrite autocommands prøve å konvertere den med xxd - r uansett. Å vise en fil i xxd-modus krever at du endrer filen, så skrivebeskyttet filer vil advare deg hvis du prøver å gjøre det, selv om du ikke gjør noen endringer. Buffere med nomodifiserbare vil føre til feil. Hvis du går tilbake til ikke-xxd-redigering, vil filetypen fortsatt være xxd. Disse problemene kan løses som følger: Trigger på alle filer hvis de redigeres med det binære alternativet. Endre utvidelsesspesifikke autocmd for å angi det binære alternativet. Bruk setlocal i stedet for å bruke det globale binære alternativet. Oppretthold en variabel for hver buffer som sporer om filen er i xxd-modus. Bare gjenopprett til ikke-xxd før du skriver hvis denne variabelen sier at vi er i riktig modus. Fjern tydelig skrivebeskyttet flagg når du overfører mellom xxd og ikke-xxd-modus, tilbakestill den etterpå. Oppbevar filetypen når du skriver inn xxd-modus og gjenopprett den når du forlater. Nedenfor er noen kode for din vimrc som gjør alt dette ved å benytte kommandoen vi definerer ovenfor: Dette vil gjøre Vim automatisk påkjenning heksemodus ved hjelp av kommandoen definert tidligere når en fil åpnes i binær modus, og vil automatisk (lokalt) sett binær modus for. bin og. hex filer (så. bin og. hex filer vil automatisk åpne i hex modus alltid). Andre forbedringer Rediger Du må kanskje ta skritt for å unngå at Hit ENTER for å fortsette spørre om du bruker dette tipset. Her er kommandoer som skal brukes til å starte eventuelle filer i hex-modus i en separat hex-editor Vim-server. Under Windows kan du enkelt legge til disse kommandoene på Send til-menyen hvis du bruker den fullstendige banen for gvim. exe i stedet for vim. Fjern alternativet - p og --remote-tab-silent hvis du ikke vil ha det flippede grensesnittet. Den - c-binære sikrer at eventuelle innstillinger for tabbrett, wrap, etc. overskrives etter at filen er ferdig lastet. Start i faner i en ny dedikert Vim hex editor: vim - p - b - c sett binær - servernavn HEXVIM ltfilesgt Lansering i faner i en eksisterende dedikert Vim hex editor: vim - b - c sett binær - servernavn HEXVIM --remote - tab-silent ltfilesgt Referanser Rediger Kommentarer Redigér script666 gir lignende (og utvidet) mulighet, selv om jeg aldri har brukt den og ikke kan garantere at den er nyttig for brukervennlighet. Koden for automatisk å skrive inn heksemodus forårsaker: hjelp kommandoer til å mislykkes for noen gzipped hjelpefiler, så jeg fikset det ved å legge til denne koden av koden jeg har laget et git-repository på GitHub av denne koden, og ønsker andre oppdateringer velkommen. Takk Fritzophrenic for å gjøre denne plugin - Tyler Akins Ad Blocker-interferens oppdaget Wikia er et gratis-å-bruke nettsted som tjener penger fra reklame. Vi har en endret opplevelse for seere som bruker annonseblokkere. Wikia er ikke tilgjengelig hvis du har gjort ytterligere endringer. Fjern den egendefinerte annonseblokkerregelen (e), og siden lastes som forventet.
No comments:
Post a Comment