首页
社区
课程
招聘
[讨论]问点OD附加原理的事
发表于: 2017-8-2 15:10 3593

[讨论]问点OD附加原理的事

2017-8-2 15:10
3593

比如自己写个demo.exe,两个线程,都while+sleep打印信息。


OD附加这个demo,附加时候暂停在int3断点上。

此时用dbgview去看demo进程的两个线程打印信息都停止了。

但看OD的线程,发现都是"激活"状态。所以明显不是通过suspendthread/suspendProcess暂停的被附加进程,所以问题来了,他是通地什么方式将所有线程暂停了并且还显示“激活”状态。。?


[培训]科锐逆向工程师培训第53期2025年7月8日开班!

收藏
免费 0
支持
分享
最新回复 (6)
雪    币: 209
活跃值: (13)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
2017-8-3 00:20
0
雪    币: 209
活跃值: (13)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
没人知道吗
2017-8-4 14:44
0
雪    币: 5
活跃值: (514)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
4
以win2k为例,如果当前进程是以调试方式创建的话,那么创建进程回到用户态进程开始初始化的地方,在NTDLL有这个函数:
LdrpInitializeProcess

                //  Now  that  all  DLLs  are  loaded,  if  the  process  is  being  debugged,
                //  signal  the  debugger  with  an  exception
                //

                if  (  Peb->BeingDebugged  )  {
                          DbgBreakPoint();
                }


OD可以设置停下来在系统断点,还是winmain
2017-8-4 22:27
0
雪    币: 209
活跃值: (13)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
叁毛 以win2k为例,如果当前进程是以调试方式创建的话,那么创建进程回到用户态进程开始初始化的地方,在NTDLL有这个函数: LdrpInitializeProcess // No ...
我问的是附加,谢谢
2017-8-5 21:11
0
雪    币: 2473
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
有可能是窗口没有刷新,你右键刷新一下窗口看看状态是否改变
2017-9-13 01:09
0
雪    币: 269
活跃值: (92)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
7
OD调用了kernel32的DebugActiveProcess,这个函数就是给被调试进程开了个线程DbgUiRemoteBreakin,内部就会int  3。而之所以其他线程是激活状态,主要是因为OD间接调用了内核的DbgkpPostFakeProcessCreateMessages,这个函数原理貌似就是遍历相关链表获得线程创建,模块加载之类的信息,然后挂到调试对象的event链表上。
2017-9-22 19:07
0
游客
登录 | 注册 方可回帖
返回