code: def inject_code(self, payload, lpParameter = 0):
          
  
          # Uncomment for debugging...
  ##        payload = '\xCC' + payload
  
          # Allocate the memory for the shellcode.
          lpStartAddress = self.malloc(len(payload))
  
          # Catch exceptions so we can free the memory on error.
          try:
  
              # Write the shellcode to our memory location.
              self.write(lpStartAddress, payload)
  
              # Start a new thread for the shellcode to run.
              aThread = self.start_thread(lpStartAddress, lpParameter,
                                                              bSuspended = False)
  
              # Remember the shellcode address.
              #  It will be freed ONLY by the Thread.kill() method
              #  and the EventHandler class, otherwise you'll have to
              #  free it in your code, or have your shellcode clean up
              #  after itself (recommended).
              aThread.pInjectedMemory = lpStartAddress
  
          # Free the memory on error.
          except Exception:
              self.free(lpStartAddress)
              raise
  
          # Return the Thread object and the shellcode address.
          return aThread, lpStartAddress
docs: Injects relocatable code into the process memory and executes it.
  
          @warning: Don't forget to free the memory when you're done with it!
              Otherwise you'll be leaking memory in the target process.
  
          @see: L{inject_dll}
  
          @type  payload: str
          @param payload: Relocatable code to run in a new thread.
  
          @type  lpParameter: int
          @param lpParameter: (Optional) Parameter to be pushed in the stack.
  
          @rtype:  tuple( L{Thread}, int )
          @return: The injected Thread object
              and the memory address where the code was written.
  
          @raise WindowsError: An exception is raised on error.