一种应用程序核心模块的隐藏方法及系统与流程

文档序号:12365093阅读:533来源:国知局

本发明涉及应用程序文件的设置领域,具体涉及一种应用程序核心模块的隐藏方法及系统。



背景技术:

随着网络技术的进步,网络应用程序越来越多,为了保证应用程序开发商的利益,进一步推动网络应用程序的发明创造;网络应用程序已经由免费逐渐的变为收费。

但是,现有的网络应用程序的核心模块往往容易被盗用者(骇客或者第三方程序)进行修改,进而使得核心模块的功能失效,由此达到盗用者的目的。例如:网络应用程序的付费模块被盗用者修改之后,能够达到使用该应用程序的同时不支付使用费用,进而极大的损害了应用程序开发商的利益。



技术实现要素:

针对现有技术中存在的缺陷,本发明解决的技术问题为:显著增大核心模块的查找难度,本发明能够提高核心模块对应的应用程序的安全,保证了应用程序开发商的利益。

为达到以上目的,本发明提供的应用程序核心模块的隐藏方法,包括以下步骤:

S1:保存核心模块加载至内存的起始地址,转到S2;

S2:将核心模块头部信息的DOS头部字段和NT头部字段的值清0,转到S3;

S3:根据进程环境模块的地址,确定当前核心模块的模块链表,在模块链表中判断是否存在与当前核心模块对应的节点,若是,转到S4,否则返回错误,结束;

S4:将S3中所述节点的前节点和和后节点进行关联后,将S3中所述节点删除,结束。

本发明提供的实现上述方法的应用程序核心模块的隐藏系统,包括起始地址获取模块、头部字段清除模块、核心模块节点确定模块和核心模块节点删除模块;

起始地址获取模块用于:保存核心模块加载至内存的起始地址,向头部字段清除模块发送头部字段清除信号;

头部字段清除模块用于:收到头部字段清除信号后,将核心模块头部信息的DOS头部字段和NT头部字段的值清0,向核心模块节点确定模块发送核心模块节点确定信号;

核心模块节点确定模块用于:收到核心模块节点确定信号后,根据进程环境模块的地址,确定核心模块的模块链表,在模块链表中判断是否存在与核心模块对应的节点,若是,向核心模块节点删除模块发送核心模块节点删除信号,否则返回错误;

核心模块节点删除模块用于:收到核心模块节点删除信号后,将所述对应的节点的前节点和和后节点进行关联后,将所述对应的节点删除。

与现有技术相比,本发明的优点在于:

本发明事先将核心模块的头部信息去掉(将DOS头部字段和NT头部字段清0),使得盗用者无法在内存中从头部信息得知核心模块。进一步本发明还通过对应用程序进程加载的模块链表进行修改,将核心模块从链表中删除,进而使得盗用者无法通过Windows的API(Application Programming Interface,应用程序编程接口)函数来查找核心模块。

有鉴于此,本发明通过对核心模块的头部信息和模块链表的修改,使得盗用者非常难以查找到核心模块,进而显著提高了核心模块对应的应用程序的安全,保证了应用程序开发商的利益。

附图说明

图1为本发明实施例中应用程序核心模块的隐藏方法的流程图。

具体实施方式

以下结合附图及实施例对本发明作进一步详细说明。

参见图1所示,本发明实施例中的应用程序核心模块的隐藏方法,包括以下步骤:

S1:终端设备(例如个人计算机、平板电脑等)的Windows应用程序根据核心模块的头部信息,将核心模块加载至内存,保存核心模块加载至内存的起始地址BaseAddr;具体的操作为:HMODULE WINAPI LoadLibrary(LPCTSTR lpFileName),其中返回值是核心模块加载到内存的起始地址,lpFileName是需要加载的核心模块名称,转到S2。

S2:将核心模块的DOS头部字段(磁盘操作头部字段)和NT头部字段(新技术头部字段)的值清0,转到S3。

S2的具体流程为:

S201:获取DOS头部字段,具体的操作为:

PIMAGE_DOS_HEADER pDosHeader=

(PIMAGE_DOS_HEADER)BaseAddr;

其中PIMAGE_DOS_HEADER为DOS头部字段;

获取NT头部字段,具体的操作为:

PIMAGE_NT_HEADERS pNtHeader=

(PIMAGE_NT_HEADERS)(BaseAddr+pMemDosHeader->e_lfane w);

其中PIMAGE_NT_HEADERS为NT头部字段。

S202:利用VirtualProtect(虚拟保护函数),将DOS头部字段和NT头部字段的内存属性均由可读修改为可写;将DOS头部字段和NT头部字段的值均清0后,将DOS头部字段和NT头部字段的内存属性均由可写恢复为可读,转到S3。

S3:根据PEB(进程环境模块)的地址确定当前核心模块的模块链表,在模块链表中判断是否存在与当前核心模块对应的节点,若是,转到S4,否则返回错误,结束。

S3的具体流程为:

S301:在终端设备的内嵌汇编代码中确定PEB的地址,根据PEB的地址确定当前核心模块的模块链表,在模块链表中确定链表头指针和链表结尾指针。具体操作为:首先找到内嵌汇编代码:

其中,fs:[edx+0x30]是获取PEB(进程环境模块)的地址,pLMFNode是链表头指针,pLMHNode是链表结尾指针。

S302:确定链表头指针和链表结尾指针之间所有节点的加载地址,判断是否存在加载地址与S1中所述起始地址相同的节点,若是,则将该节点作为与当前核心模块对应的节点,转到S4,否则返回错误,结束。

S4:将S3中所述节点的前节点和和后节点进行关联后,将所述节点删除(即双向链表删除操作),结束。

本发明提供的实现上述方法的应用程序核心模块的隐藏系统,包括核心模块加载模块、起始地址获取模块、头部字段清除模块、核心模块节点确定模块和核心模块节点删除模块。

核心模块加载模块用于:根据核心模块的头部信息,将核心模块加载至内存。

起始地址获取模块用于:保存核心模块加载至内存的起始地址,向头部字段清除模块发送头部字段清除信号。

头部字段清除模块用于:收到头部字段清除信号后,将核心模块头部信息的DOS头部字段和NT头部字段的值清0,向核心模块节点确定模块发送核心模块节点确定信号。

头部字段清除模块的具体工作流程为:

获取DOS头部字段和NT头部字段,将DOS头部字段和NT头部字段的内存属性,均由可读修改为可写;将DOS头部字段和NT头部字段的值均清0后,将DOS头部字段和NT头部字段的内存属性,均由可写恢复为可读。

核心模块节点确定模块用于:收到核心模块节点确定信号后,根据进程环境模块的地址,确定核心模块的模块链表,在模块链表中判断是否存在与核心模块对应的节点,若是,向核心模块节点删除模块发送核心模块节点删除信号,否则返回错误。

核心模块节点确定模块的具体工作流程为:

在终端设备的内嵌汇编代码中确定进程环境模块的地址,根据进程环境模块的地址确定核心模块的模块链表,在模块链表中确定链表头指针和链表结尾指针;

在链表头指针和链表结尾指针之间所有节点中,判断是否存在加载地址与所述起始地址获取模块中的起始地址相同的节点,若是,将该节点作为与核心模块对应的节点,向核心模块节点删除模块发送核心模块节点删除信号,否则返回错误。

核心模块节点删除模块用于:收到核心模块节点删除信号后,将所述对应的节点的前节点和和后节点进行关联后,将所述对应的节点删除。

本发明不局限于上述实施方式,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围之内。本说明书中未作详细描述的内容属于本领域专业技术人员公知的现有技术。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1