code: def _notify_load_dll(self, event):
          
  
          # Pass the event to the breakpoint container.
          bCallHandler = _BreakpointContainer._notify_load_dll(self, event)
  
          # Get the process where the DLL was loaded.
          aProcess = event.get_process()
  
          # Pass the event to the process.
          bCallHandler = aProcess._notify_load_dll(event) and bCallHandler
  
          # Anti-anti-debugging tricks on ntdll.dll.
          if self.__bHostileCode:
              aModule = event.get_module()
              if aModule.match_name('ntdll.dll'):
  
                  # Since we've overwritten the PEB to hide
                  # ourselves, we no longer have the system
                  # breakpoint when attaching to the process.
                  # Set a breakpoint at ntdll!DbgUiRemoteBreakin
                  # instead (that's where the debug API spawns
                  # it's auxiliary threads). This also defeats
                  # a simple anti-debugging trick: the hostile
                  # process could have overwritten the int3
                  # instruction at the system breakpoint.
                  self.break_at(aProcess.get_pid(),
                          aProcess.resolve_label('ntdll!DbgUiRemoteBreakin'))
  
          return bCallHandler
docs: Notify the load of a new module.
  
          @warning: This method is meant to be used internally by the debugger.
  
          @type  event: L{LoadDLLEvent}
          @param event: Load DLL event.
  
          @rtype:  bool
          @return: C{True} to call the user-defined handle, C{False} otherwise.