基于ring3环对抗的程序行为保护方法、系统及存储介质技术方案

技术编号:28295827 阅读:29 留言:0更新日期:2021-04-30 16:20
本发明专利技术提供的基于ring3环对抗的程序行为保护方法、系统及存储介质,设置了两个独立保护方法,即利用异常处理链对程序实行反调试保护和通过自实现的接口调用函数对程序中需要使用的API进行隐藏;上述两种方法既可独立执行又可相互配合执行。为了防止攻击者对软件进行Inline Hook,设置了统一的函数接口,并监控函数入口处代码是否被修(即hook),根据判断情况选择性地执行不同逻辑完成函数的调用,从而绕过hook;给所有API的调用套上了一层保护膜,通过设计统一的函数接口,所有API的调用都将借用该接口实现,通过这种方法,能够很好地实现程序行为隐藏,实现行为保护。

【技术实现步骤摘要】
基于ring3环对抗的程序行为保护方法、系统及存储介质
本专利技术涉及软件保护领域,尤其涉及一种基于ring3环对抗的程序行为保护方法、系统及存储介质。
技术介绍
软件研发具备难度高、周期长等特点,凝聚了软件开发者的心血,具备极高的商业价值。正因如此,软件存在破解、外挂等安全风险,以及同行的竞品分析风险,为此,需要研究保护软件的方法,阻止攻击者非法修改或分析软件逻辑,避免软件产品的核心技术泄露。虽然国家已经出台了相关政策保护软件开发者的合法利益,加强了公众的产权保护意识,但是仍然有攻击者针对软件产品进行分析,破解和产出外挂,从而获取巨大的经济利益。因此,技术保护是针对软件破解者最直接的保护手段。目前攻击者对软件分析的角度一般分为两种:静态分析和动态分析。攻击者可以利用现有的一些分析工具,从软件本身出发,使用反汇编或者反编译工具对二进制程序整体的逻辑架构进行分析,对关键逻辑进行定位,理解代码逻辑。在windows平台下,攻击者静态分析的思路如下图1,从图1可知,攻击者可以从可执行文件,dll或者驱动程序入手,通过直接分析或者间接分析的手段本文档来自技高网...

【技术保护点】
1.一种基于ring3环对抗的程序行为保护方法,其特征在于,包括以下步骤:/nS1、捕捉异常事件,在自定义的异常处理链中设置检测代码,判断程序是否被调试,如果被调试,则终止程序的运行;如果未检查出是否被调试,则进行下一步;/nS2、采用自实现GetModuleHandle函数获取动态链接库中dll的基地址;并根据获取到的dll的基地址,以及想获取的API函数名,利用自定义GetProcAddress函数,得到API函数的地址,并将API函数的地址按照匹配规则保存在函数向量中,隐藏API函数;/nS3、设置统一函数接口,检测被调用的API函数是否被Inline Hook,若是,则绕过被Hook的...

【技术特征摘要】
1.一种基于ring3环对抗的程序行为保护方法,其特征在于,包括以下步骤:
S1、捕捉异常事件,在自定义的异常处理链中设置检测代码,判断程序是否被调试,如果被调试,则终止程序的运行;如果未检查出是否被调试,则进行下一步;
S2、采用自实现GetModuleHandle函数获取动态链接库中dll的基地址;并根据获取到的dll的基地址,以及想获取的API函数名,利用自定义GetProcAddress函数,得到API函数的地址,并将API函数的地址按照匹配规则保存在函数向量中,隐藏API函数;
S3、设置统一函数接口,检测被调用的API函数是否被InlineHook,若是,则绕过被Hook的代码,否则,直接调用API函数,实现有选择性地完成系统调用。


2.根据权利要求1所述的基于ring3环对抗的程序行为保护方法,其特征在于,在S1中,捕捉异常事件时,包括如下步骤:
在异常处理链分发流程中,设置取消线程调试事件,使异常调用链接管异常;
从EXCEPTION_RECORD,CONTEXT结构中获取异常类型,异常信息以及异常上下文;
设置DR0~DR3调试寄存器的值为固定的陷阱值,在自定义的异常处理链中通过比对陷阱值,并检测异常类型和异常地址所在页的页属性进行反调试;
通过InlineHookRtlpCallVectoredHandlers函数,先于VEH调试器接管异常,掌握代码逻辑执行流,实现代码控制,进行反调试检测。


3.根据权利要求2所述的基于ring3环对抗的程序行为保护方法,其特征在于:在S1中依据异常处理链的分发逻辑设置联合反调试框架,实现反调试,所述异常处理链的分发逻辑包括如下步骤:
S101、系统第一次分发被调试程序发出的调试事件,如果存在调试器调用
WaitForDebugEvent函数,则WaitForDebugEvent函数会返回一个DEBUG_EVENT结构体,如果没有调试器处理调试事件,则进行下一步;
S102、系统进入异常分发处理逻辑,经过RtlDispatchException函数,进行异常处理,RtlpCallVectoredHandlers函数将异常分发给注册的VEH函数,如果无法处理异常,则进行下一步;
S103、系统继续执行异常分发处理逻辑,经过KiUserExceptionDispatcher函数,RtlDispatchException函数和RtlpExecuteHandlerForException函数将异常分发给注册的SEH函数,如果无法处理异常,则进行下一步;
S104、系统再次发出被调试程序发出的调试事件,如果存在调试器,则由调试器接管,否则,则进行下一步;
S105、系统执行异常分发处理逻辑,经过KiUserExceptionDispatcher函数,RtlDispatchException函数和RtlExecuteHandlerForException函数将异常分发给系统处理异常的UEF函数,在分发异常给UEF函数时,会调用NtQueryInformationProcess函数,并设置函数的第二个参数ProcessInformationClass为ProcessDebugPort,判断当前进程是否被调试,如果被调试,则终止程序的运行。


4.根据权利要求1所述的基于ring3环对抗的程序行为保护方法,其特征在于,在S2中,采用自实现GetModuleHandle函数获取到的动态链接库中dll的基地址时,包括以下步骤:
a0、分析PEB结构,在PEB结构中偏移0x0C的位置获取PEB_LDR_DATA结构,通过该结构中存在三个LIST_ENTRY指针,得到三条包含映像以及动态链接库相关信息的双链;
a1、通过双链先获取kernel32.dll的基地址;
a2、利用获取的kernel32.dll的基地址,获得LoadLibrary函数的地址;
a3、利用LoadLibrary函数的地址获取...

【专利技术属性】
技术研发人员:朱朝阳周亮缪思薇唐志军朱亚运陈锦山何金栋崔宝江林晴雯
申请(专利权)人:中国电力科学研究院有限公司国网福建省电力有限公司电力科学研究院国家电网有限公司
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1