首页
社区
课程
招聘
[求助]请问CE是如何监视一个快速变化的变量的
发表于: 2013-1-2 14:26 6133

[求助]请问CE是如何监视一个快速变化的变量的

2013-1-2 14:26
6133
在下需要监视某进程中的一个变量时,一般都是设置一个定时器,用OpenProcess()打开句柄,然后使用ReadProcessMemory()进行持续监视的,我见到的大多数例子也是这样。

可在实际使用的过程中发现,有时变量的变化速度太快,即使把定时器监视的时间间隔卡到1毫秒一次也会出现被漏记的情况。可使用CE却似乎不会出现这种问题,我每次用CE监视时,虽然刷新很快,但都可以清晰的看到变量的变化过程。

请教各位大能:CE是怎么做到这一点的?或者有什么比较好的方式解决这一问题吗? 另外开一个线程,然后在那个线程上持续不断的监视变量,这似乎也不是什么好方法,而且未必有效啊……

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

收藏
免费 0
支持
分享
最新回复 (8)
雪    币: 2792
活跃值: (2588)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
2
CE也是


如果你说的是:找出什么访问了这个地址

那就是调试时,设置了硬件断点。
上传的附件:
2013-1-2 14:57
0
雪    币: 0
活跃值: (954)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
3
找到传入参数的CALL进行HOOK,然后不断的监视局部堆栈。如果是全局的话,那就得找到写入全局数据的地方。
2013-1-2 15:28
0
雪    币: 22
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
多谢提示
不过个人感觉还是有点不对……
因为个人实际测试的时候,将ReadProcessMemory()的时间间隔卡到1毫秒还老是漏记,但在CE的监视列表上却始终可以非常清晰的看见变量数值的变化过程,这一点我经过反复的测试可以充分证明。
如果CE也是像我一样用这种方法监视,恐怕根本做不到的吧……


谢谢,不过就是因为没办法HOOK我才迫不得已这么做的。那个程序每次一用OD附加,就出现DBGBreakPoint提示,然后目标进程就死掉了,看起来好像有反OD保护的样子……作为新手来说,我完全不知道怎么过掉。
2013-1-2 16:00
0
雪    币: 101
活跃值: (157)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
5
给地址设置了访问断点。。。数据被访问时就人断下来,然后记录下来再继续运行。。
2013-1-2 17:03
0
雪    币: 22
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
……
百度了一下,似乎访问断点只有OD之类的调试器才能做到?如果是自己写的程序该怎么办呢?
2013-1-2 18:38
0
雪    币: 1040
活跃值: (1293)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
WaitForDebugEvent和SetThreadContext
2013-1-2 20:03
0
雪    币: 721
活跃值: (3380)
能力值: ( LV7,RANK:140 )
在线值:
发帖
回帖
粉丝
8
CE也算是个简单的调试器了,里面有一些断点之类的调试手法,不是普通的内存修改器
2013-1-2 21:52
0
雪    币: 22
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
多谢楼上各位的指点,查了下资料,似乎最后都指向需要把目标进程设置为调试模式。
可这样的话,似乎又绕回去了,这个进程似乎本身是有反调试功能的,一挂OD就自己死在DBG断点上,看来还是要先解决这个问题……

无论如何,还是谢谢各位了……
2013-1-3 13:07
0
游客
登录 | 注册 方可回帖
返回
//