首页
社区
课程
招聘
关于程序中Timer的各种问题,欢迎版主大侠进。
发表于: 2008-1-2 16:59 3885

关于程序中Timer的各种问题,欢迎版主大侠进。

2008-1-2 16:59
3885
关于调试带Timer的程序,疑惑太多,不吐不快,麻烦各位了。

记得哪个资料上说来着,Timer的原理本质也是一个运行在程序中的异步线程吧。但是打开OD调试自已的一个带Timer的程序,运行Timer后,打开OD中的线程窗口,却还是只发现主线程一个,其它啥也没有。我想出了两种解释,一是Timer作为线程运行时间极短,函数执行完后线程就结束了,所以显示不出来。二是Timer函数的执行不是线程,所以线程窗口不会显示。不知道我的看法对不,望知道的朋友指正一下。

第二个问题是,从OD的情况来看,无论是出于何种理由,线程那里已经是显示不出Timer执行的函数了。如果想给这个函数下断的话,该从哪方面下手了。也许有朋友会说可以用到WM_TIMER消息,但我知道Timer函数的触发,好像也可以不用WM_TIMER消息吧,如果是这样的情况,该怎么下断了?如果都没有办法下断的话,用Timer作一个定时的程序反加载,或者自校验什么的,那不是很难破?

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 846
活跃值: (221)
能力值: (RANK:570 )
在线值:
发帖
回帖
粉丝
2
直接看反汇编代码,为什么一定要调试,不懂

再说,知道TIMER函数在哪里,为什么就不能在那里下断调试?

另其他消息的确是在接收到消息的时候就另起线程处理的,至少在跨进程发消息时是这样的
2008-1-2 18:25
0
雪    币: 200
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
版主大侠别生气啊,估计我没说得具体。我是自已的程序拿来用OD动态调试的,自已是知道Timer函数在哪里的。如果是别人的程序,而且是加了壳的程序的话。输入表里出也许没有显示出Settimer了,这样也许直接找不到那个函数所在的地方了吧,光是看反汇编代码,加了密有花指令的代码,估计要找到那个调用的地方应该也很难了吧。所以我就是想直接这样,可能行不通。

另外版主大侠的最后一句话:"另其他消息的确是在接收到消息的时候就另起线程处理的,至少在跨进程发消息时是这样的",这句话没有看懂是什么意思。能不能解释下,好像是同意我关于Timer触发时另起一个线程执行,并且执行完毕后线程立即就结束了,所以OD里面从线程窗口里看不到那个Timer对应的线程,而只有一个主线程在那里,不知道是不是这个意思。
2008-1-2 21:57
0
雪    币: 846
活跃值: (221)
能力值: (RANK:570 )
在线值:
发帖
回帖
粉丝
4
你不懂的太多,全说清楚可以出书~~~~

1你可以跟踪SETTIMER的反汇编代码,可以找到注册TIMER函数的结构,以后直接用程序读那个结构就可以定位TIMER函数
2输入表没有SETTIMER一样可以下断
3我最后说的,你看不明白很正常,自己试试就什么都明白了
4脱未知壳是一定得看完所有外壳代码的,除非是压缩壳。
2008-1-3 10:04
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
呃。有点模糊。
2008-1-3 10:12
0
雪    币: 200
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
版主的回帖我看过了,谢谢了,还是很有启发的,我自已还要慢慢弄下。连问两次,确实不懂的多,打搅你了。
2008-1-3 21:11
0
游客
登录 | 注册 方可回帖
返回
//