System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术涉及网络安全,尤其涉及一种面向arm单片机的拟态编译方法及装置。
技术介绍
1、现有技术在存储器中通过代码备份手段,增加嵌入式系统的冗余度,或者通过修改链接文件,插入混淆代码手段来增加plc系统的冗余度。现有技术当中缺少针对栈区数据进行保护,设备运行时无法抵御攻击载荷放置在栈区的缓冲区溢出攻击。
技术实现思路
1、因为漏洞利用代码通常为二进制代码,由于程序镜像烧录至存储器后,各个区段的地址都已固定不变,所以设备接入网络后,存在着缓冲区溢出等类型漏洞的攻击风险,本专利技术针对上述问题,提出一种面向arm单片机的拟态编译方法及装置,以拟态防御理论为基础指导,通过构建加载基地址可变的地址冗余异构执行体,可以抵御此类型的攻击。
2、为了实现上述目的,本专利技术采用以下技术方案:
3、本专利技术一方面提出一种面向arm单片机的拟态编译方法,包括:
4、对交叉编译工具链所需的链接文件进行定制,以完成对可执行程序的内存布局;
5、针对arm架构、cortex系列内核的主控器,基于交叉编译技术,利用定制的交叉编译工具链所需的链接文件,通过编译链接实现此架构、内核下的只读数据段和栈区加载基地址均偏移的异构执行体。
6、进一步地,在编译实现异构执行体之后,还包括:
7、异构执行体对外部输入的数据进行处理,如果外部输入的数据为正常数据包,则各异构执行体的输出相同,如果外部输入的数据包括攻击数据包,则各异构执行体的输出不同。
8、进一步地,所述对交叉编译工具链所需的链接文件进行定制包括:
9、在交叉编译工具链的链接文件中,对栈区和只读数据段加载基地址进行设置。
10、进一步地,还包括:
11、对可执行程序的启动头文件的堆栈大小进行定制。
12、进一步地,所述交叉编译工具链包括fromelf、arm-linux-gcc。
13、进一步地,当采用fromelf时,具体按照以下方式对启动头文件以及交叉编译工具链所需的链接文件进行定制:
14、首先,在启动头文件start.s中设置栈区堆区的字节大小,其次,针对链接文件link.sct进行lr_irom1、er_irom1、rw_iram1的定制。
15、进一步地,链接文件link.sct的定制具体包括:
16、首先将rom区域划分为两部分,分别为lr__irom1和lr__irom2,其次,将ram区域也划分为两部分,分别为rw_iram1和rw_iram2,lr__irom1中内容代表初始化操作需要的数据,lr__irom2代表主要功能代码中的只读数据段基地址,rw_iram1代表初始化所需要的读写数据以及零数据加载基地址,rw_iram2中除了读写数据以及零数据外,栈区数据也在此段进行加载。
17、本专利技术另一方面提出一种面向arm单片机的拟态编译装置,包括:
18、链接文件定制模块,用于对交叉编译工具链所需链接文件进行定制,以完成对可执行程序的内存布局;异构执行体构建模块,用于针对arm架构、cortex系列内核的主控器,基于交叉编译技术,利用定制的交叉编译工具链所需的链接文件,通过编译链接实现此架构、内核下的只读数据段和栈区加载基地址均偏移的异构执行体。
19、进一步地,还包括:
20、异构执行模块,用于异构执行体对外部输入的数据进行处理,如果外部输入的数据为正常数据包,则各异构执行体的输出相同,如果外部输入的数据包括攻击数据包,则各异构执行体的输出不同。
21、进一步地,所述对交叉编译工具链所需的链接文件进行定制包括:
22、在交叉编译工具链的链接文件中,对栈区和只读数据段加载基地址进行设置。
23、进一步地,还包括:
24、启动头文件定制模块,用于对可执行程序的启动头文件的堆栈大小进行定制。
25、进一步地,所述交叉编译工具链包括fromelf、arm-linux-gcc。
26、进一步地,当采用fromelf时,具体按照以下方式对启动头文件以及交叉编译工具链所需的链接文件进行定制:
27、首先,在启动头文件start.s中设置栈区堆区的字节大小,其次,针对链接文件link.sct进行lr_irom1、er_irom1、rw_iram1的定制。
28、进一步地,链接文件link.sct的定制具体包括:
29、首先将rom区域划分为两部分,分别为lr__irom1和lr__irom2,其次,将ram区域也划分为两部分,分别为rw_iram1和rw_iram2,lr__irom1中内容代表初始化操作需要的数据,lr__irom2代表主要功能代码中的只读数据段基地址,rw_iram1代表初始化所需要的读写数据以及零数据加载基地址,rw_iram2中除了读写数据以及零数据外,栈区数据也在此段进行加载。
30、与现有技术相比,本专利技术具有的有益效果:
31、相比于硬件安全防御系统,本专利技术在抵御缓冲区溢出类型漏洞攻击方面拥有更小的存储开销、计算开销,具有优势。使用地址可变的异构冗余执行体的构建方法,可以减小缓冲区漏洞的攻击威胁。
32、因为单片机控制系统本身存在资源有限,故难以部署pc端安全措施。本专利技术利用修改链接文件的方案,实现加载地址可变的单片机控制系统的安全防护部署。
本文档来自技高网...【技术保护点】
1.一种面向ARM单片机的拟态编译方法,其特征在于,包括:
2.根据权利要求1所述的一种面向ARM单片机的拟态编译方法,其特征在于,在编译实现异构执行体之后,还包括:
3.根据权利要求1所述的一种面向ARM单片机的拟态编译方法,其特征在于,所述对交叉编译工具链所需的链接文件进行定制包括:
4.根据权利要求3所述的一种面向ARM单片机的拟态编译方法,其特征在于,还包括:
5.根据权利要求4所述的一种面向ARM单片机的拟态编译方法,其特征在于,所述交叉编译工具链包括fromelf、arm-linux-gcc。
6.根据权利要求5所述的一种面向ARM单片机的拟态编译方法,其特征在于,当采用fromelf时,具体按照以下方式对启动头文件以及交叉编译工具链所需的链接文件进行定制:
7.根据权利要求6所述的一种面向ARM单片机的拟态编译方法,其特征在于,链接文件link.sct的定制具体包括:
8.一种面向ARM单片机的拟态编译装置,其特征在于,包括:
9.根据权利要求8所述的一种面向ARM单片机
10.根据权利要求8所述的一种面向ARM单片机的拟态编译装置,其特征在于,还包括:
...【技术特征摘要】
1.一种面向arm单片机的拟态编译方法,其特征在于,包括:
2.根据权利要求1所述的一种面向arm单片机的拟态编译方法,其特征在于,在编译实现异构执行体之后,还包括:
3.根据权利要求1所述的一种面向arm单片机的拟态编译方法,其特征在于,所述对交叉编译工具链所需的链接文件进行定制包括:
4.根据权利要求3所述的一种面向arm单片机的拟态编译方法,其特征在于,还包括:
5.根据权利要求4所述的一种面向arm单片机的拟态编译方法,其特征在于,所述交叉编译工具链包括fromelf、arm-linux-gcc。
【专利技术属性】
技术研发人员:张大龙,梁本超,曹琰,李寒冰,橐云婷,
申请(专利权)人:嵩山实验室,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。