KernelAttacher.py 文件源码

python
阅读 25 收藏 0 点赞 0 评论 0

项目:pydbg3 作者: walkerfuz 项目源码 文件源码
def event_loop_with_quit_event(self, quit_event):
        '''
        in kernel debugging session IDebugControl.WaitForEvent() must be called with an 'infinite' timeout value.
        this is why we have to create thread that checks the given given quit event. once set it will force a debugger
        break.
        '''


        if (self.is_deleted):
            raise DebuggerException("called when object is deleted")


        # sanity check on quit_event
        #if (not isinstance(quit_event, threading._Event)):
        #   raise DebuggerException("invalid type for quit event")

        # is already set?
        if (quit_event.is_set()):
            # no job for us
            return

        # create abort event
        abort_quit_waiter_event = Event()

        # start quit thread
        quit_waiter = KernelAttacher.QuitEventWaiter(quit_event = quit_event, abort_event = abort_quit_waiter_event, top = self)

        # event loop
        self.__event_loop_with_forced_break_check(quit_event)

        # stop quit waiter thread
        self.dbg_eng_log("KernelAttacher.event_loop: waiting for quit_waiter to end")
        abort_quit_waiter_event.set()
        quit_waiter.join()

        # dont wait for garbage collection, and force delete on self
        self.__del__()

    ###########################################################
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号