-
-
[求助]请指点跨进程文本获取的问题.
-
发表于:
2006-11-3 09:25
5850
-
本人主要从事应用软件的开发,但是最近碰到一些跨进程获取其他程序中的内容、信息、数据的问题,经过一段时间的学习研究,虽然还没有解决问题,但是得到了一些经验,希望通过我的这些经验能给大家带来一些帮助。我现在还在取一个进程里的信息,但是总有一些信息无法取到,甚是苦恼,作为一个开发者,如果碰到了问题又不想放弃,所以顺便找一些有兴趣的朋友,一块和我研究探讨这个问题:(技术探讨联系方式:QQ511876813 或13903266770)
1、 通过标准消息获取:
例如WM_GETTEXT可以获取EDIT的文本内容;
LB_GETTEXT可以获取LISTBOX列表项的文本内容;
CB_GETLBTEXT可以获取COMBOBOX下拉列表项的文本内容;
LVM_GETITEMTEXT可以获取LISTVIEW列表项的文本内容;
TVM_GETITEM可以获取TREEVIEW中的文本内容;
说明,这种情况下对于VC、VB等所编写的程序是适用,但是,如果碰到DELPHI所写的程序就无法运用信息直接直接获取了。不过可以采用其它的方法进行获取。
2、 通过ApiHook的技术进行获取,最经典的例子就输入“屏幕取词”了,屏幕取词的基本原理是,通过鼠标移动,当鼠标在一个地方停留一定时间后,将重画鼠标所在的位置,这样系统将调用文本输出的API函数进行文本重画,这个时候在TXTOUT、TXTOUTW、EXTTXTOUT、EXTTXTOUTW、DrawTextA、DrawTextW、tabbedTextOutA、TabbedTextOutW、PolyTextOutW等等API函数里加入HOOK,重画函数执行时,将调用自己的API函数,因为自己的API函数必须很原函数具有相同结构的参数,从而获取的要重画的内容,之后恢复原API函数的执行,从而达到了获取文本的目的,这种方法多数是做一个嵌入其它进程的DLL,运用SetWindowsHookEx钩住WH_GETMESSAGE等消息实现的。
3、 VC具有强大的功能,对于要被监视的进程可以所有通过CreateProcess来创建,创建模式可以DEBUG_ONLY_THIS_PROCESS的调试模式,并且在调试模式下加入断点,断点的设置可以根据各自的需要设置,如果你想获取文本信息,可以把断点设置在文本输出的地方,这样,只要文本信息在输出时,就会自动断住,此时利用ReadProcessMemory可以取到加载内存中的数据。
4、 如果要找到其它进程的数据,可以直接取内存,如果用一些工具,比如OD,找到您所需要的信息在内存中的位置,可以用ReadProcessMemory取内存内容即可。这种方法也多用于软件破解,外挂制作等。
5、 如果数据所监测的进程属于客户端和服务器端的模式,也可以尝试获取经过网卡数据的方式来实现,获取了通过网卡的数据以后,经过分析以后取得自己想要的内容。
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)