security-cw/ROPgadget/ropgadget/ropchain/ropmaker.py

37 lines
1.2 KiB
Python
Raw Permalink Normal View History

2020-11-25 15:38:46 +00:00
## -*- coding: utf-8 -*-
##
## Jonathan Salwan - 2014-05-13
##
## http://shell-storm.org
## http://twitter.com/JonathanSalwan
##
from capstone import *
from ropgadget.ropchain.arch.ropmakerx86 import *
from ropgadget.ropchain.arch.ropmakerx64 import *
class ROPMaker(object):
def __init__(self, binary, gadgets, paddingLen, offset):
self.__binary = binary
self.__gadgets = gadgets
self.paddingLen = paddingLen
self.__offset = offset
2020-11-25 15:38:46 +00:00
self.__handlerArch()
def __handlerArch(self):
if self.__binary.getArch() == CS_ARCH_X86 \
and self.__binary.getArchMode() == CS_MODE_32 \
and self.__binary.getFormat() == "ELF":
ROPMakerX86(self.__binary, self.__gadgets, self.paddingLen, self.__offset)
2020-11-25 15:38:46 +00:00
elif self.__binary.getArch() == CS_ARCH_X86 \
and self.__binary.getArchMode() == CS_MODE_64 \
and self.__binary.getFormat() == "ELF":
ROPMakerX64(self.__binary, self.__gadgets, self.paddingLen, self.__offset)
2020-11-25 15:38:46 +00:00
else:
print("\n[Error] ROPMaker.__handlerArch - Arch not supported yet for the rop chain generation")