能力值:
( LV13,RANK:530 )
2 楼
打个比方:
如果是DX自绘窗体,显然不会从这里断下
甚至连输入消息都不会处理。 DXinput可以直接用。
能力值:
( LV2,RANK:10 )
3 楼
我也遇到类似的问题
能力值:
( 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
);
能力值:
( LV6,RANK:90 )
5 楼
我也碰到过用 SendMessage 来得到文本框里东西的, 但不知道这种应该怎么下断点。
能力值:
( LV2,RANK:10 )
6 楼
当出现这种情况后,要怎么分析这才是关键,哪位高人指点下!!
如果下断,碰到问题怎么会析?
小弟在这谢过
能力值:
( LV2,RANK:10 )
7 楼
怎么没人回答啊,我也想知道
能力值:
( LV9,RANK:210 )
8 楼
直接跟进程序的消息处理循环,再设置条件断点
能力值:
( LV2,RANK:10 )
9 楼
什么东西都不是万能的
能力值:
( 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格式很了解,那就能解决几乎所有的问题了。并且速度不慢
===================================================