From 4cece8dbed674ab6d361cdb7a440981c90ed4de5 Mon Sep 17 00:00:00 2001 From: dusoleil Date: Thu, 2 Sep 2021 00:03:59 -0400 Subject: Add arch config module Add Arch class which specifies wordsize, endianness, alignment, and a nop code for an architecture. Add a couple predefined architectures for x86 and x86_64 Add a "configured" architecture which is set to x86_64 by default. Added btoi and itob functions which will convert to and from bytes and ints based on the current architecture config Signed-off-by: dusoleil --- sploit/__init__.py | 2 +- sploit/arch.py | 28 ++++++++++++++++++++++++++++ 2 files changed, 29 insertions(+), 1 deletion(-) create mode 100644 sploit/arch.py diff --git a/sploit/__init__.py b/sploit/__init__.py index c90b980..d9ea6b0 100644 --- a/sploit/__init__.py +++ b/sploit/__init__.py @@ -1 +1 @@ -__all__ = ["log","comm","until"] +__all__ = ["log","comm","until","arch"] diff --git a/sploit/arch.py b/sploit/arch.py new file mode 100644 index 0000000..d75bbda --- /dev/null +++ b/sploit/arch.py @@ -0,0 +1,28 @@ +def btoi(b, signed=False): + return int.from_bytes(b, arch.endianness, signed=signed) + +def itob(i, signed=False): + return i.to_bytes(arch.wordsize, arch.endianness, signed=signed) + +class Arch: + def __init__(self, wordsize, endianness, alignment, nop): + self.wordsize = wordsize + self.endianness = endianness + self.alignment = alignment + self.nop = nop + +archx86 = Arch( + wordsize = 4, + endianness = "little", + alignment = 16, + nop = b'\x90' +) + +archx86_64 = Arch( + wordsize = 8, + endianness = "little", + alignment = 16, + nop = b'\x90' +) + +arch = archx86_64 -- cgit v1.2.3