Native API函数重构方法及装置制造方法及图纸

技术编号:9597021 阅读:66 留言:0更新日期:2014-01-23 02:28
本发明专利技术公开了一种Native?API函数重构方法及装置,属于计算机技术领域。所述方法包括:获取加载函数的系统调用号;将每个加载函数的系统调用号分别拷贝至自定义加载函数的代码体中;根据自定义加载函数将NTDLL.DLL加载至内存的指定位置;利用NTDLL.DLL中的Native?API函数分别重构自定义代码段内各个自定义Native?API函数。本发明专利技术通过模拟加载函数对NTDLL.DLL进行加载,利用加载后的NTDLL.DLL对Native?API函数进行重构;解决了现有技术中调用API函数时存在较大安全隐患的问题;在应用程序运行时可以直接调用重构后的自定义Native?API函数,达到了避免应用程序被恶意程序处理,提高应用程序安全性的效果。

【技术实现步骤摘要】
【专利摘要】本专利技术公开了一种Native?API函数重构方法及装置,属于计算机
。所述方法包括:获取加载函数的系统调用号;将每个加载函数的系统调用号分别拷贝至自定义加载函数的代码体中;根据自定义加载函数将NTDLL.DLL加载至内存的指定位置;利用NTDLL.DLL中的Native?API函数分别重构自定义代码段内各个自定义Native?API函数。本专利技术通过模拟加载函数对NTDLL.DLL进行加载,利用加载后的NTDLL.DLL对Native?API函数进行重构;解决了现有技术中调用API函数时存在较大安全隐患的问题;在应用程序运行时可以直接调用重构后的自定义Native?API函数,达到了避免应用程序被恶意程序处理,提高应用程序安全性的效果。【专利说明】Native API函数重构方法及装置
本专利技术涉及计算机
,特别涉及一种Native API函数重构方法及装置。
技术介绍
随着WINDOWS API (WINDOWS Application Programming Interface, WINDOWS 应用程序编程接口)编程的广泛普及和应用,越来越多的应用程序可以通过调用WINDOWS API函数来完成相应的功能。目前,应用程序在实现具体功能时,在应用层,首先需要加载与功能相关的DLL(Dynamic Link Library,动态链接库),然后根据 GetProcAddress 函数获取 DLL 中 WINDOWSAPI函数的起始地址,根据这些起始地址调用对应的WINDOWS API函数,这些WINDOWS API函数通常会最终调用较低级的Native API函数,这些Native API函数最终完成对驱动层的访问。在实现本专利技术的过程中,专利技术人发现现有技术至少存在以下问题:在应用层上,恶意程序(比如利用钩子Η00Κ技术的程序)可以预先处理GetPiOcAddress函数,以得到相关的API函数(通常可以包括WINDOWS API函数或者Native API函数)的起始地址,并获取API函数的内容或对API函数的内容进行修改。因此,在应用层上,恶意程序均可以非法监听、拦截或篡改API函数中的内容,从而使得应用程序存在较大的安全隐患。
技术实现思路
为了解决现有技术中调用API函数的过程中容易被恶意程序预先处理,使得应用程序存在较大的安全隐患的问题,本专利技术实施例提供了一种Native API函数重构方法及装置。所述技术方案如下:第一方面,提供了一种Native API函数重构方法,所述方法,包括:获取加载函数的系统调用号,所述加载函数用于将动态链接库NTDLL.DLL加载至内存,所述NTDLL.DLL中包含Native API函数;将每个所述加载函数的系统调用号分别拷贝至与所述加载函数对应的各个自定义加载函数的代码体中,所述自定义加载函数位于用于执行应用程序的自定义代码段中,所述自定义加载函数的代码体中的初始代码与所述加载函数中的代码相同;根据包含有所述加载函数的系统调用号的所述自定义加载函数将所述NTDLL.DLL加载至所述内存的指定位置;利用位于所述指定位置的NTDLL.DLL中的Native API函数中的代码分别重构所述自定义代码段内与所述Native API函数对应的各个自定义Native API函数中的代码。在第一方面的第一种可能的实施方式中,在所述根据包含有所述加载函数的系统调用号的所述自定义加载函数将所述NTDLL.DLL加载至所述内存的指定位置之前,还包括:获取分配函数的系统调用号,所述分配函数用于为所述加载函数分配内存读写执行权限;将所述分配函数的系统调用号拷贝到所述自定义分配函数的代码体内,所述自定义分配函数位于所述自定义代码段中;利用包含有所述分配函数的系统调用号的所述自定义分配函数为所述自定义加载函数分配内存读写执行权限。结合第一方面或者第一方面的第一种可能的实施方式,在第二种可能的实施方式中,所述根据包含有所述加载函数的系统调用号的所述自定义加载函数将所述NTDLL.DLL加载至所述内存的指定位置之前,还包括:将用于调用内核函数的公用代码段拷贝到所述自定义代码段中;所述根据包含有所述加载函数的系统调用号的所述自定义加载函数将所述NTDLL.DLL加载至所述内存的指定位置,包括:根据包含有所述加载函数的系统调用号的所述自定义加载函数以及所述自定义代码段中的所述公用代码段将所述NTDLL.DLL加载至所述内存的指定位置。结合第一方面、第一方面的第一种可能的实施方式或者第一方面的第二种可能的实施方式,在第三种可能的实施方式中,在所述将用于调用内核函数的公用代码段拷贝到所述自定义代码段中之前,还包括:遍历内存中NTDLL的导出表,获取指定的测试函数的起始地址;根据所述测试函数的起始地址调用所述测试函数以获取系统类型;所述将用于调用内核函数的公用代码段拷贝到所述自定义代码段中,包括:根据所述系统类型将用于调用与所述系统类型对应的内核函数的公用代码段拷贝至所述自定义代码段中。结合第一方面、第一方面的第一种可能的实施方式、第一方面的第二种可能的实施方式或者第一方面的第三种可能的实施方式,在第四种可能的实施方式中,所述系统类型为64位W0W64模式、32位或64位,所述根据所述系统类型将用于调用与所述系统类型对应的内核函数的公用代码段拷贝至所述自定义代码段中,包括:当所述系统类型为64位时,将用于调用64位W0W64模式的内核函数的公用代码段拷贝到所述自定义代码段中的第一指定位置;或者,当所述系统类型为32位时,将用于调用32位的内核函数的公用代码段拷贝到所述自定义代码段中的第二指定位置;或者,当所述系统类型为64位时,将用于调用64位的内核函数的公用代码段拷贝到所述自定义代码段中的第三指定位置。第二方面,提供了一种Native API函数重构装置,所述装置,包括:第一获取模块,用于获取加载函数的系统调用号,所述加载函数用于将动态链接库NTDLL.DLL加载至内存,所述NTDLL.DLL中包含Native API函数;第一拷贝模块,用于将每个所述加载函数的系统调用号分别拷贝至与所述加载函数对应的各个自定义加载函数的代码体中,所述自定义加载函数位于用于执行应用程序的自定义代码段中,所述自定义加载函数的代码体中的初始代码与所述加载函数中的代码相同;加载模块,用于根据包含有所述加载函数的系统调用号的所述自定义加载函数将所述NTDLL.DLL加载至所述内存的指定位置;重构模块,用于利用位于所述指定位置的NTDLL.DLL中的Native API函数中的代码分别重构所述自定义代码段内与所述Native API函数对应的各个自定义Native API函数中的代码。在第二方面的第一种可能的实施方式中,所述装置,还包括:第二获取模块,用于获取分配函数的系统调用号,所述分配函数用于为所述加载函数分配内存读写执行权限;第二拷贝模块,用于将所述分配函数的系统调用号拷贝到所述自定义分配函数的代码体内,所述自定义分配函数位于所述自定义代码段中;分配模块,用于利用包含有所述分配函数的系统调用号的所述自定义分配函数为所述自定义加载函数分配内存读写执行权限。结合第二方面或者第本文档来自技高网
...

【技术保护点】
一种Native?API函数重构方法,其特征在于,所述方法,包括:获取加载函数的系统调用号,所述加载函数用于将动态链接库NTDLL.DLL加载至内存,所述NTDLL.DLL中包含Native?API函数;将每个所述加载函数的系统调用号分别拷贝至与所述加载函数对应的各个自定义加载函数的代码体中,所述自定义加载函数位于用于执行应用程序的自定义代码段中,所述自定义加载函数的代码体中的初始代码与所述加载函数中的代码相同;根据包含有所述加载函数的系统调用号的所述自定义加载函数将所述NTDLL.DLL加载至所述内存的指定位置;利用位于所述指定位置的NTDLL.DLL中的Native?API函数中的代码分别重构所述自定义代码段内与所述Native?API函数对应的各个自定义Native?API函数中的代码。

【技术特征摘要】

【专利技术属性】
技术研发人员:冯世杰
申请(专利权)人:广州华多网络科技有限公司
类型:发明
国别省市:

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

1