diff --git a/ropgadget/args.py b/ropgadget/args.py index 3272f44b..2ed89237 100644 --- a/ropgadget/args.py +++ b/ropgadget/args.py @@ -94,6 +94,8 @@ def __parse(self, arguments, custom_arguments_provided=False): parser.add_argument("--nosys", action="store_true", help="Disable SYS search engine") parser.add_argument("--multibr", action="store_true", help="Enable multiple branch gadgets") parser.add_argument("--all", action="store_true", help="Disables the removal of duplicate gadgets") + parser.add_argument("--dump", action="store_true", help="Outputs the gadget bytes") + self.__args = parser.parse_args(arguments) if self.__args.version: diff --git a/ropgadget/core.py b/ropgadget/core.py index e8b1559c..5aaa55c1 100644 --- a/ropgadget/core.py +++ b/ropgadget/core.py @@ -13,6 +13,7 @@ import cmd import os import re +import codecs import ropgadget.rgutils as rgutils import sqlite3 @@ -79,7 +80,11 @@ def __lookingForGadgets(self): for gadget in self.__gadgets: vaddr = gadget["vaddr"] insts = gadget["gadget"] - print(("0x%08x" %(vaddr) if arch == CS_MODE_32 else "0x%016x" %(vaddr)) + " : %s" %(insts)) + bytes = gadget["bytes"] + bytesStr = " //" + bytes.encode('hex') if self.__options.dump else "" + + print(("0x%08x" %(vaddr) if arch == CS_MODE_32 else "0x%016x" %(vaddr)) + " : %s" %(insts) + bytesStr) + print("\nUnique gadgets found: %d" %(len(self.__gadgets))) return True