快速开发x86/x64平台shellcode的方法及系统的制作方法

文档序号:9727124阅读:912来源:国知局
快速开发x86/x64平台shellcode的方法及系统的制作方法
【技术领域】
[0001]本发明涉及计算机安全领域,尤其涉及一种快速开发x86/x64平台shellcode的方法及系统。
【背景技术】
[0002]传统技术中,使用汇编语言开发shellcode代码。但是使用汇编语言开发shellcode代码在代码提取时非常不方便。而且x86平台与x64平台汇编代码不相同,需要维护两个版本代码。另外,使用汇编开发shellcode较复杂、容易出错、对人员要求高,开发人员需要花费大量精力维护,不宜于实现复杂功能。
[0003]实际使用中,在利用缓冲区溢出漏洞以及其它内存类安全漏洞测试/攻击时,如何快速对x86/x64平台shellcode代码进行快速开发、提取,对安全测试/攻击过程和后续完善溢出测试产品payload至关重要。因此,研究一种快速开发x86/x64平台shellcode的方法是一亟待解决的问题。

【发明内容】

[0004]基于此,有必要针对传统技术中x86/x64平台shellcode代码开发复杂,且维护不便的问题,提供一种开发速度快,且版本兼容的生成x86/x64平台shellcode的方法及系统。
[0005]为实现本发明目的提供的一种快速开发x86/x64平台shellcode的方法及系统,包括以下步骤:
[0006]使用C语言编写函数动态获取操作系统的应用程序接口 ;
[0007]根据获取的所述应用程序接口编写所需的shellcode代码;
[0008]使用编译器对所编写的shellcode代码进行编译,生成x86或x64平台的ΕΧΕ文件;
[0009]使用提取工具从所述ΕΧΕ文件代码段中提取出shellcode代码。
[0010]作为一种快速开发x86/x64平台shellcode的方法的可实施方式,还包括以下步骤:
[0011]使用加载器对所提取出的shellcode代码的功能的完整性进行验证。
[0012]作为一种快速开发x86/x64平台shellcode的方法的可实施方式,所述使用编译器对所编写的shellcode代码进行编译,生成x86或者x64平台的ΕΧΕ文件之前,还包括以下步骤:
[0013]将编译器的参数设置为预设条件;
[0014]其中,所述预设条件包括:
[0015]优化参数为:最小优化;优先选择参数为:代码大小优先;缓冲区检查参数为:否;运行库参数为:多线程dll ;省略指针参数为..是。
[0016]作为一种快速开发x86/x64平台shellcode的方法的可实施方式,使用C语言编写的函数动态获取操作系统的应用程序接口,包括以下步骤:
[0017]获取X86或x64平台的PEB地址,得到所述PEB的结构信息;
[0018]根据所述PEB的结构信息查询应用程序接口函数名,得到所需的应用程序接口。
[0019]作为一种快速开发x86/x64平台shellcode的方法的可实施方式,x86平台通过获取地址0x60中的信息获取PEB的结构信息;
[0020]x64平台通过获取地址0x30中的信息获取PEB的结构信息。
[0021]基于同一发明构思的一种快速开发x86/x64平台shellcode的系统,包括应用程序接口获取模块、编译模块及代码提取模块,其中:
[0022]所述应用程序接口获取模块,用于使用C语言编写动态获取操作系统的应用程序接口 ;
[0023]所述编译模块,用于使用编译器,对利用应用程序接口获取模块获取应用程序接口,对使用该应用程序接口编写的shellcode代码进行编译,生成x86或x64平台的ΕΧΕ文件;
[0024]所述代码提取模块,用于使用提取工具从所述ΕΧΕ文件代码段中提取出shellcode 代码。
[0025]作为一种快速开发x86/x64平台shellcode的系统的可实施方式,还包括验证模块,用于使用加载器对所提取出的shellcode代码的功能的完整性进行验证。
[0026]作为一种快速开发x86/x64平台shellcode的系统的可实施方式,在使用编译器对所编写的shellcode代码进行编译前,还需要将编译器的参数设置为预设条件;
[0027]所述预设条件包括:
[0028]优化参数为:最小优化;优先选择参数为:代码大小优先;缓冲区检查参数为:否;运行库参数为:多线程dll ;省略指针参数为..是。
[0029]作为一种快速开发x86/x64平台shellcode的系统的可实施方式,应用程序接口获取模块包括PEB地址获取子模块及查询子模块,其中:
[0030]所述PEB地址获取子模块,用于获取x86或x64平台的PEB地址,得到所述PEB的结构信息;
[0031]所述查询子模块,用于根据所述PEB的结构信息查询应用程序接口函数名,得到所需的应用程序接口。
[0032]作为一种快速开发x86/x64平台shellcode的系统的可实施方式,x86平台通过获取地址0x60中的信息获取PEB的结构信息;
[0033]x64平台通过获取地址0x30中的信息获取PEB的结构信息。
[0034]本发明的有益效果包括:
[0035]本发明提供的一种快速开发x86/x64平台shellcode的方法及系统,通过高级C语言进行shellcode代码的编写,代码编写速度快,使用C语言编写动态获取应用程序接口(API),可自动适应x86平台或x64平台。开发人员可统一维护x86和x64平台shellcode代码,做到shellcode代码简单、易维护、代码统一、可容易实现复杂功能。同时,提取x86/x64 shellcode简单方便,也可容易验证shellcode功能是否可用。其有效帮助开发人员实现shellcode多态变形、加密等高级功能。
【附图说明】
[0036]图1为本发明一种快速开发x86/x64平台shellcode的方法的一具体实施例的流程图;
[0037]图2为本发明一种快速开发x86/x64平台shellcode的系统的一具体实施例的结构示意图;
[0038]图3为本发明一种快速开发x86/x64平台shellcode的系统的另一具体实施例的结构示意图;
[0039]图4为应用程序接口获取模块的构成示意图。
【具体实施方式】
[0040]为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图对本发明的快速开发x86/x64平台shellcode的方法及系统的【具体实施方式】进行说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
[0041]本发明一实施例的快速开发x86/x64平台shellcode的方法,如图1所示,包括以下步骤
[0042]S100,使用C语言编写动态获取操作系统的应用程序接口(API)。本发明实施例与传统技术的使用汇编语言进行shellcode代码编写不同,其使用高级C语言进行代码开发工作。通过定义一个GetProcAddressHash函数实现动态获取API (Applicat1nProgramming Interface,应用程序编程接口)功能。从而使用者在进行代码开发时,可利用GetProcAddressHash函数按照自己的需求动态获取相关API进行代码开发,实现所需功倉泛。
[0043]S200,根据获取的应用程序接口编写所需的shellcode代码。在进行代码的开发过程中,使用者可根据获取到的应用程序接口进行进一步的代码编写,实现自己所需的功能。或者换一个角度讲,开发人员在进行代码开发时,可首先使用C语言编写的函数获取操作系统中想要的应用程序接口,再对获取的应用程序接口进行所需的代码开发。
[0044]S300,使用编译器对所编写的shellcode代码进行编译,生成x86或x64平台的ΕΧΕ文件。与常规的程序编写一样,代码编写完成后使用编译器对代码进行编译。生成ΕΧΕ文件,以便后续提取代码。
[0045]S400,使用提取工具从ΕΧΕ文件中提取出shellcode代码。使用提取工具,从x86平台或x64平台的ΕΧΕ文件中的代码段提取出shellcode数据,提取出的shellcode数据(即shellcode代码),可拿来直接测试或攻击使用。其中,代码的提取可使用传统技术中的代码提取工具进行提取,此处不再做详细描述。
[0046]本发明实施例的快速开发x86/x64平台shellcode的方法,通过较高级的C语言进行shellcode代码的编写,代码开发速度快,并使用C语言编写动态获取应用程序接口,可自动适应x86平台或x64平台平台。开发人员可统一维护x86和x64平台shellcode代码,做到shellcode代码简单、易维护、代码统一、可容易实现复杂功能。同时,提取x86/x64平台shellcode简单方便,也可容易验证shellcode功能是否可用。其有效帮助开发人员实现shellcode多态变形、加密等高级功能。如:内存load dll、反调试、反沙箱等。且开发高级功能shellcode也可保证shellcode的保密性、隐藏性,代码中也很容易增加各种对抗特性。
[0047]在其中一个快速开发x86/x64平台shellcode的方法的实施例中,还包括以下步骤:
[0048]S400,使用加载器对所提取出的shellcode代码的功能的完整性进行验证。
[0049]本步骤是把提取出来的shellcode代码,使用加载器进行测试以验证功能完整性。在代码实际使用前进行测试,确保代码在实际使用中的性能。
[0050]另外,在使用编译器对所编写的shellcode代码进行编译,生成x86或者x64平台的ΕΧΕ文件之前,还需要对编译器进行设置。将编译器的参数设置为预设条件。所述的预设条件即为能够使编译器有效生成可被提取的shellcode数据的设置。本发明实施例中对编译器进行如下设置:优化,大小选择最小优化;优先大小或速度,选择代码大小优先;缓冲区检查,设置为否;运行库,选择多线程dll ;省略指针,选择为是。如此设置可让生成的文件最小化、最优化。
[0051]进一步的,使用C语言编写的函数动态获取操作系统的应用程序接口,包括以下步骤:
[0052]S110,获取x86或x64平台的PEB地址,得到PEB的结构信息。其中,x86平台通过获取地址0x60中的信息获取PEB的结构信息;x64平台通过获取地址0x30中的信息获取PEB的结构信息。具体的,GetProcAddressHash 函数先获取 PebAddress,取得PebAddress_>Ldr得到MY_PEB_LDR_DATA结构信息。相关部分代码参考如下:
[0053]#if defined (_WIN64)
[0054
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1