CN105468462A - 进程间通信身份验证及应用软件间通信方法和*** - Google Patents

进程间通信身份验证及应用软件间通信方法和*** Download PDF

Info

Publication number
CN105468462A
CN105468462A CN201410400524.XA CN201410400524A CN105468462A CN 105468462 A CN105468462 A CN 105468462A CN 201410400524 A CN201410400524 A CN 201410400524A CN 105468462 A CN105468462 A CN 105468462A
Authority
CN
China
Prior art keywords
message sink
forms
communication
thread
handle
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
Application number
CN201410400524.XA
Other languages
English (en)
Other versions
CN105468462B (zh
Inventor
凌星
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN201410400524.XA priority Critical patent/CN105468462B/zh
Publication of CN105468462A publication Critical patent/CN105468462A/zh
Application granted granted Critical
Publication of CN105468462B publication Critical patent/CN105468462B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Stored Programmes (AREA)

Abstract

本发明提供一种进程间通信身份验证及应用软件间通信方法和***;进程间通信身份验证方法包括:创建本进程的第一消息接收窗体,其中,所述第一消息接收窗体用于与通信对象进程的第二消息接收窗体进行通信;获取通信对象进程的通信连接请求,其中,所述通信连接请求包括第二消息接收窗体的窗体句柄;根据所述窗体句柄获取第二消息接收窗体的线程标识,并根据所述线程标识获取***进程中创建第二消息接收窗体的线程模块;根据所述线程模块验证所述通信对象进程的身份。通过本发明,能够确保准确知道与本进程通信对方的身份,提高了进程间通信时的身份验证的安全性和可靠性,通信时无需通过后台的接入,避免被第三方截获风险,提高了通信的安全性。

Description

进程间通信身份验证及应用软件间通信方法和***
技术领域
本发明涉及计算机互联网技术领域,特别是涉及一种进程间通信身份验证及应用软件间通信方法和***。
背景技术
随着计算机互联网技术的不断发展,各种各样功能的应用软件层出不穷,为用户带来了极大的应用体验。
在实际应用中,经常会涉及到应用软件间的信息通信,传统的应用软件之间的通信,一般都是通过后台交互来实现,在两个应用之间进行信息通信时,两个应用的进程间通信身份验证属于关键的技术点,假设为应用1和应用2,应用1的后台首先生成一个token(授权令牌),并生成一个授权token给应用2的后台;应用1的后台下发token给应用1,并将生成的授权token传递给应用2的后台;应用2的后台下发token给应用2;应用2将token传递给应用1,应用1检验token,通过则与应用2进行信息传递。
上述通信身份验证技术存在明显的缺点,由于是进程需要后台之间的交互,token在应用2与应用1之间传递存在被拦截的可能性,而且连接验证一般只在建立连接时,所以在连接建立以后,应用1无法通过上述验证确定与自己对接的是应用2,由此可见,该技术存在容易被第三方软件利用的危险,安全性低。
发明内容
基于此,有必要针对上述问题,提供一种安全性更高的进程间通信身份验证方法和***及应用软件间通信方法和***。
一种进程间通信身份验证方法,包括如下步骤:
创建本进程的第一消息接收窗体,其中,所述第一消息接收窗体用于与通信对象进程的第二消息接收窗体进行通信;
获取通信对象进程的通信连接请求,其中,所述通信连接请求包括第二消息接收窗体的窗体句柄;
根据所述窗体句柄获取第二消息接收窗体的线程标识,并根据所述线程标识获取***进程中创建第二消息接收窗体的线程模块;
根据所述线程模块验证所述通信对象进程的身份。
一种进程间通信身份验证***,包括:
第一窗体创建模块,用于创建本进程的第一消息接收窗体,其中,所述第一消息接收窗体用于与通信对象进程的第二消息接收窗体进行通信;
第一连接请求获取模块,用于获取通信对象进程的通信连接请求,其中,所述通信连接请求包括第二消息接收窗体的窗体句柄;
第一线程模块获取模块,用于根据所述窗体句柄获取第二消息接收窗体的线程标识,并根据所述线程标识获取***进程中创建第二消息接收窗体的线程模块;
第一对象身份验证模块,用于根据所述线程模块验证所述通信对象进程的身份。
上述进程间通信身份验证方法和***,首先进程通信双方创建相应的消息接收窗体,利用窗体标识的唯一性,通过获取线程相关标识信息,进而获取到创建通信对象窗体的真实体,验证创建窗体的真实体的身份,实现对通信对象进程的安全验证和识别,能够确保准确知道与本进程通信对方的身份,提高了进程间通信时的身份验证的安全性和可靠性。
一种应用软件间通信方法,包括如下步骤:
创建本应用软件的第一消息接收窗体,其中,所述第一消息接收窗体用于与通信对象软件的第二消息接收窗体进行通信;
获取通信对象软件的通信连接请求,其中,所述通信连接请求包括第二消息接收窗体的窗体句柄;
根据所述窗体句柄获取第二消息接收窗体的线程标识,并根据所述线程标识获取***进程中创建第二消息接收窗体的线程模块;
根据所述线程模块验证所述通信对象软件的身份;
验证通过后利用所述第一消息接收窗体与第二消息接收窗体进行信息传递。
一种应用软件间通信***,包括:
第二窗体创建模块,用于创建本应用软件的第一消息接收窗体,其中,所述第一消息接收窗体用于与通信对象软件的第二消息接收窗体进行通信;
第二连接请求获取模块,用于获取通信对象软件的通信连接请求,其中,所述通信连接请求包括第二消息接收窗体的窗体句柄;
第二线程模块获取模块,用于根据所述窗体句柄获取第二消息接收窗体的线程标识,并根据所述线程标识获取***进程中创建第二消息接收窗体的线程模块;
第二对象身份验证模块,用于根据所述线程模块验证所述通信对象软件的身份;
信息传递模块,用于验证通过后利用所述第一消息接收窗体与第二消息接收窗体进行信息传递。
上述应用软件间通信方法和***,是为应用软件通信双方创建相应的窗体,利用窗体标识的唯一性,通过获取线程相关标识信息,进而获取到创建通信对象窗体的真实体,验证创建窗体的真实体的身份,实现对通信对象软件的安全验证和识别,能够确保准确知道与本应用软件通信对方的身份,然后利用通过验证的窗体来进行消息传递,无需通过后台的接入,避免被第三方截获风险,提高了通信的安全性。
附图说明
图1为一个实施例的进程间通信身份验证方法流程图;
图2为进程间通信身份验证方法一个应用示例的时序图;
图3为一个实施例的进程间通信身份验证***结构示意图;
图4为一个实施例的第一线程模块获取模块结构示意图;
图5为一个实施例的应用软件间通信方法流程图;
图6为进程间通信身份验证方法一个应用示例的时序图;
图7为一个实施例的应用软件间通信***结构示意图;
图8为一个实施例的第一线程模块获取模块结构示意图;
图9为能实现本发明实施例的一个计算机***的模块图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
参考图1所示,图1为一个实施例的进程间通信身份验证方法流程图,包括如下步骤:
步骤S101,创建本进程的第一消息接收窗体,其中,所述第一消息接收窗体用于与通信对象进程的第二消息接收窗体进行通信。
在此步骤中,为本进程创建用于通信双方进行通信的消息接收窗体,这里可以采用windows***下WM_COPYDATA消息作为消息进程间的通信方式,实现本进程与通信对象进程的消息接收窗体进行通信。
步骤S102,获取通信对象进程的通信连接请求,其中,所述通信连接请求包括第二消息接收窗体的窗体句柄。
在此步骤中,属于建立通信连接过程,可以由本进程接收第二消息接收窗体带上窗体句柄的请求,窗体句柄是操作***生成的一种窗体标识,具有唯一性。在操作***内不能创建另一个具有相应窗体句柄的消息接收窗体。
步骤S103,根据所述窗体句柄获取第二消息接收窗体的线程标识(即线程ID),并根据所述线程标识获取***进程中创建第二消息接收窗体的线程模块。
在此步骤中,利用窗体标识的唯一性的特性,通过窗体句柄获取第二消息接收窗体的线程标识,通过获取线程相关标识信息,进而获取到对应在***进程中创建通信对象进程的消息接收窗体的线程模块,即创建与本进程进行通信的消息接收窗体的真实体。
对于根据窗体句柄获取消息接收窗体的线程标识,可以通过操作***相应的API(ApplicationProgrammingInterface,应用程序编程接口)得到消息接收窗体所在的线程标识。
例如,在windows***中,由***API直接支持,***内部维护一个从句柄到其线程标识与进程标识的映射表,其API如下:
DWORDGetWindowThreadProcessId//返回窗体句柄所在的线程标识
HWNDhWnd,//传入窗体句柄
LPDWORDlpdwProcessId//传出该句柄所在的进程标识;
通过调用windows***的上述API就可以直接得到窗体所在的线程标识。
在一个实施例中,对于步骤S103的根据线程标识获取创建第二消息接收窗体的线程模块的过程,可以包括如下步骤:
(a)根据所述线程标识查询线程信息获得相应线程的线程句柄。
线程句柄为一个线程信息对应的一个标识,通过线程句柄可以查询到相关的线程信息或操作线程。
在windows***中,其API如下:
HANDLEOpenThread//返回线程句柄
__inDWORDdwDesiredAccess,//(指明获取线程句柄的操作权限,此处为THREAD_QUERY_INFORMATION,即用于查询线程相关的信息)
__inBOOLbInheritHandle,,//忽略,此处为逻辑值FALSE
__inDWORDdwThreadId//传入线程标识;
通过调用windows***的上述API就可以查询到相应线程的线程句柄,此处是以查询权限获取到线程的句柄,由于在操作***中查询权限是一个比较低的权限,因此一般都不会失败。
(b)通过所述线程句柄获取所述线程对应到进程中的线程模块的起始地址,并根据所述起始地址获取线程模块的模块句柄。
这里是通过线程句柄来获取模块的起始地址,然后根据起始地址来获取到模块句柄。
在windows***中,对于获取模块的起始地址的方法,在可以由ntdll提供的函数实现,ntdll提供的API为“NtQueryInformationThread”,其函数原型如下:
NTSTATUS(WINAPI*NTQUERYINFORMATIONTHREAD
HANDLEThreadHandle,//线程句柄
ULONGThreadInformationClass,//(指明查询线程的起始地址,传入ThreadQuerySetWin32StartAddress)
PVOIDThreadInformation,//返回线程的起始地址信息
ULONGThreadInformationLength,//传入的ThreadInfomation的长度
PULONGReturnLength,//返回的长度)
通过上述API可获取到线程句柄对应到windows***进程里的模块起始地址。
在获取到模块起始地址后,通过线程模块所在进程中的起始地址来获取模块的句柄,模块句柄即唯一标识一个线程模块,通过模块句柄可以操作线程模块、获取线程模块信息等,在windows***中,其API如下:
BOOLGetModuleHandleExW(
DWORDdwFlags,
//(值为GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS,指明通过起始地址获取模块句柄)
LPCWSTRlpModuleName,//(传入起始地址)
HMODULE*phModule)//返回的模块句柄
通过调用windows***的上述API就可以根据线程模块的起始地址来获取模块句柄。
(c)根据所述模块句柄确定所述线程模块所在的路径,并根据所述路径获取创建第二消息接收窗体的线程模块。
在拿到模块句柄后,通过模块句柄就可以获取到线程模块所在的路径,在windows***中,由API直接支持,其API如下:
DWORDGetModuleFileNameW
HMODULEhModule,//传入模块句柄
LPWSTRlpFilename,//返回线程模块所在的路径
DWORDnSize//路径的大小;
通过调用windows***的上述API就可以根据线程模块所在的路径,确定到创建第二消息接收窗体的线程模块。
通过上述步骤最终完成了从窗体句柄到窗体句柄所在线程模块路径的获取,确定创建第二消息接收窗体的线程模块。
步骤S104,根据所述线程模块验证所述通信对象进程的身份。
在此步骤中,根据获取到的线程模块来验证创建消息接收窗体的真实体的身份,实现对通信对象进程的安全验证和识别,能够确保准确知道与本进程通信对方的身份,提高了进程间通信时的身份验证的安全性和可靠性。
在一个实施例中,步骤S104的验证过程,可以包括如下步骤:
对所述线程模块进行数字签名检验,根据检验的签名信息确定所述通信对象进程的身份。
上述实施例,结合数字签名技术来实现进程间身份的安全识别,进一步提高了身份验证的安全性和可靠性。
综合上述各实施例的技术方案,首先进程通信双方创建相应的消息接收窗体,利用窗体标识的唯一性,从窗体句柄获取到线程标识,由线程标识获取到线程句柄,再通过线程句柄获取到线程模块的路径,从而确定到创建第二消息接收窗体的线程模块,准确地找到创建通信对象窗体的真实体,进一步地还可以结合数字签名验证技术,验证创建窗体的真实体的身份,实现对通信对象进程的安全验证和识别,能够确保准确知道与本进程通信对方的身份,提高了进程间通信时的身份验证的安全性和可靠性。
为了更加清晰本发明的技术方案,下面结合附图阐述进程间通信身份验证方法一个应用示例。
参考图2所示,图2为进程间通信身份验证方法一个应用示例的时序图,是实现本进程(图中第一进程)与通信对象进程(图中第二进程)间的身份验证过程,包括如下步骤:
(1)第一进程创建第一消息接收窗体;
(2)第二进程创建第二消息接收窗体;
(3)第二进程发送带上窗体句柄的请求建立连接消息至第一进程;
(4)第一进程通过窗体句柄获取线程标识,并通过线程标识确定创建第二消息接收窗体的线程模块;
(5)第一进程检验线程模块的数字签名,验证第二进程的身份。
参考图3所示,图3为一个实施例的进程间通信身份验证***结构示意图,包括:第一窗体创建模块101、第一连接请求获取模块102、第一线程模块获取模块103和第一对象身份验证模块104。
所述第一窗体创建模块101,用于创建本进程的第一消息接收窗体,其中,所述第一消息接收窗体用于与通信对象进程的第二消息接收窗体进行通信。
所述第一连接请求获取模块102,用于获取通信对象进程的通信连接请求,其中,所述通信连接请求包括第二消息接收窗体的窗体句柄。
所述第一线程模块获取模块103,用于根据所述窗体句柄获取第二消息接收窗体的线程标识,并根据所述线程标识获取***进程中创建第二消息接收窗体的线程模块。
在一个实施例中,参考图4所示,图4为一个实施例的第一线程模块获取模块103结构示意图,所述第一线程模块获取模块103可以进一步包括:
第一线程标记获取单元1031,用于根据所述窗体句柄获取第二消息接收窗体的线程标识;
第一线程句柄获取单元1032,用于根据所述线程标识查询线程信息获得相应线程的线程句柄;
第一模块句柄获取单元1033,用于通过所述线程句柄获取所述线程对应到进程中的线程模块的起始地址,并根据所述起始地址获取线程模块的模块句柄;
第一线程模块获取单元1034,用于根据所述模块句柄确定所述线程模块所在的路径,并根据所述路径获取创建第二消息接收窗体的线程模块。
所述第一对象身份验证模块104,用于根据所述线程模块验证所述通信对象进程的身份。
在一个实施例中,所述第一对象身份验证模块104,进一步用于对所述线程模块进行数字签名检验,根据检验的签名信息确定所述通信对象进程的身份。
本发明的进程间通信身份验证***与本发明的进程间通信身份验证方法一一对应,在上述进程间通信身份验证方法的实施例阐述的技术特征及其有益效果均适用于进程间通信身份验证***的实施例中,特此声明。
参考图5所示,图5为一个实施例的应用软件间通信方法流程图,包括如下步骤:
步骤S201,创建本应用软件的第一消息接收窗体,其中,所述第一消息接收窗体用于与通信对象软件的第二消息接收窗体进行通信。
在此步骤中,为本应用软件创建用于通信双方进行通信的消息接收窗体,这里可以采用windows***下WM_COPYDATA消息作为消息进程间的通信方式,实现本应用软件与通信对象软件的消息接收窗体进行通信。
在一个实施例中,步骤S201的过程还可以包括如下步骤:
在所述通信对象软件中注入本应用软件的进程,并通过所述通信对象软件检验本通信对象软件的数字签名,检验通过后创建通信对象软件的第二消息接收窗体。
上述实施例的方案,通过在通信对象软件中注入本应用软件的进程,并结合数字签名验证技术,验证后再创建通信对象软件相应的第二消息接收窗体,提高了通信双方身份验证的安全性和可靠性。
步骤S202,获取通信对象软件的通信连接请求,其中,所述通信连接请求包括第二消息接收窗体的窗体句柄。
在此步骤中,属于建立通信连接过程,可以由本应用软件接收第二消息接收窗体带上窗体句柄的请求,窗体句柄是操作***生成的一种窗体标识,具有唯一性。在操作***内不能创建另一个具有相应窗体句柄的消息接收窗体。
步骤S203,根据所述窗体句柄获取第二消息接收窗体的线程标识,并根据所述线程标识获取***进程中创建第二消息接收窗体的线程模块。
在此步骤中,利用窗体标识的唯一性的特性,通过窗体句柄获取第二消息接收窗体的线程标识,通过获取线程相关标识信息,进而获取到对应在***进程中创建通信对象软件的消息接收窗体的线程模块,即创建与本进程进行通信的消息接收窗体的真实体。
对于根据窗体句柄获取消息接收窗体的线程标识,可以通过操作***相应的API(ApplicationProgrammingInterface,应用程序编程接口)得到消息接收窗体所在的线程标识。
例如,在windows***中,由***API直接支持,***内部维护一个从句柄到其线程标识与进程标识的映射表,其API如下:
DWORDGetWindowThreadProcessId//返回窗体句柄所在的线程标识
HWNDhWnd,//传入窗体句柄
LPDWORDlpdwProcessId//传出该句柄所在的进程标识;
通过调用windows***的上述API就可以直接得到窗体所在的线程标识。
在一个实施例中,对于步骤S103的根据线程标识获取创建第二消息接收窗体的线程模块的过程,可以包括如下步骤:
(a)根据所述线程标识查询线程信息获得相应线程的线程句柄。
线程句柄为一个线程信息对应的一个标识,通过线程句柄可以查询到相关的线程信息或操作线程。
在windows***中,其API如下:
HANDLEOpenThread//返回线程句柄
__inDWORDdwDesiredAccess,//(指明获取线程句柄的操作权限,此处为THREAD_QUERY_INFORMATION,即用于查询线程相关的信息)
__inBOOLbInheritHandle,,//忽略,此处为逻辑值FALSE
__inDWORDdwThreadId//传入线程标识;
通过调用windows***的上述API就可以查询到相应线程的线程句柄,此处是以查询权限获取到线程的句柄,由于在操作***中查询权限是一个比较低的权限,因此一般都不会失败。
(b)通过所述线程句柄获取所述线程对应到进程中的线程模块的起始地址,并根据所述起始地址获取线程模块的模块句柄。
这里是通过线程句柄来获取模块的起始地址,然后根据起始地址来获取到模块句柄。
在windows***中,对于获取模块的起始地址的方法,在可以由ntdll提供的函数实现,ntdll提供的API为“NtQueryInformationThread”,其函数原型如下:
NTSTATUS(WINAPI*NTQUERYINFORMATIONTHREAD
HANDLEThreadHandle,//线程句柄
ULONGThreadInformationClass,//(指明查询线程的起始地址,传入ThreadQuerySetWin32StartAddress)
PVOIDThreadInformation,//返回线程的起始地址信息
ULONGThreadInformationLength,//传入的ThreadInfomation的长度
PULONGReturnLength,//返回的长度)
通过上述API可获取到线程句柄对应到windows***进程里的模块起始地址。
在获取到模块起始地址后,通过线程模块所在进程中的起始地址来获取模块的句柄,模块句柄即唯一标识一个线程模块,通过模块句柄可以操作线程模块、获取线程模块信息等,在windows***中,其API如下:
BOOLGetModuleHandleExW(
DWORDdwFlags,
//(值为GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS,指明通过起始地址获取模块句柄)
LPCWSTRlpModuleName,//(传入起始地址)
HMODULE*phModule)//返回的模块句柄
通过调用windows***的上述API就可以根据线程模块的起始地址来获取模块句柄。
(c)根据所述模块句柄确定所述线程模块所在的路径,并根据所述路径获取创建第二消息接收窗体的线程模块。
在拿到模块句柄后,通过模块句柄就可以获取到线程模块所在的路径,在windows***中,由API直接支持,其API如下:
DWORDGetModuleFileNameW
HMODULEhModule,//传入模块句柄
LPWSTRlpFilename,//返回线程模块所在的路径
DWORDnSize//路径的大小;
通过调用windows***的上述API就可以根据线程模块所在的路径,确定到创建第二消息接收窗体的线程模块。
通过上述步骤最终完成了从窗体句柄到窗体句柄所在线程模块路径的获取,确定创建第二消息接收窗体的线程模块。
步骤S204,根据所述线程模块验证所述通信对象软件的身份。
在此步骤中,根据获取到的线程模块来验证创建消息接收窗体的真实体的身份,实现对通信对象软件的安全验证和识别,能够确保准确知道与本应用软件通信对方的身份,提高了应用软件间通信时的安全性和可靠性。
在一个实施例中,步骤S104的验证过程,可以包括如下步骤:
对所述线程模块进行数字签名检验,根据检验的签名信息确定所述通信对象软件的身份。
上述实施例,结合数字签名技术来实现应用软件间通信时身份的安全识别,进一步提高了通过过程中的安全性和可靠性,避免了通信信息被第三方截获的风险。
步骤S205,验证通过后利用所述第一消息接收窗体与第二消息接收窗体进行信息传递。
在此步骤中,主要是在验证通过后,利用应用软件双方的消息接收窗体来进行相互传递。
在一个实施例中,步骤S205信息传递过程,可以包括如下步骤:
验证通过后建立所述第一消息接收窗体与第二消息接收窗体之间的通信通道;利用第一消息接收窗体并根据第二消息接收窗体的窗体句柄发送消息,以及接收第二消息接收窗体发送的信息。
对于本发明的应用软件间通信方法,所提及的应用软件可以包括即时通讯软件、输入法软件等。
综合上述各实施例的通信方案,两个应用软件间进行通信时,无线后台进行交互,可以直接建立两个应用软件之间的安全的通信通道,结合数字签名验证技术进行通信对象的验证,提高了通信安全性和可靠性,同时也节约了后台服务的成本。
例如,作为一个深受大众欢迎的游戏平台的QQ游戏软件,在为用户提供服务时,在QQ软件上面用户可以邀请好友参加游戏,好友点击相应邀请拉起游戏服务,好友的游戏进度可以在QQ软件与QQ游戏之间进行共享,采用本发明的技术方案,在应用软件间通信时,可以直接建立QQ软件与QQ游戏之间的安全通道,实现高效快捷、安全可靠的通信服务。
又如,QQ软件中,QQ表情信息是用户经常使用的聊天表情,具有非常高的用户活跃度,是用户表达自己言语与情感的一种常用方式。输入法软件作为用户聊天的基本输入工具,在实际使用中,如果两者需要同步某些信息是,如上述的QQ表情信息,则可以通过本发明的技术方案,通过建立QQ软件与输入法软件之间的安全通道,从而可以高效快捷、安全可靠地将QQ软件中的QQ表情信息同步到输入法软件中,从而为用户提供更好的应用体验。
为了更加清晰本发明的技术方案,下面结合附图阐述进程间应用软件间通信方法一个应用示例。
参考图6所示,图6为进程间通信身份验证方法一个应用示例的时序图,本应用示例是以QQ软件与输入法软件之间进行QQ表情信息的同步进行举例;具体包括如下步骤:
(1)QQ软件创建第一消息接收窗体;
(2)输入法软件注入QQ软件的进程;
(3)输入法软件检验QQ软件的数字签名,确认QQ软件的安全性;
(4)输入法软件创建第二消息接收窗体;
(5)输入法软件向QQ传递请求连接信息,带上第二消息接收窗体的窗体句柄;
(6)QQ软件通过窗体句柄获取其所在的线程标识,再通过线程标识获取创建第二消息接收窗体的线程模块;
(7)QQ软件检验线程模块的数字签名;
(8)QQ软件检验通过后,QQ软件与验证的窗体句柄的消息接收窗体同步QQ表情信息。
在上述应用示例中,由于窗体句柄拥有一个标识的名称(一般用两个字符串标识),这个名称可以由客户端指定。比如,QQ软件的窗体句柄可以用“QQWnd”&&“ReceiverMsg”表示。这里QQ软件和输入法软件可以先约定好名称,即QQ软件创建的窗体句柄的名称是固定的,输入法软件就可以通过这个名称找到QQ软件的窗体句柄。
参考图7所示,图7为一个实施例的应用软件间通信***结构示意图,包括:第二窗体创建模块201、第二连接请求获取模块202、第二线程模块获取模块203、第二对象身份验证模块204以及信息传递模块205。
所述第二窗体创建模块201,用于创建本应用软件的第一消息接收窗体,其中,所述第一消息接收窗体用于与通信对象软件的第二消息接收窗体进行通信。
在一个实施例中,所述第二窗体创建模块201,还用于在所述通信对象软件中注入本应用软件的进程,并通过所述通信对象软件检验本通信对象软件的数字签名,检验通过后创建通信对象软件的第二消息接收窗体。
所述第二连接请求获取模块202,用于获取通信对象软件的通信连接请求,其中,所述通信连接请求包括第二消息接收窗体的窗体句柄。
所述第二线程模块获取模块203,用于根据所述窗体句柄获取第二消息接收窗体的线程标识,并根据所述线程标识获取***进程中创建第二消息接收窗体的线程模块。
在一个实施例中,参考图8所示,图8为一个实施例的第二线程模块获取模块203结构示意图,所述第二线程模块获取模块203可以进一步包括:
第二线程标记获取单元2031,用于根据所述窗体句柄获取第二消息接收窗体的线程标识;
第二线程句柄获取单元2032,用于根据所述线程标识查询线程信息获得相应线程的线程句柄;
第二模块句柄获取单元2033,用于通过所述线程句柄获取所述线程对应到进程中的线程模块的起始地址,并根据所述起始地址获取线程模块的模块句柄;
第二线程模块获取单元2034,用于根据所述模块句柄确定所述线程模块所在的路径,并根据所述路径获取创建第二消息接收窗体的线程模块。
所述第二对象身份验证模块204,用于根据所述线程模块验证所述通信对象软件的身份。
在一个实施例中,所述第二对象身份验证模块204,进一步用于对所述线程模块进行数字签名检验,根据检验的签名信息确定所述通信对象软件的身份。
所述信息传递模块205,用于验证通过后利用所述第一消息接收窗体与第二消息接收窗体进行信息传递。
在一个实施例中,所述信息传递模块205,进一步用于验证通过后建立所述第一消息接收窗体与第二消息接收窗体之间的通信通道;利用第一消息接收窗体并根据第二消息接收窗体的窗体句柄发送消息,以及接收第二消息接收窗体发送的信息。
作为一个实施例,本发明所述的应用软件间通信***中的应用软件,可以包括即时通讯软件(如QQ软件)、输入法软件(如搜狗输入法)等。
本发明的应用软件间通信***与本发明的应用软件间通信方法一一对应,在上述应用软件间通信方法的实施例阐述的技术特征及其有益效果均适用于应用软件间通信***的实施例中,特此声明。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-OnlyMemory,ROM)或随机存储记忆体(RandomAccessMemory,RAM)等。
图9为能实现本发明实施例的一个计算机***的模块图。该计算机***900只是一个适用于本发明的计算机环境的示例,不能认为是提出了对本发明的使用范围的任何限制。计算机***900也不能解释为需要依赖于或具有图示的示例性的计算机***900中的一个或多个部件的组合。
图9中示出的计算机***900是一个适合用于本发明的计算机***的例子。具有不同子***配置的其它架构也可以使用。
如图9所示,计算机***900包括处理器910、存储器920和***总线922。包括存储器920和处理器910在内的各种***组件连接到***总线922上。处理器910是一个用来通过计算机***中基本的算术和逻辑运算来执行计算机程序指令的硬件。存储器920是一个用于临时或永久性存储计算程序或数据(例如,程序状态信息)的物理设备。***总线920可以为以下几种类型的总线结构中的任意一种,包括存储器总线或存储控制器、外设总线和局部总线。处理器910和存储器920可以通过***总线922进行数据通信。其中存储器920包括只读存储器(ROM)或闪存(图中都未示出),以及随机存取存储器(RAM),RAM通常是指加载了操作***和应用程序的主存储器。
计算机***900还包括显示接口930(例如,图形处理单元)、显示设备940(例如,液晶显示器)、音频接口950(例如,声卡)以及音频设备960(例如,扬声器)。显示设备940和音频设备960是用于体验多媒体内容的媒体设备。
计算机***900一般包括一个存储设备970。存储设备970可以从多种计算机可读介质中选择,计算机可读介质是指可以通过计算机***900访问的任何可利用的介质,包括移动的和固定的两种介质。例如,计算机可读介质包括但不限于,闪速存储器(微型SD卡),CD-ROM,数字通用光盘(DVD)或其它光盘存储、磁带盒、磁带、磁盘存储或其它磁存储设备,或者可用于存储所需信息并可由计算机***900访问的任何其它介质。
计算机***900还包括输入装置980和输入接口990(例如,IO控制器)。用户可以通过输入装置980,如键盘、鼠标、显示装置940上的触摸面板设备,输入指令和信息到计算机***900中。输入装置980通常是通过输入接口990连接到***总线922上的,但也可以通过其它接口或总线结构相连接,如通用串行总线(USB)。
计算机***900可在网络环境中与一个或者多个网络设备进行逻辑连接。网络设备可以是个人电脑、服务器、路由器、智能电话、平板电脑或者其它公共网络节点。计算机***900通过局域网(LAN)接口1000或者移动通信单元1010与网络设备相连接。局域网(LAN)是指在有限区域内,例如家庭、学校、计算机实验室、或者使用网络媒体的办公楼,互联组成的计算机网络。WiFi和双绞线布线以太网是最常用的构建局域网的两种技术。WiFi是一种能使计算机***900间交换数据或通过无线电波连接到无线网络的技术。移动通信单元1010能在一个广阔的地理区域内移动的同时通过无线电通信线路接听和拨打电话。除了通话以外,移动通信单元1010也支持在提供移动数据服务的2G,3G或4G蜂窝通信***中进行互联网访问。
应当指出的是,其它包括比计算机***900更多或更少的子***的计算机***也能适用于发明。
如上面详细描述的,适用于本发明的计算机***900能执行进程间通信身份验证方法及应用软件间通信方法的指定操作。计算机***900通过处理器910运行在计算机可读介质中的软件指令的形式来执行这些操作。这些软件指令可以从存储设备970或者通过局域网接口1000从另一设备读入到存储器920中。存储在存储器920中的软件指令使得处理器910执行上述的进程间通信身份验证方法及应用软件间通信方法。此外,通过硬件电路或者硬件电路结合软件指令也能同样实现本发明。因此,实现本发明并不限于任何特定硬件电路和软件的组合。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。

Claims (18)

1.一种进程间通信身份验证方法,其特征在于,包括如下步骤:
创建本进程的第一消息接收窗体,其中,所述第一消息接收窗体用于与通信对象进程的第二消息接收窗体进行通信;
获取通信对象进程的通信连接请求,其中,所述通信连接请求包括第二消息接收窗体的窗体句柄;
根据所述窗体句柄获取第二消息接收窗体的线程标识,并根据所述线程标识获取***进程中创建第二消息接收窗体的线程模块;
根据所述线程模块验证所述通信对象进程的身份。
2.根据权利要求1所述的进程间通信身份验证方法,其特征在于,根据所述线程标识获取***进程中创建第二消息接收窗体的线程模块的步骤:
根据所述线程标识查询线程信息获得相应线程的线程句柄;
通过所述线程句柄获取所述线程对应到进程中的线程模块的起始地址,并根据所述起始地址获取线程模块的模块句柄;
根据所述模块句柄确定所述线程模块所在的路径,并根据所述路径获取创建第二消息接收窗体的线程模块。
3.根据权利要求1所述的进程间通信身份验证方法,其特征在于,根据所述线程模块验证所述通信对象进程的身份的步骤包括:
对所述线程模块进行数字签名检验,根据检验的签名信息确定所述通信对象进程的身份。
4.一种应用软件间通信方法,其特征在于,包括如下步骤:
创建本应用软件的第一消息接收窗体,其中,所述第一消息接收窗体用于与通信对象软件的第二消息接收窗体进行通信;
获取通信对象软件的通信连接请求,其中,所述通信连接请求包括第二消息接收窗体的窗体句柄;
根据所述窗体句柄获取第二消息接收窗体的线程标识,并根据所述线程标识获取***进程中创建第二消息接收窗体的线程模块;
根据所述线程模块验证所述通信对象软件的身份;
验证通过后利用所述第一消息接收窗体与第二消息接收窗体进行信息传递。
5.根据权利要求4所述的应用软件间通信方法,其特征在于,还包括:
在所述通信对象软件中注入本应用软件的进程,并通过所述通信对象软件检验本通信对象软件的数字签名,检验通过后创建通信对象软件的第二消息接收窗体。
6.根据权利要求4所述的应用软件间通信方法,其特征在于,根据所述线程标识获取***进程中创建第二消息接收窗体的线程模块的步骤:
根据所述线程标识查询线程信息获得相应线程的线程句柄;
通过所述线程句柄获取所述线程对应到进程中的线程模块的起始地址,并根据所述起始地址获取线程模块的模块句柄;
根据所述模块句柄确定所述线程模块所在的路径,并根据所述路径获取创建第二消息接收窗体的线程模块。
7.根据权利要求4所述的应用软件间通信方法,其特征在于,根据所述线程模块验证所述通信对象软件的身份的步骤包括:
对所述线程模块进行数字签名检验,根据检验的签名信息确定所述通信对象软件的身份。
8.根据权利要求4所述的应用软件间通信方法,其特征在于,验证通过后利用所述第一消息接收窗体与第二消息接收窗体进行信息传递的步骤包括:
验证通过后建立所述第一消息接收窗体与第二消息接收窗体之间的通信通道;
利用第一消息接收窗体并根据第二消息接收窗体的窗体句柄发送消息,以及接收第二消息接收窗体发送的信息。
9.根据权利要求4至8任一项所述的应用软件间通信方法,其特征在于,所述应用软件包括即时通讯软件、输入法软件。
10.一种进程间通信身份验证***,其特征在于,包括:
第一窗体创建模块,用于创建本进程的第一消息接收窗体,其中,所述第一消息接收窗体用于与通信对象进程的第二消息接收窗体进行通信;
第一连接请求获取模块,用于获取通信对象进程的通信连接请求,其中,所述通信连接请求包括第二消息接收窗体的窗体句柄;
第一线程模块获取模块,用于根据所述窗体句柄获取第二消息接收窗体的线程标识,并根据所述线程标识获取***进程中创建第二消息接收窗体的线程模块;
第一对象身份验证模块,用于根据所述线程模块验证所述通信对象进程的身份。
11.根据权利要求10所述的进程间通信身份验证***,其特征在于,所述第一线程模块获取模块包括:
第一线程标记获取单元,用于根据所述窗体句柄获取第二消息接收窗体的线程标识;
第一线程句柄获取单元,用于根据所述线程标识查询线程信息获得相应线程的线程句柄;
第一模块句柄获取单元,用于通过所述线程句柄获取所述线程对应到进程中的线程模块的起始地址,并根据所述起始地址获取线程模块的模块句柄;
第一线程模块获取单元,用于根据所述模块句柄确定所述线程模块所在的路径,并根据所述路径获取创建第二消息接收窗体的线程模块。
12.根据权利要求10所述的进程间通信身份验证***,其特征在于,所述第一对象身份验证模块,进一步用于对所述线程模块进行数字签名检验,根据检验的签名信息确定所述通信对象进程的身份。
13.一种应用软件间通信***,其特征在于,包括:
第二窗体创建模块,用于创建本应用软件的第一消息接收窗体,其中,所述第一消息接收窗体用于与通信对象软件的第二消息接收窗体进行通信;
第二连接请求获取模块,用于获取通信对象软件的通信连接请求,其中,所述通信连接请求包括第二消息接收窗体的窗体句柄;
第二线程模块获取模块,用于根据所述窗体句柄获取第二消息接收窗体的线程标识,并根据所述线程标识获取***进程中创建第二消息接收窗体的线程模块;
第二对象身份验证模块,用于根据所述线程模块验证所述通信对象软件的身份;
信息传递模块,用于验证通过后利用所述第一消息接收窗体与第二消息接收窗体进行信息传递。
14.根据权利要求13所述的应用软件间通信***,其特征在于,所述第二窗体创建模块,还用于在所述通信对象软件中注入本应用软件的进程,并通过所述通信对象软件检验本通信对象软件的数字签名,检验通过后创建通信对象软件的第二消息接收窗体。
15.根据权利要求13所述的应用软件间通信***,其特征在于,所述第二线程模块获取模块包括:
第二线程标记获取单元,用于根据所述窗体句柄获取第二消息接收窗体的线程标识;
第二线程句柄获取单元,用于根据所述线程标识查询线程信息获得相应线程的线程句柄;
第二模块句柄获取单元,用于通过所述线程句柄获取所述线程对应到进程中的线程模块的起始地址,并根据所述起始地址获取线程模块的模块句柄;
第二线程模块获取单元,用于根据所述模块句柄确定所述线程模块所在的路径,并根据所述路径获取创建第二消息接收窗体的线程模块。
16.根据权利要求13所述的应用软件间通信***,其特征在于,所述第二对象身份验证模块,进一步用于对所述线程模块进行数字签名检验,根据检验的签名信息确定所述通信对象软件的身份。
17.根据权利要求13所述的应用软件间通信***,其特征在于,所述信息传递模块,进一步用于验证通过后建立所述第一消息接收窗体与第二消息接收窗体之间的通信通道;利用第一消息接收窗体并根据第二消息接收窗体的窗体句柄发送消息,以及接收第二消息接收窗体发送的信息。
18.根据权利要求13至17任一项所述的应用软件间通信***,其特征在于,所述应用软件包括即时通讯软件、输入法软件。
CN201410400524.XA 2014-08-14 2014-08-14 进程间通信身份验证及应用软件间通信方法和*** Active CN105468462B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410400524.XA CN105468462B (zh) 2014-08-14 2014-08-14 进程间通信身份验证及应用软件间通信方法和***

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410400524.XA CN105468462B (zh) 2014-08-14 2014-08-14 进程间通信身份验证及应用软件间通信方法和***

Publications (2)

Publication Number Publication Date
CN105468462A true CN105468462A (zh) 2016-04-06
CN105468462B CN105468462B (zh) 2020-11-03

Family

ID=55606197

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410400524.XA Active CN105468462B (zh) 2014-08-14 2014-08-14 进程间通信身份验证及应用软件间通信方法和***

Country Status (1)

Country Link
CN (1) CN105468462B (zh)

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107526972A (zh) * 2016-06-21 2017-12-29 福建省天奕网络科技有限公司 进程间大数据量参数隐藏传递的方法及其***
CN108347471A (zh) * 2018-01-02 2018-07-31 武汉斗鱼网络科技有限公司 获取第三方用户信息的方法、装置及***
CN109493546A (zh) * 2018-10-30 2019-03-19 同程网络科技股份有限公司 一种收银方法、收银***及收银装置
CN110018911A (zh) * 2018-01-09 2019-07-16 阿里巴巴集团控股有限公司 进程管理及进程间通信方法、装置、计算设备及存储介质
CN111736898A (zh) * 2020-06-24 2020-10-02 广联达科技股份有限公司 软件窗口嵌入方法、***和可读存储介质
CN112532561A (zh) * 2019-08-28 2021-03-19 斑马智行网络(香港)有限公司 用于实现设备间访问的方法、装置、***及存储介质
CN112631802A (zh) * 2019-04-29 2021-04-09 杭州涂鸦信息技术有限公司 一种线程间通信方法及相关装置
CN112882886A (zh) * 2019-11-29 2021-06-01 北京沃东天骏信息技术有限公司 一种软件使用时长的统计方法和装置
CN114844672A (zh) * 2022-03-22 2022-08-02 华为技术有限公司 一种应用可信身份的确认方法、管理单元及设备
CN116320644A (zh) * 2022-12-23 2023-06-23 北京奇艺世纪科技有限公司 对象推荐方法、装置、电子设备及存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101425027A (zh) * 2008-11-20 2009-05-06 上海交通大学 基于tpm的虚拟机安全协议方法及***
US20110271087A1 (en) * 2010-04-30 2011-11-03 International Business Machines Corporation Embedding process identification information in a pathname to indicate process status
CN103150505A (zh) * 2007-10-15 2013-06-12 北京瑞星信息技术有限公司 对目标进程进行保护的方法
CN103631664A (zh) * 2013-12-09 2014-03-12 北京奇虎科技有限公司 一种进程间的通信方法和装置
CN103795684A (zh) * 2012-10-26 2014-05-14 珠海市君天电子科技有限公司 一种防止透明窗体类病毒盗取即时通讯工具账号密码的方法及***

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103150505A (zh) * 2007-10-15 2013-06-12 北京瑞星信息技术有限公司 对目标进程进行保护的方法
CN101425027A (zh) * 2008-11-20 2009-05-06 上海交通大学 基于tpm的虚拟机安全协议方法及***
US20110271087A1 (en) * 2010-04-30 2011-11-03 International Business Machines Corporation Embedding process identification information in a pathname to indicate process status
CN103795684A (zh) * 2012-10-26 2014-05-14 珠海市君天电子科技有限公司 一种防止透明窗体类病毒盗取即时通讯工具账号密码的方法及***
CN103631664A (zh) * 2013-12-09 2014-03-12 北京奇虎科技有限公司 一种进程间的通信方法和装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
用户"僵哥": ""通过线程ID获得线程的模块名和线程起始地址,该如何做?"", 《CSDN论坛》 *

Cited By (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107526972A (zh) * 2016-06-21 2017-12-29 福建省天奕网络科技有限公司 进程间大数据量参数隐藏传递的方法及其***
CN108347471A (zh) * 2018-01-02 2018-07-31 武汉斗鱼网络科技有限公司 获取第三方用户信息的方法、装置及***
CN110018911A (zh) * 2018-01-09 2019-07-16 阿里巴巴集团控股有限公司 进程管理及进程间通信方法、装置、计算设备及存储介质
CN110018911B (zh) * 2018-01-09 2024-01-23 斑马智行网络(香港)有限公司 进程管理及进程间通信方法、装置、计算设备及存储介质
CN109493546A (zh) * 2018-10-30 2019-03-19 同程网络科技股份有限公司 一种收银方法、收银***及收银装置
CN112631802A (zh) * 2019-04-29 2021-04-09 杭州涂鸦信息技术有限公司 一种线程间通信方法及相关装置
CN112631802B (zh) * 2019-04-29 2024-04-12 杭州涂鸦信息技术有限公司 一种线程间通信方法及相关装置
CN112532561A (zh) * 2019-08-28 2021-03-19 斑马智行网络(香港)有限公司 用于实现设备间访问的方法、装置、***及存储介质
CN112882886A (zh) * 2019-11-29 2021-06-01 北京沃东天骏信息技术有限公司 一种软件使用时长的统计方法和装置
CN111736898A (zh) * 2020-06-24 2020-10-02 广联达科技股份有限公司 软件窗口嵌入方法、***和可读存储介质
CN111736898B (zh) * 2020-06-24 2024-06-14 广联达科技股份有限公司 软件窗口嵌入方法、***和可读存储介质
CN114844672A (zh) * 2022-03-22 2022-08-02 华为技术有限公司 一种应用可信身份的确认方法、管理单元及设备
CN114844672B (zh) * 2022-03-22 2023-08-22 华为技术有限公司 一种应用可信身份的确认方法、管理单元及设备
CN116320644A (zh) * 2022-12-23 2023-06-23 北京奇艺世纪科技有限公司 对象推荐方法、装置、电子设备及存储介质

Also Published As

Publication number Publication date
CN105468462B (zh) 2020-11-03

Similar Documents

Publication Publication Date Title
CN105468462A (zh) 进程间通信身份验证及应用软件间通信方法和***
US9979497B2 (en) Audio playing method and apparatus based on Bluetooth connection
CN110365491B (zh) 业务处理方法、装置、设备、存储介质以及数据共享***
CN109068179B (zh) 一种多平台直播方法、计算机装置及计算机可读存储介质
CN111066284B (zh) 一种业务证书管理方法、终端及服务器
CN110351269B (zh) 通过第三方服务器登录开放平台的方法
US9635018B2 (en) User identity verification method and system, password protection apparatus and storage medium
KR101577920B1 (ko) 위치-기반 그룹 생성 방법, 장치 및 시스템
CN105282088A (zh) 验证服务器控制方法及***,验证控制方法及***
CN104767713B (zh) 账号绑定的方法、服务器及***
CN107222485A (zh) 一种授权方法以及相关设备
US11238148B2 (en) Location-based, context-aware challenge-response authentication
US10673931B2 (en) Synchronizing method, terminal, and server
CN109413096A (zh) 一种多应用的登录方法及装置
CN104735657B (zh) 安全终端验证方法、无线接入点绑定方法、装置及***
CN105022939B (zh) 信息验证方法及装置
CN104796391A (zh) 签到验证方法以及签到验证客户端、服务器、***和装置
CN104144106A (zh) 一种消息转发方法、装置及***
CN112822161B (zh) 一种实现会议消息同步的方法与设备
EP3008876B1 (en) Roaming internet-accessible application state across trusted and untrusted platforms
CN106254328B (zh) 一种访问控制方法及装置
CN115801299B (zh) 元宇宙身份认证方法、装置、设备及存储介质
CN111404695B (zh) 令牌请求验证方法和装置
US10958726B2 (en) Method of synchronizing device list in a smart network system, apparatus, and computer storage medium thereof
CN104866282B (zh) 一种控制电子设备的方法及电子设备

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant