能力值:
( LV2,RANK:10 )
|
-
-
2 楼
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
我也想学习下。
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
直接jmp...
|
能力值:
( LV3,RANK:20 )
|
-
-
5 楼
SetTimer第一次个参数那里下断不就行了吗?
|
能力值:
( LV9,RANK:140 )
|
-
-
6 楼
[QUOTE=tomken;1052659] http://bbs.pediy.com/showthread.php?p=26218[/QUOTE]
刚看了,这个帖子已经关闭不能回复,
我这里想补充一下自己的看法,不一定对。
或许对楼主有用。
根据3楼的说法,
“但是SetTimer的时候 TIMEPORC 是 0。”
TIMEPORC 是 0 是正常,默认回调是0,子定义的回调就是自己的回调地址。
4楼说的两种方法都只是只能拦截收到timer的event消息信息,
但不能调试原回调过程 如果timer里面的代码过程需要调试跟踪,且时钟间隔很短(比如毫秒级或者几秒)情况下,
可以hook下写个killtimer(),否则在timer里下断会死锁。(很有可能,因为这是timer的回调不像我们在主线程下断)
|
能力值:
( LV3,RANK:20 )
|
-
-
7 楼
SetTimer第4个参数 那个地址下断点
|
能力值:
( LV3,RANK:20 )
|
-
-
8 楼
2楼不是解决了吗?为什么 还不结贴?
|
能力值:
( LV4,RANK:50 )
|
-
-
9 楼
timer是不会死锁的,windows会把多个timer消息merge成一个,就是为了处理timerproc万一时间过长的情况,
断点可以在2个地方下,
1个是窗口消息处理函数里,看看wm_timer消息,
2就是在直接timerproc下断点。
|
能力值:
( LV12,RANK:210 )
|
-
-
10 楼
找到mfc42.dll
搜索命令cmp dword ptr[ebp+c],360
73D31A22 > 8BFF MOV EDI,EDI ; 下条件断点[esp+8]==0x113
73D31A24 55 PUSH EBP
73D31A25 8BEC MOV EBP,ESP
73D31A27 817D 0C 6003000>CMP DWORD PTR SS:[EBP+C],360
F9 运行。
跟进73D31A53 E8 1C000000 CALL mfc42.#1109
73D31FD1 FFD3 CALL EBX ; F7 到达目标
|
能力值:
( LV9,RANK:140 )
|
-
-
11 楼
好像是这样~ 受教了! 谢谢ronging兄指点
|
|
|