首页
社区
课程
招聘
POINT H收集翻译
发表于: 2005-2-5 01:44 14570

POINT H收集翻译

2005-2-5 01:44
14570

POINT H,2K/XP下所谓的万能断点。从网上收集的点滴,翻译而成。以后遇到相关材料,还将继续补充。

1、什么是POINT H?
  它是在XP/2K机子上的老的已知的hmemcpy,搜索user32中:F3 A5 8B C8 83 E1 03 F3 A4 E8,就是POINT H。
  或者搜索8B C1 C1 E9 02 F3 A5 8B C8 83 E1 03 F3 A4 E8。一旦找到,它返回位置地址,也就是说在内存拷贝之前。(实际的操作:F9,在内存中搜索上述字符串)

   该模式应该发生在USER32的第一个OX3FFFF。比如:

77D46706 mov eax, ecx
77D46708 shr ecx, 2
77D4670B repe movsd ; <-- 在该指令上中断
77D4670D mov ecx, eax
77D4670F and ecx, 3
77D46712 repe movsb
77D46714 call sub_77D46722
(呵呵,我在我的机子上也找到了,还是借用别人的吧,省得麻烦:)
 
  该段代码显示了内存是在哪里从gui-项被拷贝到提供给用户的缓冲器中。追踪一小段,出现SendMessage和Getwindow×××代码段。

2、在OD或SICE中输入:
  BP “POINT-H的值”或在SICE中用BPX。它类似Win98中的hmemcpy,但工作在2K/XP的80%的程序中(不用于VC++)。但我们可以用一些技巧使它用于所有的程序(也可用于VC++)。当在程序编辑框中输入假的序列号时,程序中断。

3、实际上,输入bpx user32!EcGetText+51可以做到"d edi-ebx"。

4、还有寻找POINT H的另外一个方法:如果有USER32.DLL的符号文件(USER32.PDB或USER32.DBG),可以在IDA中打开USER32.DLL,适用PDB插件加载上面的符号,然后可以搜索函数ECGetText。它就是POINT H。该函数是USER32.DLL的内部函数,调用来自EditWndProc(也是一个内部函数)。
==============================================================
译者注:我进行了该方法测试,的确找到了该位置。它实际上是对键盘输入和鼠标按键的一个中断,但是和万能断点插件中POINT H的地方不一致。万能断点插件中的POINT H好像常常不能中断,只有VB5和VB6的能中断。请教大虾们指导一下。


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 7
支持
分享
最新回复 (11)
雪    币: 257
活跃值: (369)
能力值: ( LV12,RANK:370 )
在线值:
发帖
回帖
粉丝
2
老大没有搞错吧?我就写了这么几个字,就加精了?汗,只有继续努力了,否则是对不起“精华”的含义的。
2005-2-5 11:08
0
雪    币: 50161
活跃值: (20630)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
3
最初由 newsearch 发布
老大没有搞错吧?我就写了这么几个字,就加精了?汗,只有继续努力了,否则是对不起“精华”的含义的。


文字数量不在多少,你翻译的这个内容点,正是许多人想知道的。
2005-2-5 11:28
0
雪    币: 332
活跃值: (479)
能力值: ( LV9,RANK:330 )
在线值:
发帖
回帖
粉丝
4
搜索user32中:F3 A5 8B C8 83 E1 03 F3 A4 E8,什么意思?在哪里搜索?
我在USER32.dll里搜索只有F3 A5 8B C8 83 E1 03 F3 A4 eb,和F3 A5 8B C8 83 E1 03 F3 A4 E9,没有E8,怎么回事?
2005-2-5 13:57
0
雪    币: 257
活跃值: (369)
能力值: ( LV12,RANK:370 )
在线值:
发帖
回帖
粉丝
5
最初由 laoqian 发布
搜索user32中:F3 A5 8B C8 83 E1 03 F3 A4 E8,什么意思?在哪里搜索?
我在USER32.dll里搜索只有F3 A5 8B C8 83 E1 03 F3 A4 eb,和F3 A5 8B C8 83 E1 03 F3 A4 E9,没有E8,怎么回事?


搜索方法:
  菜单:查看->执行模块->双击USER32.DLL,在USER32模块窗口中:右键->搜索->二进制字符,在HEX里输入F3 A5 8B C8 83 E1 03 F3 A4 E8,就可以找到Point-H的位置了。我这里完全可以啊。XP+SP2
2005-2-5 14:26
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
我感觉这个应该很有用,但现在还没有深入领会。
2005-2-5 14:27
0
雪    币: 332
活跃值: (479)
能力值: ( LV9,RANK:330 )
在线值:
发帖
回帖
粉丝
7
是否中间掉了一句
77xxxx FF7508   push [ebp+08]

在HEX里输入F3 A5 FF 75 08 8B C8 83 E1 03 F3 A4 E8

我这里win2000sp4只有这个!!!

又看了一下xp,确实是你所说的?
简单的查找 83 E1 03 F3 A4 E8即可,在win2000和xp里都是唯一的
当然断点设在前面的 77Dxxxxx F3A5  rep movs dword ptr es:[edi],dword ptr ds:[esi]



2005-2-5 14:30
0
雪    币: 257
活跃值: (369)
能力值: ( LV12,RANK:370 )
在线值:
发帖
回帖
粉丝
8
最初由 laoqian 发布
是否中间掉了一句
77xxxx FF7508 push [ebp+08]

在HEX里输入F3 A5 FF 75 08 8B C8 83 E1 03 F3 A4 E8

........


呵呵,我看了一下,我这里中间没有掉一句。原文说的是XP/2K,但实际上应该是针对XP的,这可能是版本问题。我这里FF7508正好放在前面去了。建议你找个XP试试看,我这里没有2K。这个断点还是有点用的。
2005-2-5 15:10
0
雪    币: 332
活跃值: (479)
能力值: ( LV9,RANK:330 )
在线值:
发帖
回帖
粉丝
9
这个断点,只要输入动作,就中断,怎么让他全部输入完了再中断呢?
2005-2-5 15:22
0
雪    币: 214
活跃值: (15)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
10
楼主能否具体结合一个例子写一篇教程来讲解这个断点应该如何应用?
2005-2-6 01:07
0
雪    币: 161
活跃值: (231)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
11
这东东啊!
2005-2-10 23:57
0
雪    币: 339
活跃值: (1510)
能力值: ( LV13,RANK:970 )
在线值:
发帖
回帖
粉丝
12
这个的确很想知道。

关注!+支持!
2005-2-11 01:21
0
游客
登录 | 注册 方可回帖
返回
//