From bdd36861f7ae3517da0dd2486bf72b47b5a52e02 Mon Sep 17 00:00:00 2001 From: Malfurious Date: Sun, 19 May 2024 13:00:10 -0400 Subject: payload: padalign reference property Previously, the auto alignment tool would ensure that the next payload byte address was evenly divisible by the padding size, and nothing more. Users now have the added flexibility to specify a basis or "reference" address. The next payload byte address will then be an even multiple of the padding size away from this reference. Signed-off-by: Malfurious --- sploit/payload/payload_entry.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'sploit/payload/payload_entry.py') diff --git a/sploit/payload/payload_entry.py b/sploit/payload/payload_entry.py index 4dca83d..295a91f 100644 --- a/sploit/payload/payload_entry.py +++ b/sploit/payload/payload_entry.py @@ -91,13 +91,14 @@ class padrel(padlen): class padalign(padlen): """Generate padding to reach next aligned address.""" - def __init__(self, size=None, data=None): + def __init__(self, size=None, data=None, reference=0): self.size = size self.data = data + self.reference = reference def payload_len(self, payload): size = self.size or arch.alignment - return -self.base % size + return (self.reference - self.base) % size class placeholder(padlen): """Generate fixed length of magic bytes, one word length by default.""" -- cgit v1.2.3