论坛: 编程破解 标题: 关于跨进程文本获取的探究(欢迎参加讨论) 复制本贴地址    
作者: believeme [believeme]    论坛用户   登录
本人主要从事应用软件的开发,但是最近碰到一些跨进程获取其他程序中的内容、信息、数据的问题,经过一段时间的学习研究,虽然还没有解决问题,但是得到了一些经验,希望通过我的这些经验能给大家带来一些帮助。我现在还在取一个进程里的信息,但是总有一些信息无法取到,甚是苦恼,作为一个开发者,如果碰到了问题又不想放弃,所以顺便找一些有兴趣的朋友,一块和我研究探讨这个问题:(本人联系方式:QQ:86858262)

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、 如果数据所监测的进程属于客户端和服务器端的模式,也可以尝试获取经过网卡数据的方式来实现,获取了通过网卡的数据以后,经过分析以后取得自己想要的内容。




[此贴被 believeme(believeme) 在 11月01日17时37分 编辑过]

地主 发表时间: 06-10-29 09:21

回复: wangtong10 [wangtong10]   论坛用户   登录
第1点跟语言没有联系,只是因为DELPHI默认会用到VCL,使用的窗口类是VCL自带的,不是系统标准类,自然就不会响应标准消息

第3点这个跟VC还是没有任何联系


B1层 发表时间: 06-10-31 09:32

论坛: 编程破解

20CN网络安全小组版权所有
Copyright © 2000-2010 20CN Security Group. All Rights Reserved.
论坛程序编写:NetDemon

粤ICP备05087286号