0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

利用GCC插件实现代码分析和安全审计

zz爱尚科技 来源:zz爱尚科技 作者:zz爱尚科技 2022-10-13 14:00 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

利用GCC插件实现代码分析和安全审计

GCC 4.5.0开始引入的一项插件功能,允许用户通过插件来干预GCC的编译过程,获取到GCC编译过程中的各种数据,甚至可以修改编译过程中生成的中间数据,从而达到修改最终生成的二进制文件行为的目的(注:特别需要注意的是GCC-Plugin的API是会随版本变化的)。此特性从程序员的角度来看,就相当于把原来GCC的黑盒编译过程一下子打开了,GCC编译的过程数据可以“大白于天下”,可以清清楚楚的看个够。

下图为GCC编译架构****

image.png

GCC编译过程与插件的交互流程

image.png

注:图引自DragonEgg 在"Reimplementing llvm-gcc as a gcc plugin"

开源GCC插件列表**** (来自https://gcc.gnu.org/wiki/plugins):

image.png

基于GCC此插件特性,从安全测试的角度来看,可以用它来干什么呢?

A.可以把GCC编译过程的内部数据结构图形化,方便分析应用程序。****

图形化对象可以是控制流图、函数调用图、支配图、Tree结构、Gimple结构、RTX结构、Pass列表等等。

下图是Gimple层次图**** :

image.png

B、 利用可以修改中间数据的能力,可以不用修改源代码就能添加新功能的功能,从而实现动态安全分析、安全加固的能力。

在安全测试中为了监控程序执行路径情况,需要通过动态插装来实现,常见的插装工具有Pin、Dynamo,但这些动态插装会对程序的运行性能产生影响,降低程序运行效率,严重的会导致程序不能正常运行。但如果能预先在目标程序中把插装代码编译进去,这样既兼顾到性能,有兼顾到实现插装的目的,一般要实现这个目的都是在源代码层面由开发人员增加插装代码,但增加的代码只是为了测试的目的,在实际发布版本中是不需要的,因此直接在源代码层面增加插装代码就给代码维护带来的不便,但如果我们应用GCC编译器的插件能力,在编译构建过程中自动添加插装代码到最终生成的二进制文件中,这样只需根据需要重新编译就能得到不同目的的应用程序而不需要修改任何一行源代码,既增加插装代码的动作对上层是透明的。

基于上述在编译过程中自动增加插装代码,可以实现对测试活动的度量和提升测试效率,比如测试时代码覆盖率的统计与度量,基于执行路径来优化测试用例提升fuzz效率等等功能。

总结:

利用GCC的插件功能,可以利用编译过程中的内部数据来帮助安全分析人员对程序进行安全分析和安全加固等事情,提升程序分析效率和分析精准度。

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • GCC
    GCC
    +关注

    关注

    0

    文章

    112

    浏览量

    26412
  • 代码
    +关注

    关注

    30

    文章

    4976

    浏览量

    74359
  • 插件
    +关注

    关注

    0

    文章

    346

    浏览量

    23630
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    从 802.1X 到 MFA:如何利用 RADIUS 协议升级企业网络准入安全

    本文深度解析 RADIUS 协议及其核心 AAA 机制。通过探讨其在企业 Wi-Fi 与接入认证中的实际运作流程,帮助您掌握如何利用 RADIUS 构建安全、可审计的网络准入环境。立即阅读,了解企业级身份验证的基石!
    的头像 发表于 03-05 14:39 227次阅读
    从 802.1X 到 MFA:如何<b class='flag-5'>利用</b> RADIUS 协议升级企业网络准入<b class='flag-5'>安全</b>?

    分析嵌入式软件代码的漏洞-代码注入

    安全漏洞时,测试人员必须采取一个攻击者的心态。 诸如模糊测试的技术可能是有用的,但是该技术通常太随机,无法高度可靠。 静态分析可以有效地发现代码注入漏洞。注意到早期生成的静态分析
    发表于 12-22 12:53

    如何确保电能质量在线监测装置的用户操作日志审计功能的安全性?

    确保电能质量在线监测装置用户操作日志审计功能的安全性,核心是构建 “日志全生命周期安全防护体系” ,覆盖 “日志生成→存储→访问→传输→备份→销毁” 全流程,同时结合技术防护、权限管控、合规验证
    的头像 发表于 12-11 16:49 1420次阅读
    如何确保电能质量在线监测装置的用户操作日志<b class='flag-5'>审计</b>功能的<b class='flag-5'>安全</b>性?

    电能质量在线监测装支持用户操作日志审计吗?

    是的,主流电能质量在线监测装置普遍支持用户操作日志审计功能 ,这是电力系统安全防护与合规性要求的重要组成部分,符合《电力监控系统安全防护规定》《网络安全法》等法规标准。 一、日志
    的头像 发表于 12-11 16:48 1313次阅读
    电能质量在线监测装支持用户操作日志<b class='flag-5'>审计</b>吗?

    现代功率分析仪的演进

    仪的演进不仅反映了技术进步,更深刻影响着新能源、电动交通、智能制造等关键领域的发展。本文将深入探讨现代功率分析仪的核心特点及其未来发展趋势,揭示其在推动能源高效利用中的
    的头像 发表于 11-10 14:40 537次阅读
    <b class='flag-5'>现代</b>功率<b class='flag-5'>分析</b>仪的演进

    如何利用 gcc 编译Ccode?

    最近在玩e203_hbirdv2,利用默认的case 可以仿真。现在想自己写C code 进行仿真,请问该如何利用 gcc 编译?有没有 详细的教程。
    发表于 11-05 12:37

    中软国际审计大模型创新驱动智领未来

    智领未来》的演讲,深入剖析了大模型如何为审计行业打破传统局限、重构工作模式。她表示,审计大模型不仅是技术驱动的必然趋势,更是推动审计行业突破传统瓶颈、实现智能化跃迁的关键力量。
    的头像 发表于 09-28 12:35 1244次阅读

    GCC编译器,怎么才能实现c文件中未被调用的函数,不会被编译呢?

    GCC编译器,怎么才能实现c文件中未被调用的函数,不会被编译?有什么编译选项可以设置吗? 移植代码,有些函数没被调用的函数想留在代码里,但不想被编译,编译的话报错报警告啥的太多了,而且
    发表于 09-28 12:25

    【Labview技巧合集】11 实现脚本化插件编程

    【Labview技巧合集】11 实现脚本化插件编程
    发表于 09-02 18:10

    协议分析仪能监测哪些异常行为?

    协议分析仪通过深度解析网络通信中的协议字段、时序和状态,能够精准识别多种异常行为,涵盖从配置错误到恶意攻击的广泛场景。以下是其可监测的核心异常行为类型及具体实例:一、协议实现违规:违反标准或规范
    发表于 07-22 14:20

    中软国际以AI赋能某省构建统一智能审计整改系统

    随着审计监督从“查问题”向“促整改、强治理”延伸,如何推动审计整改从“事后补救”迈向“系统治理”,已成为提升国家治理体系和治理能力现代化水平的关键。面对整改周期长、跟踪难度大、管理方式分散等挑战,
    的头像 发表于 07-10 11:50 1132次阅读

    CW32L010 MCU在VSCode+GCC+EIDE+JLink下的使用示例

    、安装Embedded IDE、Cortex-Debug等插件。 2、下载安装gcc-arm-none-eabi工具链。 3、运行VSCode,打开CW32L010 MCU的GCC示例工程
    的头像 发表于 07-01 14:52 1232次阅读
    CW32L010 MCU在VSCode+<b class='flag-5'>GCC</b>+EIDE+JLink下的使用示例

    KiCad-Parasitics:KiCad 寄生参数分析插件

    “   这是一款用于分析 PCB 编辑器中走线(wires)寄生参数的插件。   ”     要使用该插件,您必须在电路板上标记两个点。通常情况下,最好是选择由同一根走线连接的两个焊盘。标记后,该
    的头像 发表于 06-25 11:14 2266次阅读
    KiCad-Parasitics:KiCad 寄生参数<b class='flag-5'>分析</b><b class='flag-5'>插件</b>

    用 VSCode 编写自己的 KiCad 插件(下)

    成功,接下来可以写我们的 python 插件了。按照 kic ad  官方 开发手册, 实现一个显示 PCB 对应图层的插件: https://dev-docs.kicad.org/zh-cn
    的头像 发表于 06-19 11:44 3166次阅读
    用 VSCode 编写自己的 KiCad <b class='flag-5'>插件</b>(下)

    中软国际持续服务地方审计厅整改智能化

    近日,中软国际在某自治区审计厅开展审计整改智能管理项目。这标志着公司在政府审计整改领域的又一重要突破,进一步巩固了在政府审计领域的领先地位。
    的头像 发表于 06-06 14:14 955次阅读