首页
社区
课程
招聘
[求助]有时用GetWindowText,或GetDlgItemText,断不下来是什么原因?
发表于: 2007-9-8 20:30 6676

[求助]有时用GetWindowText,或GetDlgItemText,断不下来是什么原因?

2007-9-8 20:30
6676
有的时候在注册码输入时,明明是在一个对话框里输入的,可是有GetWindowText,或GetDlgItemText却断不下来,用OD的查看当前模块的名称发现也有这几个函数.

可是当下断时就是断不下来!!
也试过GetWindowTextA,GetWindowTextW...

请问这是什么原因呢?

像这样的程序要怎么下断叱?

[课程]Linux pwn 探索篇!

收藏
免费 0
支持
分享
最新回复 (9)
雪    币: 325
活跃值: (97)
能力值: ( LV13,RANK:530 )
在线值:
发帖
回帖
粉丝
2
打个比方:
如果是DX自绘窗体,显然不会从这里断下
甚至连输入消息都不会处理。 DXinput可以直接用。
2007-9-8 21:01
0
雪    币: 206
活跃值: (22)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
我也遇到类似的问题
2007-9-9 00:35
0
雪    币: 4580
活跃值: (992)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
4
除了这两个API函数可以获取文本外还可以用
SendMessage(
  (HWND) hWnd,              // handle to destination window
  WM_GETTEXT,               // message to send
  (WPARAM) wParam,          // number of characters to copy
  (LPARAM) lParam           // text buffer
);
2007-9-9 02:44
0
雪    币: 196
活跃值: (96)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
5
我也碰到过用 SendMessage 来得到文本框里东西的, 但不知道这种应该怎么下断点。
2007-9-9 12:39
0
雪    币: 14
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
当出现这种情况后,要怎么分析这才是关键,哪位高人指点下!!
如果下断,碰到问题怎么会析?
小弟在这谢过
2007-9-9 22:52
0
雪    币: 57
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
怎么没人回答啊,我也想知道
2007-9-25 11:27
0
雪    币: 266
活跃值: (52)
能力值: ( LV9,RANK:210 )
在线值:
发帖
回帖
粉丝
8
直接跟进程序的消息处理循环,再设置条件断点
2007-9-25 20:54
0
雪    币: 204
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
什么东西都不是万能的
2007-9-26 07:15
0
雪    币: 227
活跃值: (55)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
10
不知你用的调试器是“softICE”还是“Ollydbg”,我主要讲一下前者。
      断点失效一般有以下原因:
1.程序运行没触碰到该断点;
2.比如代码断点位置在动态加载的dll上、数据断点位置在动态申请的内存空间内,这就要求必须那个空间有效时,softICE在这里停留一下,才能保证这些断点有效。
3.由于程序运行的某些机制(也与这种动态地址有关),使API断点也有失效的时候,明明该程序调用了该API,可是就是断不下来。getwindowtextA(W)   ,getdlgitemtexta(w) ,这两个断点不是很靠得住。
方法一:下面说一种我本人常用的方法:用addr命令。输入口令或用户名以后,按Ctrl+D切出SoftICE界面,然后 proc命令,看看你所跟踪的软件进程名是什么;然后 “addr 进程名”,将当前内存切换到该进程后,用s命令搜索你所输入的字符串(可能是Ansi编码,也可能是Unicode编码,两样都试试),基本上可以解决问题。
方法二:经过本人仔细的研究,口令窗口中,将用户输入自符转换成“*”的API函数是ExtTextOutW.通过这个也能找到输入的口令位置。但此方法所找到的口令串,在使用前要经过一系列繁琐的转换。
方法三:通过窗口句柄,来查窗口控件句柄,用窗口消息断点来解决问题(这方面Ollydbg更方便)
方法四:进入主函数空间的任意位置,用“代码逼近”法,逐渐定位找到负责弹出口令框,读入口令的函数。“代码逼近法”是我自己定义的一种方法,大致思路就是在主函数空间中用“步过不进入的命令”与“S”命令,看步过哪个子函数后内存中出现了口令字符串,然后重新运行程序,进到那个子函数里,再重复“代码逼近”过程。可以说这种思路是软件跟踪分析的一条规范化的思路。如果再学会使用bpstat,bpcount等命令,以及bpload,还有对PE格式很了解,那就能解决几乎所有的问题了。并且速度不慢
===================================================
2007-9-26 10:39
0
游客
登录 | 注册 方可回帖
返回
//