Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import re
- import struct
- import random
- def junk():
- HJISDUF = random.randint(1,1000)
- if HJISDUF < 2:
- IUDSF = ((HJISDUF * 4)/2)
- def re_to_unicode(s):
- newstring = ''
- for c in s:
- newstring += re.escape(c) + '\\x00'
- junk()
- return newstring
- def type_unpack(type):
- """ return the struct and the len of a particular type """
- type = type.lower()
- s = None
- junk()
- l = None
- if type == 'short':
- junk()
- s = 'h'
- l = 2
- elif type == 'bool':
- junk()
- s = 'c'
- l = 1
- elif type == 'ushort':
- junk()
- s = 'H'
- l = 2
- elif type == 'int':
- junk()
- s = 'i'
- l = 4
- elif type == 'uint':
- junk()
- s = 'I'
- l = 4
- elif type == 'long':
- junk()
- s = 'l'
- l = 4
- elif type == 'ulong':
- junk()
- s = 'L'
- l = 4
- elif type == 'float':
- junk()
- s = 'f'
- l = 4
- elif type == 'double':
- junk()
- s = 'd'
- l = 8
- else:
- raise TypeError('Unknown type %s' % type)
- junk()
- return ('<' + s, l)
- def hex_dump(data, addr = 0, prefix = '', ftype = 'bytes'):
- """
- function originally from pydbg, modified to display other types
- """
- junk()
- dump = prefix
- slice = ''
- if ftype != 'bytes':
- junk()
- structtype, structlen = type_unpack(ftype)
- for i in range(0, len(data), structlen):
- if addr % 16 == 0:
- junk()
- dump += ' '
- for char in slice:
- if ord(char) >= 32 and ord(char) <= 126:
- dump += char
- else:
- junk()
- dump += '.'
- dump += '\n%s%08X: ' % (prefix, addr)
- slice = ''
- tmpval = 'NaN'
- try:
- junk()
- packedval = data[i:i + structlen]
- tmpval = struct.unpack(structtype, packedval)[0]
- except Exception as e:
- print e
- if tmpval == 'NaN':
- junk()
- dump += '{:<15} '.format(tmpval)
- elif ftype == 'float':
- junk()
- dump += '{:<15.4f} '.format(tmpval)
- else:
- junk()
- dump += '{:<15} '.format(tmpval)
- addr += structlen
- junk()
- else:
- for byte in data:
- junk()
- if addr % 16 == 0:
- dump += ' '
- for char in slice:
- junk()
- if ord(char) >= 32 and ord(char) <= 126:
- dump += char
- else:
- junk()
- dump += '.'
- dump += '\n%s%08X: ' % (prefix, addr)
- slice = ''
- dump += '%02X ' % ord(byte)
- junk()
- slice += byte
- addr += 1
- remainder = addr % 16
- if remainder != 0:
- junk()
- dump += ' ' * (16 - remainder) + ' '
- for char in slice:
- junk()
- if ord(char) >= 32 and ord(char) <= 126:
- dump += char
- else:
- junk()
- dump += '.'
- return dump + '\n'
- junk()
- junk()
- junk()
- class ProcessException(Exception):
- junk()
- pass
- class BaseProcess(object):
- junk()
- def __init__(self, *args, **kwargs):
- junk()
- """ Create and Open a process object from its pid or from its name """
- self.h_process = None
- self.pid = None
- self.isProcessOpen = False
- self.buffer = None
- self.bufferlen = 0
- def __del__(self):
- junk()
- self.close()
- def close(self):
- junk()
- pass
- def iter_region(self, *args, **kwargs):
- junk()
- raise NotImplementedError
- def write_bytes(self, address, data):
- junk()
- raise NotImplementedError
- def read_bytes(self, address, bytes = 4):
- junk()
- raise NotImplementedError
- def get_symbolic_name(self, address):
- junk()
- return '0x%08X' % int(address)
- def read(self, address, type = 'uint', maxlen = 50, errors='raise'):
- junk()
- if type == 's' or type == 'string':
- junk()
- s = self.read_bytes(int(address), bytes=maxlen)
- news = ''
- for c in s:
- junk()
- if c == '\x00':
- junk()
- return news
- news += c
- if errors=='ignore':
- junk()
- return news
- raise ProcessException('string > maxlen')
- else:
- if type == 'bytes' or type == 'b':
- junk()
- return self.read_bytes(int(address), bytes=1)
- s, l = type_unpack(type)
- return struct.unpack(s, self.read_bytes(int(address), bytes=l))[0]
- def write(self, address, data, type = 'uint'):
- junk()
- if type != 'bytes':
- junk()
- s, l = type_unpack(type)
- return self.write_bytes(int(address), struct.pack(s, data))
- else:
- junk()
- return self.write_bytes(int(address), data)
- junk()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement