首页
社区
课程
招聘
这个是一个函数吗?
发表于: 2010-8-28 15:40 6311

这个是一个函数吗?

2010-8-28 15:40
6311
收藏
免费 0
支持
分享
最新回复 (7)
雪    币: 1149
活跃值: (833)
能力值: ( LV13,RANK:260 )
在线值:
发帖
回帖
粉丝
2
是一个函数  它是ntdll .dll中的一个函数 DbgUiRemoteBreakin,它内部会调用DbgBreakPoint执行断点指令,而且是在一个结构化异常保护块(SEH)中做的调用。具体情况 我就给你一个链接吧!http://book.51cto.com/art/200812/100834.htm  你应该能看懂~~~加油!!!
2010-8-28 17:09
0
雪    币: 98
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
如果用调试器调试一个进程的话,调试器首先会在这个进程中创建一个远程中断线程(Remote Breakin Thread),而DbgUiRemoteBreakin就是这个线程的启动函数,其结构如下:
DWORD WINAPI DbgUiRemoteBreakin( LPVOID lpParameter)
{
        __try
       {
                  if(NtCurrentPeb()->BeingDebugged)
                         DbgBreakPoint();
        }
         __except(EXCEPTION_EXECUTE_HANDLER)
        {
                  return 1;
        }
        RtlExitUserThread(0);   
}
其中NtCurrentPeb()->BeingDebugged是读取进程PEB中的BeingDebugged标志,判断自己是否处于调试状态,如果处于调试状态,则调用DbgBreakPoint()触发断点
另外,如果调试器无法处理这个断点的话,则交给异常处理器处理它,这就是__except的作用
2010-8-28 17:34
0
雪    币: 2
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
有点复杂,只能学习!!!
2010-8-28 20:15
0
雪    币: 357
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
学习了............
2010-10-25 15:41
0
雪    币: 21
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
路过,学习一下!!
2010-10-25 17:59
0
雪    币: 48
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
学习了,还要好好看一下
2013-1-6 10:40
0
雪    币: 652
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
++顶贴++
2013-1-6 14:39
0
游客
登录 | 注册 方可回帖
返回
//