CN113806714A - 一种应用程序的白名单信息安全传输方法与装置 - Google Patents

一种应用程序的白名单信息安全传输方法与装置 Download PDF

Info

Publication number
CN113806714A
CN113806714A CN202010539385.4A CN202010539385A CN113806714A CN 113806714 A CN113806714 A CN 113806714A CN 202010539385 A CN202010539385 A CN 202010539385A CN 113806714 A CN113806714 A CN 113806714A
Authority
CN
China
Prior art keywords
module
white list
data block
memory
memory interval
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.)
Pending
Application number
CN202010539385.4A
Other languages
English (en)
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.)
Wuhan Douyu Network Technology Co Ltd
Original Assignee
Wuhan Douyu Network Technology 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 Wuhan Douyu Network Technology Co Ltd filed Critical Wuhan Douyu Network Technology Co Ltd
Priority to CN202010539385.4A priority Critical patent/CN113806714A/zh
Publication of CN113806714A publication Critical patent/CN113806714A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/30Authentication, i.e. establishing the identity or authorisation of security principals
    • G06F21/44Program or device authentication

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Storage Device Security (AREA)

Abstract

本发明公开了一种应用程序的白名单信息安全传输方法及装置,其中方法包括:根据应用程序的启动部分加载应用程序的启动模块;根据启动模块中预设的加载顺序,对应用程序的非启动模块进行加载,获得白名单信息;将模块名称和数据信息分别同步加密缓存至剪切板中预设的第一内存区间和预设的第二内存区间,获得第一缓存数据块和第二缓存数据块;其中,第一内存区间小于模块名称的数据量大小,第二内存区间小于数据信息的数据量大小;当第一内存区间达到缓存上限时,将第一缓存数据块发送至服务器和/或保存至磁盘;当第二内存区间达到缓存上限时,将第二缓存数据块发送至服务器和/或保存至磁盘。本发明提高了白名单信息传输的安全性。

Description

