#yyds干货盘点#静态编译的elf文件如何加密

网友投稿 307 2022-10-04


#yyds干货盘点#静态编译的elf文件如何加密

什么是静态编译

静态编译,就是编译器在编译可执行文件的时候,将可执行文件需要调用的对应静态库(.a或.lib)中的部分提取出来,链接到可执行文件中去,使可执行文件在运行的时候不依赖于动态链接库。

与动态编译的区别

动态编译的可执行文件需要附带一个的动态链接库。在执行时,需要调用其对应动态链接库中的命令。所以其优点一方面是缩小了执行文件本身的体积,另一方面是加快了编译速度,节省了系统资源。缺点一是哪怕是很简单的程序,只用到了链接库中的一两条命令,也需要附带一个相对庞大的链接库;二是如果其他计算机上没有安装对应的运行库,则用动态编译的可执行文件就不能运行。

静态编译就是编译器在编译可执行文件的时候,将可执行文件需要调用的对应静态库(.a或.lib)中的部分提取出来,链接到可执行文件中去,使可执行文件在运行的时候不依赖于动态链接库。所以其优缺点与动态编译的可执行文件正好互补。

静态编译elf文件加密

一般的加壳工具无法支持对静态编译的elf文件加密,可使用VirboxProtector对此类elf文件加密。

VirboxProtector将elf文件加密的保护技术主要是Arm虚拟化技术。

ARM-虚拟化保护技术

ARM-虚拟化技术借鉴了桌面应用中对 x86 指令的虚拟化保护思路,将其完整地适配到了 ARM 平台,该技术的实现完全独立,直接对编译生成的二进制文件进行保护。

基于ARM-虚拟化技术的保护过程无需配置编译器,由单独的工具完成。典型的工具如:Virbox Protector。

ARM-虚拟化保护方案优势

无法被反编译

通过指令切片,间接跳转等处理,生成的指令块无法被 IDA 分析,只能查看汇编指令。

无函数边界

通过链接器乱序再重定位,生成的指令块在可执行文件中的位置是随机的,函数保护后变成了无数个随机位置的指令碎片,无法知道函数的边界。

更精细的保护粒度

直接对 ARM 指令保护,可以更精细的控制指令和寄存器,灵活性高,能够达到更高的安全性上限。

适应性高

直接处理 ARM 指令,不受限于开发语言和语法标准,几乎可以保护任何编译为 ARM 架构的程序,如 golang 等。


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:springboot项目启动指定对应环境的方法
下一篇:#yyds干货盘点#安全应急响应之windows系统日志分析
相关文章

 发表评论

暂时没有评论,来抢沙发吧~