longld / peda

PEDA - Python Exploit Development Assistance for GDB
Other
5.84k stars 801 forks source link

pdisas sets the disassembly-flavor to intel #100

Open danielhenrymantilla opened 7 years ago

danielhenrymantilla commented 7 years ago

File 'peda.py', lines 759 and 777:

def disassemble(self, *arg):
        [...]
        self.execute("set disassembly-flavor intel") 

I, as many other users, prefer the GAS syntax. Other users may prefer the Intel syntax, and that's why there is a set disassembly-flavor XXX setting. I can't see a reason as to why pdisas, a supposedly improved disas, should blatantly ignore such a setting and impose either flavor.

longld commented 7 years ago

peda sets disassembly-flavor to intel by default for instruction parsing and will not support GAS syntax.

danielhenrymantilla commented 7 years ago

@longld Actually you happen to support both syntaxes. For intance, both-syntaxes-are-well-parsed That shouldn't come as a surprise, since when looking at your code, you look for "cmp","test", "call", "j" and "ret" to be substrings of the opcodes mnemonics: image

# lib/utils.py, in function format_disasm_code
# line 526
addr, opcode = to_int(m.group(1)), m.group(2)
            for c in colorcodes:
                if c in opcode:
                    color = colorcodes[c]
                    if c == "call":
                        for f in VULN_FUNCTIONS:
                            if f in line.split(":\t", 1)[-1]:
                                style = "bold, underline"
                                color = "red"
                                break
                    break

It so happens that both AT&T's (GAS) syntax and Intel's use the same opcodes mnemonics, at least at their core. Your "is a substring of" test means you maintain compatiblity regarding both syntaxes, which won't evolve in the future by the way.

Ergo, you do support both syntaxes with your parsing, and should therefore not favour one syntax over another.

The suggested fix, as said in my initial post, is to delete the line 777 from peda.py:

self.execute("set disassembly-flavor intel") # get rid of this line

I have commented out this line in my code and haven't encountered any problem whatsoever.