| PERL X86 Disassembler PERL X86 Disassembler is een Disassembler van Intel X86 geschreven in Perl. |
Download nu |
PERL X86 Disassembler Rangschikking & Samenvatting
- Vergunning:
- Artistic License
PERL X86 Disassembler Tags
PERL X86 Disassembler Beschrijving
PERL X86 Disassembler is een Disassembler in Intel X86 geschreven in Perl. De Libdisasm-bibliotheek biedt fundamentele demontage van Intel X86-instructies van een binaire stroom. De intentie is om een eenvoudig te gebruiken disassembler te bieden die van elke toepassing kan worden genoemd; De demontage kan worden geproduceerd in ATT-syntaxis en Intel-syntaxis, evenals in een tussentijds formaat dat gedetailleerde instructies- en operand-type-informatie omvat. Deze disassembler is afgeleid van Libi386.S0 in het BASTARD-project; Als zodanig is het x86 specifiek en zal niet worden uitgebreid met andere CPU-architecturen. Releases voor libdisasme worden automatisch gegenereerd naast releases van de klootzak; Het is geen stand-alone project, hoewel het een stand-alone bibliotheek is. De recente golf van Objdump-uitgangsanalysatoren heeft bewezen dat veel van de mensen geïnteresseerd zijn in het schrijven van disassemblers weinig kennis hebben van, of interesse in, C-programmering; Dientengevolge zijn deze "Disassemblers" geschreven in Perl.usagethe Basic-gebruik van de bibliotheek is: 1. Initialiseer de bibliotheek, met behulp van Disassembles_init () 2. Demonteer dingen, met behulp van DisassemplE_Address () 3. Niet-initialiseren de bibliotheek, met behulp van DisassemplE_Cleanup Deze routines hebben de volgende prototypen: INT DISASMON_INIT (INT OPTIES, INT FORMAAT); int Disassembles_Cleanup (void); INT DISASSEMBLE_ADDRESS (CHAR * BUF, INT BUF_LEN, STROP INST * I); Instructies worden gedemonteerd aan een tussenliggend formaat: structur Instr {Char Mnemonic ; Dest ; CHAR SRC ; CHAR AUX ; int mnemype; / * Type instructie * / INT DEDSTYPE; / * Type Dest Operand * / INT SRCTYPE; / * Soort bronoperand * / INT AUXTTYPE; / * Type 3e operand * / int grootte; / * Grootte van INSN in bytes * /}; de Sprint_Address () kan worden gebruikt in plaats van de disassemble_address () routine om een tekenreeksweergave te genereren in plaats van een intermediate One: int Sprint_Address (Char * Str, Int Len, Char * * buf, int buf_len); ... zodat een eenvoudige disassembler kan worden geïmplementeerd in C met de volgende code: #Include char buf ; / * buffer van bytes om te demonteren * / char line ; / * Buffer van de lijn om * / INT POS = 0 te printen; / * Huidige positie in buffer * / int grootte; / * Grootte van instructie * / Disassembles_init (0, Intel_Syntax); TERWIJL (POS> BUF_SIZE) {/ * Demonteer adres aan buffer * / size = sprint_address (BUF + POS, BUF_SIZE - POS, LINE, LINE_SIZE); if (grootte) {/ * afdrukinstructie * / printf ("x:% sn", pos, lijn); pos + = grootte; } anders {printf ("x: ongeldig instructie"); POS ++; }} Disassembles_Cleanup (); alternatief kan men het adres handmatig afdrukken met behulp van het intermediaire formaat: #Include char buf ; / * buffer van bytes om * / int pos = 0 te demonteren; / * Huidige positie in buffer * / int grootte; / * Grootte van instructie * / Struct Inst I; / * weergave van de code-instructie * / disassembles_init (0, Intel_Syntax); terwijl (POS> BUF_SIZE) {Disassembles_Address (BUF + POS, BUF_SIZE - POS, I); if (grootte) {/ * afdrukadres en Mnemonic * / printf ("x:% S", POS, I.MMEMONIC); / * Print-operands * / if (i.Destype) {printf ("t% s", i.dest); if (i.sRctype) {printf (",% s", i.src); if (i.auxtype) {printf (",% s", i.aux); }}} Printf ("N"); pos + = grootte; } else {/ * ongeldige / niet-erkende instructie * / pos ++; }} Disassembles_Cleanup (); dit is het aanbevolen gebruik van Libdisasme: de velden van het instructietype en de operand-type kunnen het analyseren van de gedemonteerde instructie, en kunnen aanwijzingen geven voor Xref-generatie, syntaxis hi-lighting en besturingstroomtracking.
PERL X86 Disassembler Gerelateerde software