当前位置: 首页 > news >正文

木马查杀之AST初识篇

一、AST 定义

    抽象语法树(Abstract Syntax Tree,AST)是源代码的一种抽象表示形式。它以树状结构描述源代码的语法构成,树上的每个节点都对应源代码中的一个语法结构或元素,像变量声明、函数调用、表达式等。通过这种结构化的表示,能让程序分析变得更加高效和准确。
    词法分析这一步,就像是有个超级厉害的 “断句大师”,把这串字符按照一定的规则,拆分成一个个有意义的小单元,我们叫它们词法单元。
【作用】将代码字符,就变成了一个个清晰的 “小零件”

二、AST 分析过程

(一)词法分析

    将输入的源代码字符串按字符流方式扫描,把它分割成一个个词法单元,比如关键字(如ifwhile)、标识符(变量名、函数名)、运算符(+*)等。这一步就像是把一篇文章拆分成一个个的单词。

(二)语法分析

    基于词法分析得到的词法单元,依据编程语言的语法规则构建 AST。语法分析器按照语法规则对词法单元进行组合与推导,明确它们之间的语法关系,从而构建出代表整个源代码语法结构的抽象语法树。这就如同把单词按照语法规则组成句子和段落。

    说人话,就是语法分析就像是一个 “组装大师”,它手里有一本编程语言的 “语法规则手册”,它会依据这本手册,把那些词法单元按照规则进行组合和推导,通过这样一步步的操作,构建出一棵代表整个源代码语法结构的抽象语法树。

输入源代码字符串
词法分析
生成词法单元
语法分析
构建抽象语法树

三、污点追踪定义

    污点追踪(Taint Tracking)是一种程序分析技术,用于跟踪程序中数据的传播和使用情况,尤其是那些可能存在安全风险或需要特殊处理的数据。被标记为 “污点” 的数据,通常来自外部不可信源,或者对程序安全至关重要。

四、污点追踪实现方式

(一)静态污点追踪

    在程序的源代码或字节码级别上进行分析。通过对程序的控制流和数据流进行分析,确定数据的来源和可能的传播路径,标记出可能存在安全风险的数据传播路径。这种方式不需要实际运行程序,提前发现潜在风险。
【一句话】在程序还没真正运行之前,进行分析程序是否存在问题

(二)动态污点追踪

    在程序运行时对数据的流动进行实时监测和追踪。通过在程序运行过程中插入一些监测代码或利用特定的调试工具,当数据在程序中进行赋值、传递、计算等操作时,动态地记录数据的传播轨迹和变化情况。这种方式能更真实地反映程序运行时的数据情况。
【一句话】在程序真正 “开工干活”(运行)时,把数据的传播轨迹和变化情况都记录下来

在这里插入图片描述

下一步

  • 通过 AST 分析木马的代码结构,利用污点追踪监测恶意数据的流向。

相关文章:

  • UE5.5 Niagara发射器更新属性
  • 迅为RK3568开发板篇Openharmony配置HDF控制UART-实操-HDF驱动配置UART-UART应用开发-UART驱动API接口介绍
  • 四层协议攻防手册:从SYN Flood到UDP反射的深度防御
  • 从前端视角理解消息队列:核心问题与实战指南
  • cesium1.126显示等高线
  • 深度学习基础:线性代数本质2——线性组合、张成的空间与基
  • Linux进程管理15 - CFS调度器2 - 数据结构关系
  • CAMEL 学习笔记一
  • 深入解析 RAG:检索增强生成的原理与应用
  • 【NLP 34、实践 ⑧ 基于faq知识库和文本匹配算法进行意图识别】
  • 如何进行项目风险评估
  • 游戏引擎学习第151天
  • 罗德与施瓦茨SMCV100B,不同技术的多种应用矢量信号发生器
  • AI智能眼镜主控芯片:技术演进与产业生态的深度解析
  • ubuntu20不同版本的cudnn切换
  • golang 静态库 Undefined symbol: __mingw_vfprintf
  • C++蓝桥杯基础篇(十一)
  • 【从零开始学习计算机科学】操作系统(八)IO管理
  • 搜广推校招面经四十五
  • Spring (十)事务
  • 广东早熟荔枝“抢滩”上海,向长三角消费者喊话:包甜,管够
  • 专访|韩国世宗研究所中国研究中心主任:李在明若上台将推行均衡外交
  • 从采购到销售!市场监管总局指导行业协会防控肉品风险
  • 今起公开发售,宁德时代将于5月20日在港股上市
  • 梅花奖在上海|穿上初演时的服装,“鹮仙”朱洁静再起飞
  • 德国将不再公布对乌克兰军事支持的细节