一种应用程序的白名单信息安全传输方法与装置
技术领域
本发明涉及计算机技术领域,尤其涉及一种应用程序的白名单信息安全传输方法与装置。
背景技术
在现有客户端程序中,如应用程序、游戏程序或者安全软件等。都会有一些安全机制来保护自身程序的安全,防止病毒程序或者“外挂”程序的破坏。病毒程序或者“外挂”程序都会在本程序中拥有一段内存空间来存放其执行的代码或者数据。现有的客户端程序本身也会做一些检测,所以其不管是检测数据、检测代码还是将结果上报,都需要排除掉正常的内存地址以减少检测的数据量,提高效率。那么通常客户端则会设计一个白名单来排除掉白名单上的目标,去检测非白名单的目标。
然而,目前白名单的数据传输设计过于简单,以至于某些“外挂”程序或病毒程序很容易将自己放入到白名单中从而绕过检测,检测的安全性较低。
发明内容
鉴于上述问题,本发明提出了一种应用程序的白名单信息安全传输方法及装置,解决了现有的白名单新信息的数据传输设计过于简单,“外挂”程序或病毒程序很容易将自己放入到白名单信息中从而绕过检测的问题,提高了传输检测的安全性。
第一方面,本申请通过本申请的一实施例提供如下技术方案:
一种应用程序的白名单信息安全传输方法,包括:
获取应用程序的非启动模块之间预设的加载顺序,并根据所述应用程序的启动部分加载所述应用程序的启动模块;其中,所述加载顺序保存在加载顺序表中,所述加载顺序表存储在所述启动模块中,所述加载顺序表基于所述非启动模块之间的依赖顺序构建而成;
根据所述启动模块中的所述加载顺序,对所述非启动模块进行加载,获得白名单信息;其中,所述白名单信息包括模块名称和数据信息;
将所述模块名称和所述数据信息分别同步加密缓存至剪切板中预设的第一内存区间和预设的第二内存区间,获得第一缓存数据块和第二缓存数据块;其中,所述第一内存区间小于所述模块名称的数据量大小,所述第二内存区间小于所述数据信息的数据量大小;
当所述第一内存区间达到缓存上限时,将所述第一缓存数据块发送至服务器和/或保存至磁盘;
当所述第二内存区间达到缓存上限时,将所述第二缓存数据块发送至服务器和/或保存至磁盘。
可选的,所述数据信息包括内存地址和版本信息;所述根据所述启动模块中预设的加载顺序,对所述非启动模块进行加载,获得白名单信息,包括:
根据所述加载顺序,逐个对所述非启动模块进行加载;
每加载一个所述非启动模块,通过所述启动模块记录所述非启动模块中预设的白名单标记对应的内存地址;
将所述非启动模块对应的模块名称、内存地址和版本信息通过导出接口导出,获得白名单数据;直至获得所有非启动模块所对应的白名单数据;
根据所述所有非启动模块所对应的白名单数据,获得所述白名单信息。
可选的,所述将所述非启动模块对应的模块名称、内存地址和版本信息通过导出接口导出之后,还包括:
判断所述非启动模块是否产生全局信号量的信号;其中,所述全局信号量的信号用于判断所述非启动模块的所述内存地址是否被导出;
若产生信号量的信号,则执行所述非启动模块的程序功能。
可选的,所述将所述模块名称和所述数据信息分别同步加密缓存至剪切板中预设的第一内存区间和预设的第二内存区间,获得第一缓存数据块和第二缓存数据块,包括:
根据GlobalAlloc()函数,在所述剪切板分配所述第一内存区间和所述第二内存区间;
根据GlobalLock()函数,确定所述第一内存区间中写入数据的第一地址,以及所述第二内存区间中写入数据的第二地址;
根据所述第一地址、所述第二地址以及预设的加密函数EncryptBuff(size_tsize,EncryptBuff*otherbuff),分别将所述模块名称和所述数据加密写入至所述剪切板中,获得所述第一缓存数据块和所述第二缓存数据块;其中,size_t表示第一内存区间的大小,size表示第二内存区间的大小,EncryptBuff*表示第一内存区间,otherbuff表示第二内存区间。
可选的,所述分别将所述模块名称和所述数据加密写入至所述剪切板中,获得所述第一缓存数据块和所述第二缓存数据块,包括:
当所述模块名称缓存至所述第一内存区间时,为所缓存的模块名称添加当前静态变量的变量值,获得所述第一缓存数据;
当所述数据信息缓存至所述第二内存区间时,为所缓存的数据信息添加当前所述静态变量的变量值,获得所述第二缓存数据;其中,所述静态变量用于对所述第一缓存数据与所述第二缓存数据进行唯一识别。
可选的,所述当所述模块名称缓存至所述第一内存区间时,为所缓存的模块名称添加当前静态变量的变量值,包括:
根据Static atomic<uint32>id,构建静态变量;其中,id为静态变量;
根据atomic<uint32>currid,构建成员变量;其中,currid为成员变量,用于记录当前静态变量的变量值;
当所述模块名称缓存至所述第一内存区间时,采用所述成员变量记录当前静态变量的变量值;
为所缓存的模块名称添加所述成员变量记录的所述当前静态变量的变量值。
可选的,所述当所述第一内存区间达到缓存上限时,将所述第一缓存数据块发送至服务器和/或保存至磁盘,包括:
通过Bool overflow()接口判断所述第一内存区间是否达到缓存上限;
若所述第一内存区间达到缓存上限,则通知IO层将所述第一缓存数据块发送至服务器和/或保存至磁盘。
可选的,将所述第一缓存数据块和所述第二缓存数据块发送至服务器之后,还包括白名单信息检测步骤;所述服务器保存有历史名单信息,所述白名单信息检测步骤,包括:
根据所述第一缓存数据块和所述第二缓存数据块,获得白名单信息中的模块名称、内存地址和版本信息;
根据所述模块名称和所述版本信息,比对所述白名单信息与所述历史名单信息中所述模块名称对应的内存地址的数量是否相同;
若相同,则根据所述模块名称对应的起始地址和相对偏移,比对所述白名单信息与所述历史名单信息中所述模块名称对应的内存地址是否匹配;
若匹配,则确定所述白名单信息合法。
第二方面,基于同一发明构思,本申请通过本申请的一实施例提供如下技术方案:
一种应用程序的白名单信息安全传输装置,包括:
加载模块,用于获取应用程序的非启动模块之间预设的加载顺序,并根据所述应用程序的启动部分加载所述应用程序的启动模块;其中,所述加载顺序保存在加载顺序表中,所述加载顺序表存储在所述启动模块中,所述加载顺序表基于所述非启动模块之间的依赖顺序构建而成;
白名单信息获取模块,用于根据所述启动模块中的所述加载顺序,对所述非启动模块进行加载,获得白名单信息;其中,所述白名单信息包括模块名称和数据信息;
剪切板缓存模块,用于将所述模块名称和所述数据信息分别同步加密缓存至剪切板中预设的第一内存区间和预设的第二内存区间,获得第一缓存数据块和第二缓存数据块;其中,所述第一内存区间小于所述模块名称的数据量大小,所述第二内存区间小于所述数据信息的数据量大小;
第一缓存处理模块,用于当所述第一内存区间达到缓存上限时,将所述第一缓存数据块发送至服务器和/或保存至磁盘;
第二缓存处理模块,当所述第二内存区间达到缓存上限时,将所述第二缓存数据块发送至服务器和/或保存至磁盘。
第三方面,基于同一发明构思,本申请通过本申请的一实施例提供如下技术方案:
一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述第一方面中任一项所述方法的步骤。
本实施例中提供的一种应用程序的白名单信息安全传输方法及装置,该方法首先获取应用程序的非启动模块之间预设的加载顺序,并根据所述应用程序的启动部分加载所述应用程序的启动模块;其中,所述加载顺序保存在加载顺序表中,所述加载顺序表存储在所述启动模块中,所述加载顺序表基于所述非启动模块之间的依赖顺序构建而成;继而根据所述启动模块中预设的加载顺序,对应用程序的非启动模块进行加载,获得白名单信息;其中,白名单信息包括模块名称和数据信息;按照预设的加载顺序进行加载可保证白名单信息在传输缓存过程中具有更高的效率。然后,在缓存过程中将模块名称和数据信息分别同步加密缓存至剪切板中预设的第一内存区间和预设的第二内存区间,获得第一缓存数据块和第二缓存数据块;其中,第一内存区间小于模块名称的数据量大小,第二内存区间小于数据信息的数据量大小。由于剪切板是用于进程间通信的,本实施例中巧妙的采用其作为内存缓冲区,可以起到隐蔽白名单的效果;进一步的,由于在剪切板缓存的过程中对白名单信息的模块名称以及数据信息进行分别缓存在两个内存区间中,可避免攻击者无法同时得到两部分内容,并且在第一内存区间和第二内存区间均不能将白名单信息进行完整的存储,每次缓存的内存区件中都只是部分数据,从而每次加密的缓存数据块都不是一个完整的信息。从而保证了白名单信息的安全。最后,当第一内存区间达到缓存上限时,将第一缓存数据块发送至服务器和/或保存至磁盘;当第二内存区间达到缓存上限时,将第二缓存数据块发送至服务器和/或保存至磁盘。本发明解决了现有的白名单新信息的数据传输设计过于简单,“外挂”程序或病毒程序很容易将自己放入到白名单信息中从而绕过检测的问题,提高了传输、检测的安全性。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1示出了本发明第一实施例提供的一种应用程序的白名单信息安全传输方法的流程图;
图2示出了本发明第二实施例提供的一种应用程序的白名单信息安全传输装置的功能模块结构示意图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
第一实施例
请参见图1,示出了本发明第一实施例提供的应用程序的白名单信息安全传输方法的流程图。所述方法包括:
步骤S10:获取应用程序的非启动模块之间预设的加载顺序,并根据所述应用程序的启动部分加载所述应用程序的启动模块;其中,所述加载顺序保存在加载顺序表中,所述加载顺序表存储在所述启动模块中,所述加载顺序表基于所述非启动模块之间的依赖顺序构建而成;
步骤S20:根据所述启动模块中的所述加载顺序,对所述非启动模块进行加载,获得白名单信息;其中,所述白名单信息包括模块名称和数据信息;
步骤S30:将所述模块名称和所述数据信息分别同步加密缓存至剪切板中预设的第一内存区间和预设的第二内存区间,获得第一缓存数据块和第二缓存数据块;其中,所述第一内存区间小于所述模块名称的数据量大小,所述第二内存区间小于所述数据信息的数据量大小;
步骤S40:当所述第一内存区间达到缓存上限时,将所述第一缓存数据块发送至服务器和/或保存至磁盘;
步骤S50:当所述第二内存区间达到缓存上限时,将所述第二缓存数据块发送至服务器和/或保存至磁盘。
本实施例中,通过步骤S10-S50可实现白名单信息更加安全的传输,避免恶意程序或“外挂”程序将自身添加到白名单信息中。
步骤S10:根据应用程序的启动部分加载所述应用程序的启动模块。
在步骤S10中,应用程序分为启动部分和加载的除自身外的其他组件。具体的,可设置启动部分每次都随机基址来加载启动模块,从而可以保障程序每次启动都是随机内存地址。而非启动模块则由启动模块来加载。启动模块则一一记录下每个模块加载的内存地址,同时还需要获取每个模块需要注册的白名单内存地址,并进行记录。在启动模块或非启动模块中都可能存在一些风险操作,而这些风险操作是应用程序本身需要执行的,所以需要将这些风险操作加入到白名单中,避免进行被检测。这些风险操作可在程序设计的时候通过白名单标记进行预先的标记。
本实施例中风险操作可包括如下的类型:模块会分配可执行的内存地址用于执行shellcode(能在极小的空间内完成一些基本而重要的工作的代码),或者模块会hook其他程序的代码,或者模块会修改其他模块的代码,或者模块可能热修复修改自己模块的代码,等等。
在步骤S10中,预设的加载顺序可基于模块之间的启动顺序进行确定。具体的,可包括:获取非启动模块之间的依赖顺序;根据依赖顺序,构建非启动模块之间的加载顺序表;将加载顺序表保存至启动模块中;其中,加载顺序表中存储有非启动模块之间的加载顺序。
在启动模块中设计出非启动模块的加载顺序。首先会设计依赖模块,应用依赖模块必须按照依赖顺序来加载,而非依赖模块则依据一定算法固定其加载顺序,从而可以加速后续的模块的白名单信息的对比。进一步的,可将依赖模块打包到一起,并按照队列的顺序来加载。在代码实现时可使用顺序表list<string>来设计一个模块组,一个组可以是多个模块,也可以是一个模块。每个模块组中的模块,在顺序表中前面的模块则先加载,在后面的模块则后加载。例如:
创建一个模块组listM1,List<string>listM1。例如,我们有一个模块名称是network模块,此模块不需要依赖其他模块。因此,模块组只有他自己一个模块listM1.push_back(“network”)。而对于其他模块组,比如模块user模块其必须依赖于base模块,那么其实现则是定义一个模块组listM2,List<string>listM2。然后,进行赋值listM2.push_back(“base”),进一步的,是listM2.push_back(“user”)。由于user模块依赖于base模块先加载,所以base模块先进队列,先进行加载。同时,对非启动模块则设计一个总的模块加载列表。List<list<string>>listall;那么非启动模块则会按照一个固定的顺序来加载。可以基于每个模块组的名称组合来进行排序从而可以保障每次每个模块组的顺序是一致的。而必须使用模块组的所有模块的名称组合是由于有些模块可能会在多个模块组中出现,所以需要将整个模块组的名称拼接组合来排序;例如,第一个模块组为:module1、module2、module3,那么这个模块组对应的名称组合就是:module1 module2module3。第二个模块组为:xx、module2、zz,那么这个模块组对应的名称组合就是:xxmodule2 zz;那么两个模块组的排序就为:moude1 module2 module3 xx zz,即将该顺序作为加载时的固定顺序。
模块顺序列好后则是对模块进行加载并获取模块的白名单信息。即执行步骤S20。
步骤S20:根据所述启动模块中的所述加载顺序,对所述应用程序的非启动模块进行加载,获得白名单信息;其中,所述白名单信息包括模块名称和数据信息。
具体的,步骤S20包括:根据启动模块中预设的加载顺序,逐个对非启动模块进行加载;每加载一个非启动模块,通过启动模块记录非启动模块中预设的白名单标记对应的内存地址;将非启动模块对应的模块名称、内存地址和版本信息通过导出接口导出,获得白名单数据;直至获得所有非启动模块所对应的白名单数据;根据所有非启动模块所对应的白名单数据,获得白名单信息。
在步骤S20中,模块加载时会进行内存地址的注册,可通过列表进行存放。具体方式为:
class WihteAddressReg{
Virtaul std::list<pair<addresss,size>>getInitialWhiteAddress()=0;其中,本申请中只编写了一个获取每个模块的白名单的内存地址列表,因为一个模块中可能存在很多白名单标记对应的内存地址。因此,需要一个列表来存放多个内存地址。而内存地址则是一个区间,所以本申请中使用<addresss,size>来进行存储,其中,第一个address表示内存地址,size则是这块内存地址的区间大小。
进一步的,内存地址获取后需要进行导出。因此,在本申请中每个模块都会编写一个导出接口以供外部来获取白名单数据。具体为:extern"C"__declspec(dllexport)WihteAddressReg*getReg();此接口主要是返回出模块继承自WihteAddressReg并实例化的对象指针。
进一步的,记录模块的版本信息采用:Version getversion();每个需要注册白名单信息的内存地址的模块则都会通过继承上述的WihteAddressReg,并实现其接口getInitialWhiteAddress。
进一步的,由于每个模块都必须尽早的给出白名单数据,只有白名单数据给出后,模块本身的一些特殊功能才能够开始执行。为了保障模块功能的正确性,以及考虑多线程的情况,本实施例中在每个模块设计了一个全局的信号量,通过全局信号量的信号可判断模块的白名单标记对应的内存地址是否被导出。并且在需要使用上述白名单信息的内存地址的地方来判断信号量是否有信号,如果没有信号则不能够执行。此处,使用全局的信号量可保障在多线程的情况下也是正确的,如果用普调的变量则可能由于多线程对变量操作而导致判断错误。具体的,可通过Semaphore*getSem()编写一个全局的信号量。
例如,当将非启动模块对应的模块名称、内存地址和版本信息通过导出接口导出之后,可判断非启动模块是否产生全局信号量的信号;若产生信号量的信号,则执行非启动模块的程序功能,确保了功能的正确性。
举个例子,步骤S20中模块加载过程以及白名单数据中的内存地址导出的实施过程可入下:
例如,具体的模块加载过程可进行如下的遍历listall列表进行加载:
For(List<list<string>>::iterator itr=listall.begin();itr!=listall.end();++itr){;具体加载我们则是遍历listall来进行加载。
For(list<string>::iterator itr1=itr.begin();itr1!=itr.end();++itr2){;然后是遍历每个模块组的模块。
If(GetModuleHandle(*itr1)!=NULL){;如果模块没加载我们才加载。
HMODULE h=Loadlibrary(*itr1);通过系统函数来加载模块。
然后,通过系统函数GetProcAddress(h,“getReg”)获取接口去获取其中需要注册的百名单标记对应的内存地址。具体为:WihteAddressReg*reg=GetProcAddress(h,“getReg”)。
最后,可通过设置一白名单统计采集模块对每个模块的白名单数据的内存地址listaddress信息进行调用采集,具体为:std::list<pair<addresss,size>>listaddress=reg->getInitialWhiteAddress()。
步骤S30:将所述模块名称和所述数据信息分别同步加密缓存至剪切板中预设的第一内存区间和预设的第二内存区间,获得第一缓存数据块和第二缓存数据块;其中,所述第一内存区间小于所述模块名称的数据量大小,所述第二内存区间小于所述数据信息的数据量大小。
在步骤S30,对于网络或者本地磁盘设备,其读写性能是比较差的。因此,本实施例设计一个剪切板内存缓冲层,再加上IO(Input Output,输入输出)写入数据层来完成白名单数据的网络传输和磁盘写入功能。通常剪切板是用于进程间通信的,而在本实施例中巧妙的采用剪切板作为内存的具体的缓存空间,从而可以起到隐蔽白名单的效果。
进一步的,由于是将白名单信息中的模块名称和数据信息进行分离存储,这样在白名单信息传输过程中,即使有恶意程序进行抓包,也无法得到完整的白名单信息,也就无法对白名单信息进行篡改。同时,本实施例和传统的传输数据方式不一样,本实施例获取的白名单数据自获取后就一直以密文形式传输,同时在剪切板内存中也是以密文的形式存在,提高了安全性,避免被破解。
由于白名单信息中的模块名称和数据信息是分开存储的,为了保证二者的关联性,本实施例中步骤S30,包括:
当模块名称缓存至第一内存区间时,为所缓存的模块名称添加当前静态变量的变量值,获得第一缓存数据;当数据信息缓存至第二内存区间时,为所缓存的数据信息添加当前静态变量的变量值,获得第二缓存数据;其中,静态变量用于对第一缓存数据与第二缓存数据进行唯一识别。该静态变量在每次同步缓存时进行一次更新,保证每次同步缓存时可以进行唯一的匹配。
步骤S40:当所述第一内存区间达到缓存上限时,将所述第一缓存数据块发送至服务器和/或保存至磁盘;
步骤S50:当所述第二内存区间达到缓存上限时,将所述第二缓存数据块发送至服务器和/或保存至磁盘。
步骤S40-S50执行的先后顺序不做限制,可步骤S40在先执行,可步骤S50在先执行,可步骤S40、步骤S50同步执行。
在步骤S40或步骤S50中,可通过overflow()接口判断第一/第二内存区间是否达到缓存上限;第一/第二内存区间达到缓存上限,则通知IO层将第一/第二缓存数据块发送至服务器和/或保存至磁盘。
本实施例步骤S30-S50的理解,请参考如下例子:
将剪切板作为缓冲层功能设计。
通过Class EncryptBuff可设计数据的加密层。然后,结合我们的白名单是内存地址和地址长度信息来设计我们的缓存。首先是构造函数EncryptBuff(size_t size,EncryptBuff*otherbuff);其中,参数size就是缓冲区的内存区间(buff)的大小。这个大小我们必须不能设计太大,太大则可能包含了整个白名单信息,本实施例中希望每次缓冲区内部的白名单信息都只是部分信息,从而每次加密数据块都不是一个完整的信息。同时,不能使用1024这样的整数倍,但是可以使用1022、1023、1025、等等,因为内存是1024这样的对齐块大小。对齐块大小虽然读写效率上会更高些,但是也带来了安全问题;采用非对齐方式存储的话,数据分布是在多个块中,提升了数据的安全性。
在存储白名单信息时,需要将模块名称和数据信息分开存储,数据信息包括内存地址和版本信息等。我们的接口需要传入另一个内存区间(otherbuff),用于协同将数据分别存储到2个不同的内存区间中,从而在两个内存区间中加密时是分别加密各自的数据,两个内存区间分别对应于上述的第一内存区间和第二内存区间。同时,需要使2个内存区间中的数据也产生一定的联系,可构造函数设计一个静态的原子变量,具体如下:
Static atomic<uint32>id;其中,id在每次写入数据都会递增,此id属于静态变量,通过该静态变量的变量值标识,从而可以起到唯一标识的目的。同时,设计一个成员变量用来记录当前内存区间的最新的id数据,用于后续能够进行2个内存区间的数据同步功能,具体为atomic<uint32>currid,currid为成员变量。
进一步的,在使用剪切板进行缓存时,参考如下:
UINT clip=RegisterClipboardFormat("white");注册一个剪切板句柄。
HGLOBAL h=GlobalAlloc(GMEM_MOVEABLE,size);剪切板空间。
LPVOID p=GlobalLock(h);获取剪切板写入数据的内存地址。
写数据则可以写入的p指针对应的内存空间中;写完数据后关闭剪切板。具体的:
GlobalUnlock(p);
SetClipboardData(CF_TEXT,p);
CloseClipboard();
Void write(void*addressbuff,size_t size,string modulenmae,versionver,sigslot*sig);其中,提供一个接口供外部来写入数据,addressbuff为内存地址,modulenmae为模块名称,ver为版本信息,成员变量sigslot*sig,用于和底层进行通信。那么此接口在外部写入白名单数据时,则首先会对内存区间中的数据信息进行加密后再加上id信息一起存储到自身的EncryptBuff中的内存区间。同时我们会将模块名称进行加密并和id拼接到一起存储到另一个内存区间中。其中的sig用于信号槽来通知IO层buff数据已满需要写入网络或者写入磁盘。
进一步的,在向网络或者磁盘写入数据之前我们会判断两个内存区间中的currid是否是一致的,一致的才能开始写入,否则不能写入。写入数据后,再次判断2个currid是否相等,以识别写入过程中两部分白名单信息是否被修改。在写入数据后,对两个内存区件对应的currid值进行更新,更新为id值,id值在每次写入后均会更新。
而由于addressbuff信息和modulenmae大小不一样,因此可能存在其中一个内存区间满了而另一个内存区间没有满。因此,本实施例中需要设计一个接口来对满了的情况进行处理。每次写入和写入后都会调用overflow()来通知IO层。
本实施例中可通过Bool overflow()来判断内存区间的剩余大小。Bool overflow();此接口是用于判断当写入的数据满了或者将要写入的数据大于内存区间中剩余空间的大小。其中,当返回true则是满了,或者内存区间不够白名单信息写入。那么,此时则会通知IO层连将剪切板的内存区间的内存地址中的缓存数据块发送网络或者写入磁盘中。发送数据则是读取剪切板中的缓存数据块进行发送,并清空剪切板中的数据。
在本实施例中,IO层逻辑设计如下:
IO层包括写入网络来发送或者是写入磁盘文件来发送。本实施例中设计一层抽象层,可以依据传入的是文件句柄还是网络句柄,来实现缓存数据块发送网络还是写入磁盘。具体的,首先可以将最终的IO层进行抽象;然后,设计一个接口class IO{IO则是抽象出写入文件还是网络的抽象接口。
IO(string name);此构造函数对于文件则是文件名,对于网络则是服务器的ip。
Virtual size write(void*buff,size_t size)=0;此接口则可用于将内存区间的数据最终写入对应的句柄中。
进一步的,设计一个class IOTrans{;
首先,构造函数IOTrans(IO*io,EncryptBuff*buff);其中构造函数需要2个参数,一个是IO抽象层接口,一个是缓冲区buff。其中,会有成员变量sigslot*sig,用于和底层的内存空间进行通信,当数据满时,则将数据写入到网络层或者是写入文件。也就是当sig有信号时,则会调用io->write功能来将EncryptBuff中的数据写入磁盘或者通过网络进行发送。
在本实施例中,将第一缓存数据块和第二缓存数据块发送至服务器之后,还包括白名单信息检测步骤。服务器保存有历史名单信息,历史名单信息为本次之前记录的白名单相关数据。具体的,白名单信息检测步骤,包括:
首先,根据第一缓存数据块和第二缓存数据块,获得白名单信息中的模块名称、内存地址和版本信息;然后,根据模块名称和版本信息,比对白名单信息与历史名单信息中模块名称对应的内存地址的数量是否相同;若相同,则根据模块名称对应的起始地址和相对偏移,比对白名单信息与历史名单信息中模块名称对应的内存地址是否匹配;若匹配,则确定白名单信息合法。这样最终就可确定白名单信息的传输过程是否安全。
本实施例中将白名单信息加密写入磁盘的可在程序下次启动时,可读取磁盘的白名单信息,即历史名单信息。来对比本次生成的白名单信息和上次的是否有不一致的地方,可通过模块名称和模块的版本信息,确定比对的具体模块的白名单数据。在对比时,则通过比较同一个模块在上次的历史名单信息和这次的白名单信息是否一致,来确定本次的白名单信息是否合法。这样当恶意程序或外挂程序将自己写入白名单信息中时,需要同时修改历史名单信息和白名单信息中的数据后才能不被发现,可实现较高的安全性。具体的,首先可对比白名单信息中内存地址的数量,然后对比白名单信息中的内存地址,而内存地址对比则必须是基于模块起始地址和相对偏移来对比,因为每个模块每次加载的内存地址是不一样的。由于本实施例中在之前的设计中固定了每个非启动模块的加载顺序,每次加载均会按照预设的加载顺序进行加载,并依次比对,在对比的时候速度会具有很快的比对速度。
本实施例中提供的一种应用程序的白名单信息安全传输方法,该方法首先获取应用程序的非启动模块之间预设的加载顺序,并根据所述应用程序的启动部分加载所述应用程序的启动模块;其中,所述加载顺序保存在加载顺序表中,所述加载顺序表存储在所述启动模块中,所述加载顺序表基于所述非启动模块之间的依赖顺序构建而成。继而,根据所述启动模块中预设的加载顺序,对应用程序的非启动模块进行加载,获得白名单信息;其中,白名单信息包括模块名称和数据信息;按照预设的加载顺序进行加载可保证白名单信息在传输缓存过程中具有更高的效率。然后,在缓存过程中将模块名称和数据信息分别同步加密缓存至剪切板中预设的第一内存区间和预设的第二内存区间,获得第一缓存数据块和第二缓存数据块;其中,第一内存区间小于模块名称的数据量大小,第二内存区间小于数据信息的数据量大小。由于剪切板是用于进程间通信的,本实施例中巧妙的采用其作为内存缓冲区,可以起到隐蔽白名单的效果;进一步的,由于在剪切板缓存的过程中对白名单信息的模块名称以及数据信息进行分别缓存在两个内存区间中,可避免攻击者无法同时得到两部分内容,并且在第一内存区间和第二内存区间均不能将白名单信息进行完整的存储,每次缓存的内存区件中都只是部分数据,从而每次加密的缓存数据块都不是一个完整的信息。从而保证了白名单信息的安全。最后,当第一内存区间达到缓存上限时,将第一缓存数据块发送至服务器和/或保存至磁盘;当第二内存区间达到缓存上限时,将第二缓存数据块发送至服务器和/或保存至磁盘。本发明解决了现有的白名单新信息的数据传输设计过于简单,“外挂”程序或病毒程序很容易将自己放入到白名单信息中从而绕过检测的问题,提高了传输、检测的安全性。
第二实施例
基于同一发明构思,本发明第二实施例提供了一种应用程序的白名单信息安全传输装置300。图2示出了本发明第二实施例提供的一种应用程序的白名单信息安全传输装置300的功能模块结构示意图。
所述应用程序的白名单信息安全传输装置300,包括:
加载模块301,用于获取应用程序的非启动模块之间预设的加载顺序,并根据所述应用程序的启动部分加载所述应用程序的启动模块;其中,所述加载顺序保存在加载顺序表中,所述加载顺序表存储在所述启动模块中,所述加载顺序表基于所述非启动模块之间的依赖顺序构建而成;
白名单信息获取模块302,用于根据所述启动模块中的所述加载顺序,对所述应用程序的非启动模块进行加载,获得白名单信息;其中,所述白名单信息包括模块名称和数据信息;
剪切板缓存模块303,用于将所述模块名称和所述数据信息分别同步加密缓存至剪切板中预设的第一内存区间和预设的第二内存区间,获得第一缓存数据块和第二缓存数据块;其中,所述第一内存区间小于所述模块名称的数据量大小,所述第二内存区间小于所述数据信息的数据量大小;
第一缓存处理模块304,用于当所述第一内存区间达到缓存上限时,将所述第一缓存数据块发送至服务器和/或保存至磁盘;
第二缓存处理模块305,当所述第二内存区间达到缓存上限时,将所述第二缓存数据块发送至服务器和/或保存至磁盘。
需要说明的是,本发明实施例所提供的应用程序的白名单信息安全传输装置300,其具体实现及产生的技术效果和前述方法实施例相同,为简要描述,装置实施例部分未提及之处,可参考前述方法实施例中相应内容。
本发明提供的装置集成的功能模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实现上述实施例的方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的装置中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。

Claims (10)

1.一种应用程序的白名单信息安全传输方法,其特征在于,包括:
获取应用程序的非启动模块之间预设的加载顺序,并根据所述应用程序的启动部分加载所述应用程序的启动模块;其中,所述加载顺序保存在加载顺序表中,所述加载顺序表存储在所述启动模块中,所述加载顺序表基于所述非启动模块之间的依赖顺序构建而成;
根据所述启动模块中的所述加载顺序,对所述非启动模块进行加载,获得白名单信息;其中,所述白名单信息包括模块名称和数据信息;
将所述模块名称和所述数据信息分别同步加密缓存至剪切板中预设的第一内存区间和预设的第二内存区间,获得第一缓存数据块和第二缓存数据块;其中,所述第一内存区间小于所述模块名称的数据量大小,所述第二内存区间小于所述数据信息的数据量大小;
当所述第一内存区间达到缓存上限时,将所述第一缓存数据块发送至服务器和/或保存至磁盘;
当所述第二内存区间达到缓存上限时,将所述第二缓存数据块发送至服务器和/或保存至磁盘。
2.根据权利要求1所述的方法,其特征在于,所述数据信息包括内存地址和版本信息;所述根据所述启动模块中预设的加载顺序,对所述非启动模块进行加载,获得白名单信息,包括:
根据所述加载顺序,逐个对所述非启动模块进行加载;
每加载一个所述非启动模块,通过所述启动模块记录所述非启动模块中预设的白名单标记对应的内存地址;
将所述非启动模块对应的模块名称、内存地址和版本信息通过导出接口导出,获得白名单数据;直至获得所有非启动模块所对应的白名单数据;
根据所述所有非启动模块所对应的白名单数据,获得所述白名单信息。
3.根据权利要求2所述的方法,其特征在于,所述将所述非启动模块对应的模块名称、内存地址和版本信息通过导出接口导出之后,还包括:
判断所述非启动模块是否产生全局信号量的信号;其中,所述全局信号量的信号用于判断所述非启动模块的所述内存地址是否被导出;
若产生信号量的信号,则执行所述非启动模块的程序功能。
4.根据权利要求1所述的方法,其特征在于,所述将所述模块名称和所述数据信息分别同步加密缓存至剪切板中预设的第一内存区间和预设的第二内存区间,获得第一缓存数据块和第二缓存数据块,包括:
根据GlobalAlloc()函数,在所述剪切板分配所述第一内存区间和所述第二内存区间;
根据GlobalLock()函数,确定所述第一内存区间中写入数据的第一地址,以及所述第二内存区间中写入数据的第二地址;
根据所述第一地址、所述第二地址以及预设的加密函数EncryptBuff(size_t size,EncryptBuff*otherbuff),分别将所述模块名称和所述数据加密写入至所述剪切板中,获得所述第一缓存数据块和所述第二缓存数据块;其中,size_t表示第一内存区间的大小,size表示第二内存区间的大小,EncryptBuff*表示第一内存区间,otherbuff表示第二内存区间。
5.根据权利要求4所述的方法,其特征在于,所述分别将所述模块名称和所述数据加密写入至所述剪切板中,获得所述第一缓存数据块和所述第二缓存数据块,包括:
当所述模块名称缓存至所述第一内存区间时,为所缓存的模块名称添加当前静态变量的变量值,获得所述第一缓存数据;
当所述数据信息缓存至所述第二内存区间时,为所缓存的数据信息添加当前所述静态变量的变量值,获得所述第二缓存数据;其中,所述静态变量用于对所述第一缓存数据与所述第二缓存数据进行唯一识别。
6.根据权利要求5所述的方法,其特征在于,所述当所述模块名称缓存至所述第一内存区间时,为所缓存的模块名称添加当前静态变量的变量值,包括:
根据Static atomic<uint32>id,构建静态变量;其中,id为静态变量;
根据atomic<uint32>currid,构建成员变量;其中,currid为成员变量,用于记录当前静态变量的变量值;
当所述模块名称缓存至所述第一内存区间时,采用所述成员变量记录当前静态变量的变量值;
为所缓存的模块名称添加所述成员变量记录的所述当前静态变量的变量值。
7.根据权利要求1所述的方法,其特征在于,所述当所述第一内存区间达到缓存上限时,将所述第一缓存数据块发送至服务器和/或保存至磁盘,包括:
通过Bool overflow()接口判断所述第一内存区间是否达到缓存上限;
若所述第一内存区间达到缓存上限,则通知IO层将所述第一缓存数据块发送至服务器和/或保存至磁盘。
8.根据权利要求1所述的方法,其特征在于,将所述第一缓存数据块和所述第二缓存数据块发送至服务器之后,还包括白名单信息检测步骤;所述服务器保存有历史名单信息,所述白名单信息检测步骤,包括:
根据所述第一缓存数据块和所述第二缓存数据块,获得白名单信息中的模块名称、内存地址和版本信息;
根据所述模块名称和所述版本信息,比对所述白名单信息与所述历史名单信息中所述模块名称对应的内存地址的数量是否相同;
若相同,则根据所述模块名称对应的起始地址和相对偏移,比对所述白名单信息与所述历史名单信息中所述模块名称对应的内存地址是否匹配;
若匹配,则确定所述白名单信息合法。
9.一种应用程序的白名单信息安全传输装置,其特征在于,包括:
加载模块,用于获取应用程序的非启动模块之间预设的加载顺序,并根据所述应用程序的启动部分加载所述应用程序的启动模块;其中,所述加载顺序保存在加载顺序表中,所述加载顺序表存储在所述启动模块中,所述加载顺序表基于所述非启动模块之间的依赖顺序构建而成;
白名单信息获取模块,用于根据所述启动模块中的所述加载顺序,对所述非启动模块进行加载,获得白名单信息;其中,所述白名单信息包括模块名称和数据信息;
剪切板缓存模块,用于将所述模块名称和所述数据信息分别同步加密缓存至剪切板中预设的第一内存区间和预设的第二内存区间,获得第一缓存数据块和第二缓存数据块;其中,所述第一内存区间小于所述模块名称的数据量大小,所述第二内存区间小于所述数据信息的数据量大小;
第一缓存处理模块,用于当所述第一内存区间达到缓存上限时,将所述第一缓存数据块发送至服务器和/或保存至磁盘;
第二缓存处理模块,当所述第二内存区间达到缓存上限时,将所述第二缓存数据块发送至服务器和/或保存至磁盘。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现权利要求1-8中任一项所述方法的步骤。
CN202010539385.4A 2020-06-14 2020-06-14 一种应用程序的白名单信息安全传输方法与装置 Pending CN113806714A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010539385.4A CN113806714A (zh) 2020-06-14 2020-06-14 一种应用程序的白名单信息安全传输方法与装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010539385.4A CN113806714A (zh) 2020-06-14 2020-06-14 一种应用程序的白名单信息安全传输方法与装置

Publications (1)

Publication Number Publication Date
CN113806714A true CN113806714A (zh) 2021-12-17

Family

ID=78892242

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010539385.4A Pending CN113806714A (zh) 2020-06-14 2020-06-14 一种应用程序的白名单信息安全传输方法与装置

Country Status (1)

Country Link
CN (1) CN113806714A (zh)

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012198856A (ja) * 2011-03-23 2012-10-18 Nec Corp フィルタリングシステム、フィルタリング方法、及びプログラム
CN103065092A (zh) * 2012-12-24 2013-04-24 公安部第一研究所 一种拦截可疑程序运行的方法
EP2653994A2 (en) * 2012-04-17 2013-10-23 Lumension Security, Inc. Information security techniques including detection, interdiction and/or mitigation of memory injection attacks
CN103605930A (zh) * 2013-11-27 2014-02-26 湖北民族学院 一种基于hook和过滤驱动的双重文件防泄密方法及系统
US9473527B1 (en) * 2011-05-05 2016-10-18 Trend Micro Inc. Automatically generated and shared white list
CN106529282A (zh) * 2016-11-10 2017-03-22 广东电网有限责任公司电力科学研究院 一种基于信任链的白名单执行系统及执行方法
WO2017162081A1 (zh) * 2016-03-22 2017-09-28 中兴通讯股份有限公司 一种剪切板访问控制方法及系统、存储介质
CN107302530A (zh) * 2017-06-16 2017-10-27 北京天地和兴科技有限公司 一种基于白名单的工控系统攻击检测装置及其检测方法
CN108334383A (zh) * 2018-03-30 2018-07-27 联想(北京)有限公司 一种信息处理方法及电子设备
CN110262908A (zh) * 2019-06-21 2019-09-20 珠海格力电器股份有限公司 一种剪切板数据的处理方法及装置

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012198856A (ja) * 2011-03-23 2012-10-18 Nec Corp フィルタリングシステム、フィルタリング方法、及びプログラム
US9473527B1 (en) * 2011-05-05 2016-10-18 Trend Micro Inc. Automatically generated and shared white list
EP2653994A2 (en) * 2012-04-17 2013-10-23 Lumension Security, Inc. Information security techniques including detection, interdiction and/or mitigation of memory injection attacks
CN103065092A (zh) * 2012-12-24 2013-04-24 公安部第一研究所 一种拦截可疑程序运行的方法
CN103605930A (zh) * 2013-11-27 2014-02-26 湖北民族学院 一种基于hook和过滤驱动的双重文件防泄密方法及系统
WO2017162081A1 (zh) * 2016-03-22 2017-09-28 中兴通讯股份有限公司 一种剪切板访问控制方法及系统、存储介质
CN106529282A (zh) * 2016-11-10 2017-03-22 广东电网有限责任公司电力科学研究院 一种基于信任链的白名单执行系统及执行方法
CN107302530A (zh) * 2017-06-16 2017-10-27 北京天地和兴科技有限公司 一种基于白名单的工控系统攻击检测装置及其检测方法
CN108334383A (zh) * 2018-03-30 2018-07-27 联想(北京)有限公司 一种信息处理方法及电子设备
CN110262908A (zh) * 2019-06-21 2019-09-20 珠海格力电器股份有限公司 一种剪切板数据的处理方法及装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
朱承;常佳;: "基于指纹和Bloom滤波器的数据泄漏检测方案研究", 计算机应用与软件, no. 07, 15 July 2015 (2015-07-15) *

Similar Documents

Publication Publication Date Title
US11687645B2 (en) Security control method and computer system
TW201941049A (zh) 用於轉換詮釋資料處理的指令的系統和方法
US10761970B2 (en) Computerized method and systems for performing deferred safety check operations
CN107949846A (zh) 恶意线程挂起的检测
CN109960597B (zh) 一种应用层接口的动态注册方法及相关装置
US11947666B2 (en) Systems and methods for exploit prevention and malicious code neutralization using non-predictable results for JavaScript-enabled applications
JP2022104872A (ja) バッファ保護における境界情報アクセスを提供する方法、システム、およびコンピュータ・プログラム
US20160092313A1 (en) Application Copy Counting Using Snapshot Backups For Licensing
US8972745B2 (en) Secure data handling in a computer system
CN111428240B (zh) 一种用于检测软件的内存违规访问的方法及装置
CN115964758A (zh) 一种基于TrustZone的内核数据完整性保护方法
CN112464231A (zh) 基于虚拟机的威胁检测方法及系统
CN113806714A (zh) 一种应用程序的白名单信息安全传输方法与装置
Zhao Wideshears: Investigating and breaking widevine on QTEE
EP1977551B1 (en) Binding a protected application program to shell code
CN112395319A (zh) 缓存共用方法、装置、服务器及存储介质
CN113296910B (zh) 文件系统的调用方法、装置、终端设备及可读存储介质
CN113392395A (zh) 一种栈保护的方法及装置
US20240362321A1 (en) Systems and methods for interpreter based application cybersecurity
CN111984944B (zh) 一种源代码处理方法、相关装置及存储介质
US20240095363A1 (en) Method, device, and electronic apparatus for securely passing data
EP4343593A1 (en) Method, device, and electronic apparatus for securely passing data
WO2023031678A1 (en) Exploit prevention based on generation of random chaotic execution context
KR101810042B1 (ko) 정보 노출 방지 장치 및 방법
CN116340904A (zh) 应用运行保护方法、装置、设备及存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination