document.write('
Data hosted with ♥ by Pastebin.com - Download Raw - See Original
  1. #!/usr/bin/env python
  2. from immlib import LoadDLLHook, Debugger
  3.  
  4.  
  5. class DLLHook(LoadDLLHook):
  6.  
  7.     imm = Debugger()
  8.  
  9.     def __init__(self, modulenames, addresses):
  10.         LoadDLLHook.__init__(self)
  11.         self.modulenames = modulenames
  12.         self.addrs = addresses
  13.  
  14.     def run(self, regs):
  15.         for module in self.modulenames:
  16.             if module in self.imm.getAllModules().keys():
  17.                 # set breakpoint
  18.                 index = self.modulenames.index(module)
  19.                 self.imm.setBreakpoint(self.addrs[index])
  20.                 self.modulenames.remove(module)
  21.                 self.imm.log(\'[+] Breakpoint set in 0x%x\' % self.addrs[index])
  22.                 # unhook
  23.                 if not self.modulenames:
  24.                     self.disable()
  25.                     self.UnHook()
  26.  
  27.  
  28. def main(args):
  29.     modulenames, addresses = parse_args(args)
  30.     if modulenames and addresses:
  31.         ret = \'[+] Module loaded. Will break on: {0}\'.format(zip(modulenames, addresses))
  32.         hook = DLLHook(modulenames, addresses)
  33.         hook.add(\'dll_hooker\')
  34.     else:
  35.         imm = Debugger()
  36.         ret = \'[-] Incorrect arguments. Usage: <script> mod1,mod2 0x1234,0x4321\'
  37.         imm.log(ret)
  38.  
  39.     return ret
  40.  
  41.  
  42. def parse_args(args):
  43.     modulenames = None
  44.     addresses = None
  45.     if args and len(args) == 2:
  46.         if \',\' in args[0]:
  47.             modulenames = args[0].split(\',\')
  48.         else:
  49.             modulenames = []
  50.             modulenames.append(args[0])
  51.         if \',\' in args[1]:
  52.             addresses = args[1].split(\',\')
  53.             addresses = [int(addr, 16) for addr in addresses]
  54.         else:
  55.             addresses = []
  56.             addresses.append(int(args[1], 16))
  57.     if len(modulenames) != len(addresses):
  58.         modulenames = None
  59.         addresses = None
  60.  
  61.     return modulenames, addresses
');