summaryrefslogtreecommitdiffstats
path: root/sploit/arch.py
diff options
context:
space:
mode:
authordusoleil <howcansocksbereal@gmail.com>2021-09-02 00:03:59 -0400
committerdusoleil <howcansocksbereal@gmail.com>2021-09-02 00:03:59 -0400
commit4cece8dbed674ab6d361cdb7a440981c90ed4de5 (patch)
tree5f9862c904faeed754827b203ab0ab07bd50ea91 /sploit/arch.py
parent72646d6f197910c2a8c424fc2e769d03d0b5a332 (diff)
downloadsploit-4cece8dbed674ab6d361cdb7a440981c90ed4de5.tar.gz
sploit-4cece8dbed674ab6d361cdb7a440981c90ed4de5.zip
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 <howcansocksbereal@gmail.com>
Diffstat (limited to '')
-rw-r--r--sploit/arch.py28
1 files changed, 28 insertions, 0 deletions
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