CN101834807A - 一种获取无窗口RichEdit控件文本内容的方法及其设备 - Google Patents
一种获取无窗口RichEdit控件文本内容的方法及其设备 Download PDFInfo
- Publication number
- CN101834807A CN101834807A CN 201010161277 CN201010161277A CN101834807A CN 101834807 A CN101834807 A CN 101834807A CN 201010161277 CN201010161277 CN 201010161277 CN 201010161277 A CN201010161277 A CN 201010161277A CN 101834807 A CN101834807 A CN 101834807A
- Authority
- CN
- China
- Prior art keywords
- function
- text
- hook
- message
- richedit
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Landscapes
- Information Transfer Between Computers (AREA)
Abstract
本发明涉及一种获取无窗口RichEdit控件文本内容的方法及其设备。本发明首先安装消息钩子,以便监控窗口事件。在监控窗口事件过程中,修改该聊天软件中RichEdit模块的创建文本服务对象函数的入口地址。然后调用该HOOK函数,以获取该文本服务对象的接口指针。最后根据该文本服务对象接口访问RichEdit控件。本发明解决了需要通过算法密钥对网络层协议解析,以实现对聊天信息进行监控而带来的技术难题。因此本发明方法能够应用于监控使用即时聊天软件的聊天内容。
Description
技术领域
本发明涉及互联网技术,尤其涉及即时通信软件。
背景技术
近来,通过即时通信软件(如QQ、MSN、Skype)的聊天行为导致的泄密事件日益增多,因此需要在某些场合对即时通信软件的聊天内容进行监控。但是主流的即时通信软件都对通信内容进行了加密,若通过对网络层数据包解密的方式获取聊天内容则需要算法密钥,而算法密钥的获取又非常困难,因此需要寻找新的技术方法。
对于即时通信软件,用户在使用它们进行聊天过程中,都会将聊天信息显示在聊天窗口上。同时如QQ2009、MSN、Skype等主流即时通信软件都使用“无窗口类型的RichEdit控件”来显示聊天内容信息。
RichEdit控件是一个可用于输入、编辑、格式化、打印和保存文本的窗体。这些文本可以设置字符和段落格式,并且可以包含嵌入的COM对象。由于RichEdit能显示丰富多样的文本、图片,所以大多数即时聊天软件,如QQ、MSN等都使用RichEdit控件来作为聊天内容的显示窗口。
无窗口类型的RichEdit控件使用RichEdit模块提供的COM接口来创建对象实例,并通过这些COM接口来访问其属性和方法,此时RichEdit控件不是一个子窗口,也没有句柄,所以无法直接通过Windows系统的消息机制进行访问。
发明内容
本发明提供了一种能解决以上问题的获取无窗口RichEdit控件文本内容的方法及其设备。
在第一方面,本发明提供了一种获取无窗口RichEdit控件文本内容的方法。该方法包括:
步骤a,安装消息钩子,以便监控窗口事件。
步骤b,在监控窗口事件过程中,修改该聊天软件中RichEdit模块的创建文本服务对象函数的入口地址,使其跳转到用于获取文本服务对象接口指针的HOOK函数中。
步骤c,调用该HOOK函数,以获取所述文本服务对象的接口指针。
步骤d,根据所述文本服务对象的接口指针访问RichEdit控件,从而获得所述无窗口RichEdit控件文本内容。
在第二方面,本发明提供了一种获取无窗口RichEdit控件文本内容的设备。该设备包括:
安装消息钩子,以便监控窗口事件的模块。
在监控窗口事件过程中,修改聊天软件中RichEdit模块的创建文本服务对象函数的入口地址,使其跳转到用于获取文本服务对象接口指针的HOOK函数中的模块。
调用该HOOK函数,以获取所述文本服务对象接口指针的模块。
根据该文本服务对象接口访问RichEdit控件以获得该无窗口RichEdit控件文本内容的模块。
在本发明的一个实施例中,该获取无窗口RichEdit控件文本内容的方法包括:
步骤h,系统强制加载DLL模块。
步骤e,检测目标进程中是否已经加载DLL模块。
步骤f,如果尚未加载DLL模块则系统强制加载DLL模块,再执行步骤g,如果已经加载了DLL模块则直接执行步骤g。
步骤g,检测目标进程是否属于感兴趣进程,如果不是感兴趣进程则将该加载的DLL模块退出,如果是感兴趣进程则继续执行所述步骤b。
在本发明的另一个实施例中,所述RichEdit控件处理的消息包括用于获取该RichEdit控件文本行数的EM_GETLINECOUNT消息,用于得到行开头字符索引值的EM_LINEINDEX消息,用于得到行长度的EM_LINELENGTH消息,用于获取指定范围文本内容的EM_GETTEXTRANGE消息。
在本发明的又一个实施例中,所述安装消息钩子包括安装CBT消息钩子、安装鼠标消息钩子和安装键盘消息钩子,从而实时监控窗口事件。
本发明通过API HOOK技术获取“无窗口类型RichEdit控件”的访问接口,进而获取即时聊天软件显示的聊天内容,从而实现了对即时聊天软件聊天信息的监控。本发明方法解决了需要通过算法密钥对网络层数据包的协议解析来实现对聊天信息进行监控的技术难题。
附图说明
下面将参照附图对本发明的具体实施方案进行更详细的说明,在附图中:
图1是本发明一个实施例的基于API HOOK技术跨进程获取聊天内容的流程图。
具体实施方式
API(Application Programming Interface,应用程序编程接口)是一预先定义的函数,目的是提供给开发人员应用程序,使其无需访问源码或理解内部工作机制。
HOOK是Windows中提供的一种用以替换DOS下“中断”的系统机制,中文译为“挂钩”或“钩子”。在对特定的系统事件进行HOOK后,一旦发生已HOOK事件,则对该事件进行HOOK的程序就会受到系统的通知,这时程序就能在第一时间对该事件做出响应。API HOOK技术是一种用于改变API执行结果的技术。以下将详细阐述如何通过API HOOK技术获取无窗口RichEdit控件文本内容。
图1是本发明一个实施例的基于API HOOK技术跨进程获取聊天内容的流程图。
在步骤110,在本地计算机中安装消息钩子,以便监控该本地计算机的窗口事件,如监控窗口的创建、移动、销毁、改变大小等。一个例子中,该消息钩子为CBT消息钩子。较佳地,该消息钩子为鼠标钩子、键盘钩子和CBT消息钩子。
在本发明的一个实施例中,安装CBT消息钩子的代码为:
//安装CBT钩子
if(glhCbtHook==NULL)
{
glhCbtHook=SetWindowsHookEx(WH_CBT,CbtProc,glhInstance,0);
if(glhCbtHook)
{
MyOutputDebugString(″Setup CBT Hook Success!″);
}
else
{
char szErr[64]={0};
iErrCode=GetLastError();
sprintf(szErr,″Setup CBT Hook Failed!-%d″,iErrCode);
MyOutputDebugString(szErr);
bHook=FALSE;
}
}
return bHook;
}
在步骤120,系统(如windows操作系统)检测进程中是否已经加载了DLL模块,如果已经加载了DLL模块,则执行步骤130;如果尚未加载DLL模块,则执行步骤121。
在步骤121,系统强制加载DLL模块,而后执行步骤130。
在步骤130,由于步骤110已经安装了消息钩子,因此在监控窗口事件过程中,检测当前目标进程是否属于感兴趣的进程(举例如,打开word窗口不是感兴趣进程,打开MSN聊天窗口是感兴趣进程),如果不是感兴趣进程则执行步骤131,如果是感兴趣进程则执行步骤140。
在步骤131,将注入的DLL模块退出。
在步骤140,进行HOOK API操作,将即时通信软件中RichEdit模块的创建文本服务对象函数的入口地址头几个字节的内容,修改为跳转到HOOK函数地址的指令。
在本发明的一个实施例中,步骤140为,将RichEd20.dll模块的CreateTextServices函数入口地址头几个字节的内容,修改为跳转到CreateTextServices_HOOK函数地址的指令。
在本发明的一个实施例中,HOOP API处理过程代码为:
BYTE g_btNewBytes[8]={0xB8,0x0,0x0,0x40,0x0,0xFF,0xE0,0x0};
BOOL SetupAPIHook()
{
HMODULE hModule=NULL;
hModule=GetModuleHandle(″RICHED20.DLL″);
if(hModule)
{
//获取API地址
IpCreateTxServProcAddr=(DWORD)GetProcAddress(hModule,″CreateTextServices″);
if(IpCreateTxServProcAddr==NULL)
{
MyOutputDebugString(″获取CreateTextServices函数地址失败!″);
return FALSE;
}
//保存原始字节数据
if(ReadProcessMemory(INVALID_HANDLE_VALUE,(VOID*)IpCreateTxServProcAddr,
(void*)g_dwOldBytes[0],sizeof(DWORD)*2,NULL)==FALSE)
{
MyOutputDebugString(″读取本地进程内存数据失败!″);
return FALSE;
}
//将00400000改写为HOOK函数的地址
*(DWORD*)(g_btNewBytes+1)=(DWORD)CreateTextServices_Hook;
//改写API入口地址后面几个字节的内容
if(WriteProcessMemory(INVALID_HANDLE_VALUE,
(VOID*)IpCreateTxServProcAddr,
(void*)g_btNewBytes,
sizeof(DWORD)*2,NULL)==FALSE)
{
MyOutputDebugString(″改写本地进程内存数据失败!″);
return FALSE;
}
}
return TRUE;
}
在步骤150,若即时通信软件中的目标进程调用创建文本服务对象函数,则跳转到HOOK函数中,以便获取文本服务对象的接口指针。
在本发明的一个实施例中,步骤150为,在目标进程调用CreateTextServices函数时,跳转到CreateTextServices_HOOK函数中,以便获取ITextServices接口指针。
下面以创建文本服务对象函数为CreateTextServices函数,文本服务对象接口指针为ITextServices接口指针,HOOK函数为CreateTextServices_HOOK函数为例,阐述该HOOK函数的功能。
该的HOOK函数功能为,先恢复CreateTextServices函数入口地址的头几个字节数据,以便调用CreateTextServices函数。然后根据该CreateTextServices函数的传入参数IUnknown*punkOuter、ITextHost*pITextHost获取指向IUnknown对象指针的指针(该CreateTextServices函数的传出参数IUnknown**ppUnk),并将该CreateTextSercices的返回值作为CreateTextServices_HOOK函数的返回值。再通过该指向IUnknown对象指针的指针查询ITextServices接口指针,在获得该ITextServices接口指针后,将该接口指针保存起来,以便用于将来访问RichEdit控件。然后再继续将CreateTextServices函数入口地址的头几个字节内容改写成跳转到CreateTextServices_HOOK函数入口地址的指令,以保证下一次CreateTextServices函数被调用时,先进入CreateTextServices_HOOK函数。最后CreateTextServices_HOOK函数返回,返回值为内部调用CreateTextServices函数的返回值。
在本发明的一个实施例中,CreateTextServices_HOOK函数的代码为:
HRESULT WINAPI CreateTextServices_Hook(IUnknown*punkOuter,ITextHost*pITextHost,IUnknown**ppUnk)
{
int i=0;
char szInfo[64]={0};
ITextServices*IpTxServ=NULL;
//进入临界区
EnterCriticalSection(&csHookApi);
//恢复API头8个字节
if(WriteProcessMemory(INVALID_HANDLE_VALUE,(VOID*)IpCreateTxServProcAddr,(void*)g_dw0ldBytes[0],sizeof(DWORD)*2,NULL)==FALSE)
{
MyOutputDebugString(″恢复API头8个字节失败″);
}
//执行真实的API
HRESULT hResult=CreateTextServices(punkOuter,pITextHost,ppUnk);
if(hResult==S_OK)
{
//获取ITextServices接口指针
((IUnknown*)(*ppUnk))->QueryInterface(IID_ITextServices,(void**)(&IpTxServ));
if(IpTxServ)
{
//保存接口指针
}
else
{
MyOutputDebugString(″获取IID_ITextServices接口失败!″);
}
}
//继续HOOK
if(WriteProcessMemory(INVALID_HANDLE_VALUE,(VOID*)IpCreateTxServProcAddr,(void*)g_btNewBytes,sizeof(DWORD)*2,NULL)==FALSE)
{
MyOutputDebugString(″改写本地进程内存数据失败!″);
}
//离开临界区
LeaveCriticalSection(&csHookApi);
return hResult;
在步骤160,根据文本服务对象接口提供的方法来访问RichEdit控件,以获取RichEdit控件的文本内容,从而得到聊天内容。一个例子中,根据ITextServices接口提供的方法来访问RichEdit控件。
在本发明的一个实施例中,在RichEdit控件接收并处理的消息中包括EM_GETLINECOUNT消息、EM_LINEINDEX消息、EM_LINELENGTH消息、EM_GETTEXTRANGE消息,其用于获取RichEdit控件文本内容。
EM_GETLINECOUNT消息用于获取RichEdit控件文本的行数,EM_LINEINDEX消息用于得到行开头字符的索引值,EM_LINELENGTH消息用于得到行长度,EM_GETTEXTRANGE消息用于获取指定范围的文本内容。
具体获取RichEdit控件文本内容的处理方法为:先获取RichEdit控件当前的文本行数,再与原记录的行数进行比较,如果没有变化则不进行任何处理;如果当前行数大于原行数,则以原行数作为循环起点,新行数作为循环结束点,开始循环。在循环体中,以当前行数值作为索引,先获取当前行首字符的偏移值并将其作为区段起始值,然后获取当前行的长度,并将其作为区段结束值。然后获取当前行设定的区段文本内容,并进行处理。再继续获取下一行的内容,直到所有新增行的内容都获取完为止。
在本发明的一个实施例中,获取RichEdit控件文本内容的代码为:
VOID GetRecodeProc(INT iTalkWindowIndex)
{
INT iLine=0;
INT iLineCount=0;
INT iCharNum=0;
INT iLineLength=0;
LRESULT IResult=0;
TEXTRANGE TextRange;
CHAR szMsgTemp[MAXLINEBUFLENGTH*2+1]={0};
WCHAR wszMsgTemp[MAXLINEBUFLENGTH+1]={0};
//获取RichEdit控件当前行数
hResult=((ITextServices*)::TalkWindowInfo[iTalkWindowIndex].pITextService)->TxSendMessage(EM_GETLINECOUNT,0,0,&iLineCount);
if(hResult!=S_OK)
return;
//判断是否大于已获取的行数
if(iLineCount>TalkWindowInfo[iTalkWindowIndex].iPos)
{
//初始化TextRange结构
memset(&TextRange,0,sizeof(TEXTRANGE));
TextRange.IpstrText=(char*)wszMsgTemp;
//保存新行数
iLine=TalkWindowInfo[iTalkWindowIndex].iPos;
TalkWindowInfo[iTalkWindowIndex].iPos=iLineCount;
//循环获取新增的行内容
for(;iLine<=iLineCount;iLine++)
{
//初始化内容缓冲
memset(szMsgTemp,0,sizeof(CHAR)*MAXLINEBUFLENGTH*2);
memset(wszMsgTemp,0,sizeof(WCHAR)*MAXLINEBUFLENGTH);
//获取行内容
//取得行开头字符的索引,作为选择起始点。
((ITextServices*)::TalkWindowInfo[iTalkWindowIndex].pITextService)->TxSendMessage(EM_LINEINDEX,iLine,0,&(TextRange.chrg.cpMin));
//得到行的长度,作为选择结尾偏移量
((ITextServices*)::TalkWindowInfo[iTalkWindowIndex].pITextService)->TxSendMessage(EM_LINELENGTH,TextRange.chrg.cpMin,0,&iLineLength);
iLineLength=iLineLength>MAXLINEBUFLENGTH?MAXLINEBUFLENGTH:iLineLength;
TextRange.chrg.cpMax=TextRange.chrg.cpMin+iLineLength;
//获取选择的内容
((ITextServices*)::TalkWindowInfo[iTalkWindowIndex].pITextService)->TxSendMessage(EM_GETTEXTRANGE,0,(LPARAM)&TextRange,&iCharNum);
//有实际内容才进行处理
if(iCharNum>0)
{
//处理消息内容
ProcMsgContentBuf();
}
}//for
}//if
}
需要说明的是,以上仅以windows系统为例,阐述如何通过HOOK API方式获取无窗口RichEdit控件文本内容,进而获得即时通信软件中的聊天内容。实际上,本发明不限于以上所述windows环境,更不限于HOOK以上所述函数,也就是说,不管系统环境如何变化,无论函数名称如何改变,只要是通过安装消息钩子及HOOK API方式获取无窗口RichEdit控件文本内容,就都在本发明保护范围之内。
显而易见,在不偏离本发明的真实精神和范围的前提下,在此描述的本发明可以有许多变化。因此,所有对于本领域技术人员来说显而易见的改变,都应包括在本权利要求书所涵盖的范围之内。本发明所要求保护的范围仅由所述的权利要求书进行限定。
Claims (12)
1.一种获取无窗口RichEdit控件文本内容的方法,其特征在于,包括:
步骤a,安装消息钩子,以便监控窗口事件;
步骤b,在监控窗口事件过程中,修改该聊天软件中RichEdit模块的创建文本服务对象函数的入口地址,使其跳转到用于获取文本服务对象接口指针的HOOK函数中;
步骤c,调用该HOOK函数,以获取所述文本服务对象的接口指针;
步骤d,根据所述文本服务对象的接口指针访问RichEdit控件,从而获得所述无窗口RichEdit控件文本内容。
2.如权利要求1所述的一种获取无窗口RichEdit控件文本内容的方法,其特征在于,在所述步骤a之后,步骤b之前包括:
步骤h,系统强制加载DLL模块;
步骤e,检测目标进程中是否已经加载DLL模块;
步骤f,如果尚未加载DLL模块则系统强制加载DLL模块,再执行步骤g;如果已经加载了DLL模块则直接执行步骤g;
步骤g,检测目标进程是否属于感兴趣进程,如果不是感兴趣进程则将该加载的DLL模块退出,如果是感兴趣进程则继续执行所述步骤b。
3.如权利要求1所述的一种获取无窗口RichEdit控件文本内容的方法,其特征在于,所述创建文本服务对象的函数为CreateTextServices函数,所述文本服务对象的接口指针为ITextServices接口指针。
4.如权利要求3所述的一种获取无窗口RichEdit控件文本内容的方法,其特征在于,所述HOOK函数功能为:
先恢复所述CreateTextServices函数入口地址,以便调用该CreateTextServices函数;
然后通过调用该CreateTextServices函数得到所述ITextServices的接口指针;
再将CreateTextServices函数入口地址改写成跳转到该HOOK函数入口地址的指令;
最后将该HOOK函数返回,其返回值为内部调用CreateTextServices函数的返回值。
5.如权利要求4所述的一种获取无窗口RichEdit控件文本内容的方法,其特征在于,所述HOOK函数包括传入参数IUnknown*punkOuter、ITextHost*pITextHost,以及传出参数IUnknown**ppUnk;
该HOOK函数通过该输入参数得到该输出参数,并通过该传出参数得到所述ITextServices接口指针。
6.如权利要求1所述的一种获取无窗口RichEdit控件文本内容的方法,其特征在于,所述RichEdit控件处理的消息包括以下消息中的一个或多个:
用于获取该RichEdit控件文本行数的EM_GETLINECOUNT消息;
用于得到行开头字符索引值的EM_LINEINDEX消息;
用于得到行长度的EM_LINELENGTH消息;以及
用于获取指定范围文本内容的EM_GETTEXTRANGE消息。
7.如权利要求6所述的一种获取无窗口RichEdit控件文本内容的方法,其特征在于,所述步骤d包括:
获取所述RichEdit控件当前的文本行数,并与原记录的行数进行比较,如果没有变化则不进行任何处理;
如果当前行数大于原行数,则以原行数作为循环起点,新行数作为循环结束点,开始循环;
在该循环体中,以当前行数值作为索引,先获取当前行首字符的偏移值,并将其作为区段起始值,然后获取当前行的长度,并将其作为区段结束值,再获取当前行设定的区段文本内容,并进行处理;
继续获取下一行内容,直到所有新增行的内容都获取完为止。
8.如权利要求1所述的一种获取无窗口RichEdit控件文本内容的方法,其特征在于,所述安装消息钩子包括安装CBT消息钩子、安装鼠标消息钩子和安装键盘消息钩子,从而实时监控窗口事件。
9.一种获取无窗口RichEdit控件文本内容的设备,其特征在于,包括:
安装消息钩子,以便监控窗口事件的模块;
在监控窗口事件过程中,修改聊天软件中RichEdit模块的创建文本服务对象函数的入口地址,使其跳转到用于获取文本服务对象接口指针的HOOK函数中的模块;
调用该HOOK函数,以获取所述文本服务对象接口指针的模块;以及
根据该文本服务对象的接口指针访问RichEdit控件获得所述无窗口RichEdit控件文本内容的模块。
10.如权利要求9所述的一种获取无窗口RichEdit控件文本内容的设备,其特征在于,所述创建文本服务对象的函数为CreateTextServices函数,所述文本服务对象的接口指针为ITextServices接口指针。
11.如权利要求10所述的一种获取无窗口RichEdit控件文本内容的设备,其特征在于,所HOOK函数功能为:
恢复所述CreateTextServices函数入口地址以调用CreateTextServices函数的模块;
通过调用该CreateTextServices函数得到所述ITextServices接口指针的模块;
将CreateTextServices函数入口地址改写成跳转到该HOOK函数入口地址指令的模块;以及
将该HOOK函数返回,并将其返回值作为内部调用CreateTextServices函数返回值的模块。
12.如权利要求9所述的一种获取无窗口RichEdit控件文本内容的设备,其特征在于,所述RichEdit控件处理的消息包括以下消息中的一个或多个:
用于获取该RichEdit控件文本行数的EM_GETLINECOUNT消息;
用于得到行开头字符索引值的EM_LINEINDEX消息;
用于得到行长度的EM_LINELENGTH消息;以及
用于获取指定范围文本内容的EM_GETTEXTRANGE消息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201010161277 CN101834807B (zh) | 2010-04-28 | 2010-04-28 | 一种获取无窗口RichEdit控件文本内容的方法及其设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201010161277 CN101834807B (zh) | 2010-04-28 | 2010-04-28 | 一种获取无窗口RichEdit控件文本内容的方法及其设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101834807A true CN101834807A (zh) | 2010-09-15 |
CN101834807B CN101834807B (zh) | 2013-04-03 |
Family
ID=42718740
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 201010161277 Active CN101834807B (zh) | 2010-04-28 | 2010-04-28 | 一种获取无窗口RichEdit控件文本内容的方法及其设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101834807B (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103513970A (zh) * | 2012-06-15 | 2014-01-15 | 华润赛美科微电子(深圳)有限公司 | 用于集成电路自动分选机的数据提取方法及其系统 |
CN104965701A (zh) * | 2015-06-12 | 2015-10-07 | 北京奇虎科技有限公司 | 获取应用信息的方法及装置 |
CN106209594A (zh) * | 2016-07-20 | 2016-12-07 | 北京北信源软件股份有限公司 | 一种终端审计im即时消息的方法 |
CN106603540A (zh) * | 2016-12-21 | 2017-04-26 | 北京天融信网络安全技术有限公司 | 一种即时通信信息的监控方法及装置 |
CN107368380A (zh) * | 2017-09-05 | 2017-11-21 | 深圳市兆驰数码科技股份有限公司 | Windows系统下向任意窗口发送消息的方法 |
CN109104359A (zh) * | 2018-07-30 | 2018-12-28 | 五八有限公司 | 消息监控方法、装置、设备及存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1556631A (zh) * | 2004-01-09 | 2004-12-22 | 贵阳朗玛信息技术有限公司北京分公司 | 一种实现即时通信系统客户间情景聊天的方法 |
CN101261580A (zh) * | 2007-03-05 | 2008-09-10 | 阿里巴巴集团控股有限公司 | 一种处理数据的方法及系统 |
-
2010
- 2010-04-28 CN CN 201010161277 patent/CN101834807B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1556631A (zh) * | 2004-01-09 | 2004-12-22 | 贵阳朗玛信息技术有限公司北京分公司 | 一种实现即时通信系统客户间情景聊天的方法 |
CN101261580A (zh) * | 2007-03-05 | 2008-09-10 | 阿里巴巴集团控股有限公司 | 一种处理数据的方法及系统 |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103513970A (zh) * | 2012-06-15 | 2014-01-15 | 华润赛美科微电子(深圳)有限公司 | 用于集成电路自动分选机的数据提取方法及其系统 |
CN103513970B (zh) * | 2012-06-15 | 2016-12-21 | 华润赛美科微电子(深圳)有限公司 | 用于集成电路自动分选机的数据提取方法及其系统 |
CN104965701A (zh) * | 2015-06-12 | 2015-10-07 | 北京奇虎科技有限公司 | 获取应用信息的方法及装置 |
CN104965701B (zh) * | 2015-06-12 | 2018-01-16 | 北京奇虎科技有限公司 | 获取应用信息的方法及装置 |
US10671456B2 (en) | 2015-06-12 | 2020-06-02 | Beijing Qihoo Technology Company Limited | Method and device for acquiring application information |
CN106209594A (zh) * | 2016-07-20 | 2016-12-07 | 北京北信源软件股份有限公司 | 一种终端审计im即时消息的方法 |
CN106603540A (zh) * | 2016-12-21 | 2017-04-26 | 北京天融信网络安全技术有限公司 | 一种即时通信信息的监控方法及装置 |
CN107368380A (zh) * | 2017-09-05 | 2017-11-21 | 深圳市兆驰数码科技股份有限公司 | Windows系统下向任意窗口发送消息的方法 |
CN109104359A (zh) * | 2018-07-30 | 2018-12-28 | 五八有限公司 | 消息监控方法、装置、设备及存储介质 |
CN109104359B (zh) * | 2018-07-30 | 2021-04-06 | 五八有限公司 | 消息监控方法、装置、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN101834807B (zh) | 2013-04-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101834807B (zh) | 一种获取无窗口RichEdit控件文本内容的方法及其设备 | |
US7386859B2 (en) | Method and system for effective management of client and server processes | |
US8392553B2 (en) | Remote monitoring by tracking, storing, and analyzing user interactions with an operating system of a data processing device | |
US20070277127A1 (en) | Screensaver for individual application programs | |
US7962899B2 (en) | System for monitoring a target application and method thereof | |
US20080047010A1 (en) | Empirical privilege profiler (EPP) for software programs | |
US10084637B2 (en) | Automatic task tracking | |
WO2022142312A1 (zh) | 页面处理方法、装置、计算机设备及存储介质 | |
CN111930472A (zh) | 一种代码调试方法、装置、电子设备及存储介质 | |
CN111954072B (zh) | 一种多媒体播放方法、装置、多媒体播放器和介质 | |
CN113238815B (zh) | 一种接口访问控制方法、装置、设备及存储介质 | |
CN112799741A (zh) | 一种应用程序分身方法、装置、电子设备及存储介质 | |
US9507655B2 (en) | Tracking asynchronous entry points for an application | |
CN110188308B (zh) | 客户端自动打点上报方法、存储介质、设备及系统 | |
US20160321173A1 (en) | Automatic garbage collection thrashing monitoring | |
CN116132175B (zh) | 一种基于事件驱动网络引擎的远程后门检测方法 | |
KR20050045500A (ko) | 커널 기반의 침입탐지시스템에서의 침입탐지규칙 동적변경 방법 | |
CN113434217B (zh) | 漏洞扫描方法、装置、计算机设备及介质 | |
CN111124627A (zh) | 应用程序的调起者确定方法、装置、终端及存储介质 | |
CN113765731B (zh) | 信息处理方法、装置及计算机可读存储介质 | |
CN113961835A (zh) | 数据处理方法、装置、电子设备及存储介质 | |
CN112181535A (zh) | 一种接口调用方法、装置、服务器及存储介质 | |
CN114844691B (zh) | 一种数据处理方法、装置、电子设备及存储介质 | |
CN112527627B (zh) | 一种页面卡顿检测方法、装置、设备及介质 | |
US9838488B2 (en) | Agent asynchronous transaction monitor |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |