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

论文学习_Trex: Learning Execution Semantics from Micro-Traces for Binary Similarity

摘要:检测语义相似的函数在漏洞发现、恶意软件分析及取证等安全领域至关重要,但该任务面临实现差异大、跨架构、多编译优化及混淆等挑战。现有方法多依赖语法特征,难以捕捉函数的执行语义。对此,TREX 提出了一种基于迁移学习的框架,通过函数的微型执行轨迹学习执行语义,并迁移用于语义相似函数匹配。尽管微型轨迹本身精度有限,TREX 的关键在于利用其训练模型理解指令序列语义。该方法设计了无监督预训练任务,无需人工标注或特征工程,并引入分层Transformer架构以捕捉语义信息。在超过147万函数的跨架构、优化和混淆测试中,TREX 分别比先进方法提升7.8%、7.2%、14.3%,且运行速度提高8倍。消融实验验证了预训练的重要性,案例研究亦发现16个未公开的漏洞。代码与数据已开源:https://github.com/CUMLSec/trex。

引言

函数语义相似性指的是衡量两个函数在行为层面上的相似程度,这一能力在程序分析中具有基础性地位,并在实际安全领域中发挥着广泛作用,包括漏洞检测、漏洞利用生成、恶意软件谱系分析和数字取证等。例如,OWASP 在 2020 年的十大应用安全风险中就将“使用存在已知漏洞的组件”列为主要威胁之一。因此,在大规模软件项目中自动识别语义相似的易受攻击函数,能够显著减少人工审计的工作量。研究背景

在面向安全关键应用(如漏洞发现)进行语义相似函数匹配时,研究对象往往是二进制级别的软件,例如商用固件或遗留程序。但这一任务本身存在诸多困难:(1)函数在编译过程中会丢失高级语义信息,如数据结构定义等,使得分析难度大幅上升。(2)更为复杂的是,函数可能被编译用于不同的指令集架构,并经过多种编译优化或轻量级混淆处理,这进一步加剧了语义相似性识别的挑战。语义相似函数任务的挑战

近年来,基于机器学习的方法在应对上述挑战方面展现出巨大潜力。通过从函数二进制中学习稳健的特征,这类方法能够在不同体系结构、编译优化等级,甚至某些混淆情况下识别出语义相似的函数。其核心思路是让模型从函数中学习表示向量(即嵌入表示),然后通过两个函数嵌入之间的距离来衡量它们的相似度——距离越小,表示函数越相似。相比于依赖手工特征(如基本块数量)的传统签名方法,这类基于嵌入距离的策略已在多个研究中取得领先效果,表现优于早期技术。更重要的是,该策略在大规模函数匹配任务中极具优势,查找百万级函数仅需约0.1秒,效率极高。基于机器学习的语义相似函数检测


尽管已有方法取得了显著进展,但在处理语法和结构差异较大的语义相似函数时,匹配准确性仍面临挑战。其根本原因在于,代码的语义本质上是由其运行时行为决定的。然而,现有所有基于学习的方法都未考虑程序的执行语义,它们仅基于静态代码进行训练。这种训练方式容易使模型依赖于表层模式进行匹配,一旦这些模式发生变化或不存在,模型的准确性便会显著下降。核心思想,代码的语义本质上是由其运行时行为决定的

例如,考虑这样一对 x86 指令序列:mov eax, 2; lea ecx, [eax+4]mov eax, 2; lea ecx, [eax+eax*2],它们在语义上是等价的。但若一个机器学习模型仅关注语法特征,可能会因为两者共享如 moveaxleaecx 等相同子串,而错误地认为这是它们相似的主要依据。实际上,这种模式并未真正体现两者在语义上的等价关系。若模型无法理解大致的执行语义,就很容易依赖这些表面模式进行匹配,而忽略了本质原因:当 eax 为 2 时,[eax+eax*2][eax+4] 实际上计算的是相同的内存地址。现存问题,现有技术无法捕获代码运行时特征

现有的动态方法试图通过直接比较函数的运行时行为来规避静态分析中的局限性,以判断其语义相似性。然而,由于精准构造能够触达目标函数的输入是一项极具挑战且耗时的任务,相关研究通常采用“弱约束动态执行”的方式,即随机初始化函数的输入状态(如寄存器、内存)并直接执行目标函数。尽管这种方式避免了输入生成的复杂性,但若直接利用其生成的执行轨迹来判定函数相似性,往往会导致大量误报。例如,当两个本质不同的函数都对输入有严格检查时,随机输入可能频繁触发类似的浅层异常处理逻辑,从而使它们在行为上看起来“伪相似”。解释为什么不通过动态的方式实现运行时特征捕获

现有的静态方法和动态方法均存在问题


本文提出了一种名为 TREX(TRansfer-learning EXecution semantics)的方法,通过弱约束动态轨迹训练机器学习模型,从中学习指令在上下文中的近似执行语义。与以往直接利用这些轨迹进行相似性判断的方法不同,TREX 首先在多样化的轨迹数据上进行预训练,使模型掌握每条指令在特定上下文中的行为效果;随后再将预训练中获得的知识迁移用于语义相似函数的匹配任务。大量实验证明,这种对执行语义的近似学习在预训练阶段显著提升了语义相似函数匹配的准确性,尤其在跨体系结构、编译优化和混淆环境下,TREX 表现尤为突出。

核心观点在于,尽管弱约束动态执行轨迹中可能包含大量不可达的程序状态,但其中的许多指令仍然能够准确反映其真实的执行效果。因此,可以通过大量来自不同函数的轨迹数据,让机器学习模型观察并学习这些指令在实际上下文中的行为。一旦模型掌握了各类指令的大致执行语义,便能利用这些已学习的知识,进一步训练模型以实现语义相似函数的匹配。这样,在实际推理阶段,无需动态执行待匹配的函数,大幅降低了运行时开销。更重要的是,训练完成的模型在进行函数匹配时并不依赖动态轨迹本身,而是直接使用函数指令作为输入,但这些指令已通过预训练被赋予了丰富的语义信息。

在这项工作中,研究者将“微执行”(micro-execution)技术加以拓展,作为一种弱约束动态执行形式,用于在多种指令集架构下生成函数的“微轨迹”。所谓微轨迹,是由一系列对齐的指令及其对应的程序状态值构成的序列。模型的预训练则基于大量从不同函数中采集的微轨迹数据,采用掩码语言建模(masked LM)任务进行。该任务会随机遮盖序列中的部分信息,并要求模型根据上下文预测被遮盖的内容,从而迫使模型在推理缺失值的过程中学习函数的近似执行过程,无需依赖任何人工特征设计即可自动提取执行语义。此外,masked LM 是一种完全自监督的训练方式,因此 TREX 可以灵活地利用任意来源的函数数据持续进行训练与优化。

为实现这一目标,TREX 采用了一种分层式 Transformer 架构,专门用于学习函数的近似执行语义。不同于以往方法通常将数值信息视作无实际意义的占位符以规避庞大的词汇表规模,这一架构则显式建模微轨迹中的数值内容,从而更有效地捕捉那些可能蕴含关键语义的数值之间的依赖关系。此外,其自注意力机制经过特别设计,能够高效建模序列中的长距离依赖,使得 TREX 能够处理约 170 倍于现有模型长度的序列,并实现约 8 倍的运行加速,这对于从长执行轨迹中学习函数嵌入表示至关重要。

内容概述

挑战性案例:使用三个语义上等价但语法上不同的函数对证明仅从静态代码学习的一些挑战。

  • 跨架构匹配:它们都取某个寄存器的低12位,并将其与0x80进行比较。要识别这种语义相似性,不仅需要理解 x86 架构中的 and 指令与 ARM 架构中的 lsl/lsr 指令的大致执行语义,还需要掌握代码中具体数值(如 0xfff 和 0x14)在指令中的操作方式。然而,现有的机器学习方法大多仅基于静态代码进行训练,无法观测每条指令的实际运行效果。更进一步,由于完整引入所有可能的内存地址会导致词汇表规模过大,这些方法通常会将寄存器值和内存地址统一替换为抽象符号,结果无法利用关键的字节数值来判断底层的语义相似性。
  • 跨优化匹配[ebp+8][esp+4] 实际上访问的是同一内存地址——即调用者压入栈中的第一个函数参数。要识别这种相似性,模型需理解 push 指令会将栈指针 esp 向下移动4个字节;同时也要意识到第2行的 mov 指令将此时减少后的 esp 赋值给了 ebp,从而使得上方函数中的 ebp+8 与下方函数中的 esp+4 等价。然而,这类动态行为在静态代码中是无法直接体现的。
  • 简单混淆匹配:其本质是将 eax+1 替换为 eax-(-1)。要识别这种语义等价性,模型必须能够大致理解诸如 xorsubadd 等算术操作的执行行为。然而,静态代码本身并不足以揭示这些底层算术语义的等价关系。

微轨迹上训练语言模型:本节主要阐述了为何在函数的微轨迹上执行掩码语言建模(masked LM)预训练任务,能够有效促使模型学习其执行语义。尽管目前仍难以从理论上明确证明此类语言建模任务具体学习到了哪些类型的知识,但重点在于理解其背后的直觉逻辑:通过预测微轨迹中被遮盖的代码和数值,模型被迫去推理缺失信息在当前上下文中的合理性,这一过程正是促使模型掌握指令执行语义的关键

Masked LM:针对函数的微轨迹(包含指令和对应的值),随机遮盖其中部分内容,并训练模型根据未被遮盖的信息预测被遮盖的部分。由于这一过程仅依赖输入数据本身进行预测,完全不需要额外的人工标注,因此 TREX 可以利用大量自然获取的函数数据进行训练与持续优化。这种方式的优势在于,即使某条指令未在某个函数的微执行中出现,它很可能会出现在其他函数的微轨迹中,从而帮助 TREX 逐步掌握更广泛指令的执行语义,实现对多样化指令行为的近似建模。

Masking register:以图2c中的函数为例,这两个函数本质上都将栈中位置 [rbp-0x2c] 的值加一。上方函数采用了直接方式:将该值加载到 eax,加1后再写回栈中;而下方函数则使用了更曲折的方法,先将 -1 存入 ecx,然后通过 eax 减去 ecx 来实现加1的效果,最终同样将结果写回栈。研究人员在上方函数的第3行对 eax 进行了掩码处理,结果发现预训练模型能够准确预测出该寄存器的名称和动态值。这说明模型不仅理解了 add 指令的语义,还能根据第2行的 eax 值推断出加法后的结果。同样地,模型也能恢复下方函数第4行的 ecx 和第5行的 eax 值,表明其掌握了 xorsub 指令的执行效果。正是这种对底层语义的理解,在后续用于函数匹配的微调阶段,大幅增强了模型的鲁棒性,使其更倾向于依据执行行为而非表层语法特征来判断函数相似性。

Masking opcode:除了对寄存器及其值进行掩码外,还可以对指令的操作码(opcode)进行掩码处理。要正确预测被遮盖的操作码,模型必须理解各类操作码的执行效果。以图2b为例,在上方函数第2行将 mov 操作码遮盖后,预训练模型最终以最高概率预测出 mov,而非其他可能的候选指令如 addinc 等。要实现这一正确预测,模型需掌握函数语义中的多个关键点:首先,从上下文信息来看,比如第3行中 ebp 的值和第2行中 esp 的状态,模型能推断出 mov 最符合语义,因为它完成了将 esp 的值赋给 ebp 的操作;而其他指令则因其执行效果与后续寄存器状态不符而被排除。这表明模型已近似掌握了 mov 的执行语义。其次,模型也学习了 x86 指令的一般语法规则和调用约定,例如只有部分操作码支持两个操作数(如 ebp, esp),这使得模型能自动排除像 pushjmp 这类语法不合法的候选项。因此,模型能够进一步推断出上方函数第3行中的 ebpesp 值相等,同时还可能从其他训练样本中学到 push 会使栈指针 esp 减少4字节。正因如此,在经过微调用于函数匹配时,模型更有可能根据 [ebp+8][esp+4] 实际访问的是相同地址这一语义等价性进行判断,而不是依赖两段代码在语法上的相似性。

Other masking strategies:需要注意的是,在掩码操作中,并不受限于指令中被遮盖元素的数量或类型——既可以对寄存器、操作码等单个元素进行遮盖,也可以遮盖整条指令,甚至是连续的一段指令序列,还可以随机遮盖某些指令的输入输出值。更进一步,模型在每轮训练以及不同样本之间,都会动态选择不同的代码块和程序状态子集进行掩码操作。这样的设计使模型能够学习到多样化、复合型的指令序列执行效果,这对于识别使用不同指令实现的语义相似函数至关重要。在本研究中,采用的是一种完全随机的掩码策略,以固定比例在微轨迹中选取掩码位置(具体细节见第IV-C节)。不过,这也为后续研究提供了一个有趣方向,即探索如何以更高效但仍廉价的方式,动态优化掩码位置与比例,从而进一步提升模型效果。

研究内容

微轨迹语义:研究团队基于 Godefroid 提出的微执行方法进行了扩展,使其不仅支持原论文所描述的 x86,还适用于 x64、ARM 和 MIPS 架构。接下来的内容简要说明了如何对单个函数二进制进行微执行,并重点介绍了处理不同类型指令时所采用的关键算法。为了统一不同架构汇编语法的差异,文中引入了一种低层次的中间表示(IR)语言,用于建模函数的汇编代码,如下图所示。需要强调的是,这种 IR 仅用于阐述微轨迹生成过程的核心机制;在实际实现中,使用的是真实的汇编指令,并经过分词处理后作为模型输入。中间表示值得学习

微轨迹算法:首先,它会初始化内存以加载目标函数 f 的代码及其对应的栈空间,随后初始化除特殊用途寄存器(如栈指针、程序计数器)以外的所有通用寄存器。接下来,系统以线性方式依次执行函数中的指令;若执行过程中指令涉及内存读写操作,则按需映射相应内存地址;对于读取操作,还会在目标地址中初始化一个随机值。遇到调用或跳转指令时,系统会检查其目标地址,跳过无效的调用或跳转,这种处理方式被称为“强制执行”。通过绕过无法抵达的跳转路径或调用指令,系统能够持续执行函数至末尾,从而暴露更多潜在行为,例如规避由输入检查引发的异常。至于 nop 指令,由于其常用于函数内的填充操作,处理时则直接跳过。当函数所有指令执行完毕、遇到 ret 指令,或达到超时时间时,微执行过程即告终止。图13和图14展示了两个真实函数的微轨迹示例。

相关文章:

论文学习_Trex: Learning Execution Semantics from Micro-Traces for Binary Similarity

摘要:检测语义相似的函数在漏洞发现、恶意软件分析及取证等安全领域至关重要,但该任务面临实现差异大、跨架构、多编译优化及混淆等挑战。现有方法多依赖语法特征,难以捕捉函数的执行语义。对此,TREX 提出了一种基于迁移学习的框架…...

数据压缩的概念和优缺点

一、数据压缩的概念 数据压缩是通过特定算法(压缩算法)对数据进行重新编码,以减少数据存储空间或传输带宽的技术。其核心目标是在不丢失关键信息(或允许一定程度信息损失)的前提下,降低数据量,…...

spaCy基础入门

spaCy 概览说明 spaCy 是一个现代、快速、工业级 NLP 工具库,专门为实际工程应用设计,提供: • 分词(Tokenization) • 词性标注(POS Tagging) • 命名实体识别(NER) •…...

vue3项目创建-配置-elementPlus导入-路由自动导入

目录 方法一:create-vue 方法二 :Vite Vue Vite.config.ts配置 引入element-plus 安装 如何在项目中使用 Element Plus 完整引入 按需导入 vue3vite中自动配置路由的神器:vite-plugin-pages 1. 安装 2、修改vite.config.js中配置…...

2025年的电脑能装win7吗_2025年组装电脑装win7详细图文教程

2025年的电脑能装win7吗?2025年的电脑可以安装Win7,但存在一些限制和挑战。2025年的电脑基本上是14代和15代处理器,需要特定的条件和步骤才能安装win7,并且只能采用独立显卡,因为没有集成显卡驱动。另外注意目前2025年…...

windowsC++操作ADB

文章目录 一、ADB基础1. 工作原理2. 安装与配置 二、常用ADB指令分类1. 设备连接与管理2. 文件传输3. 应用管理4. 设备交互5. 系统信息6. 日志与调试7. 网络与端口转发 三、高级用法1. 多设备管理2. 无线ADB连接3. 批量执行命令4. ADB脚本示例 四、常见问题与解决方案五、注意事…...

Springboot实现重试机制

背景 研发工作中时常遇到要和其他服务对接,依赖对方能力的情况,最恶心的是对方提供的服务不稳定,时灵时不灵的,进而影响到自己功能的稳定性。万一发生了这种事,做为研发,咱该怎么办?通过容错直接…...

CS内网渗透 ----【内网渗透实战】PsExec vs Telnet:建立IPC通道实现横向移动与域控上线全解析

目录 1. 什么是 PsExec? 2. 什么是 Telnet? 3. PsExec 与 Telnet 的区别及优势 3.1 主要区别 3.2 内网渗透中的优势 4. 实际案例 —— 使用 PsExec 上线域控主机 案例背景 操作步骤 案例效果 5. 总结 利用 PsExec 建立 IPC 通道 —— IPC 的定…...

第二十三天打卡

作业: 整理下全部逻辑的先后顺序,看看能不能制作出适合所有机器学习的通用pipeline 数据预处理 → 特征选择 → 降维 → 模型训练 import pandas as pd import numpy as np from sklearn.model_selection import train_test_split, GridSearchCV from sk…...

aardio - 将文本生成CSS格式显示

import win.ui; /*DSG{{*/ var winform win.form(text"aardio form";right759;bottom469) winform.add( button{cls"button";text"Button";left340;top130;right430;bottom180;z3}; edit{cls"edit";text"我是一串文本";lef…...

【漫话机器学习系列】256.用 k-NN 填补缺失值

用 k-NN 填补缺失值:原理、实现与应用 在实际的数据科学项目中,我们经常会遇到数据缺失(Missing Values)的问题。缺失值如果处理不当,不仅会影响模型训练,还可能导致最终结果偏差。 今天,我们…...

tomcat与nginx之间实现多级代理

准备工作 准备5台虚拟主机;至少准备3台虚拟主机; 设备1作为代理服务器;设备2与设备4作为处理静态资源请求服务器(使用nginx);设备3与设备5作为处理动态资源服务器(使用tomcat) 设…...

商业航天运动控制系统中的高可靠性芯片解决方案:挑战、策略与应用研究

摘要:随着商业航天领域的迅速发展,运动控制系统对芯片的可靠性提出了前所未有的挑战。本文深入探讨了商业航天运动控制系统中芯片可靠性面临的挑战,包括宇宙辐射效应、极端环境适应性及系统级可靠性保障等。同时,通过案例研究展示…...

[Java实战]Spring Boot 3 整合 Ehcache 3(十九)

[Java实战]Spring Boot 3 整合 Ehcache 3(十九) 引言 在微服务和高并发场景下,缓存是提升系统性能的关键技术之一。Ehcache 作为 Java 生态中成熟的内存缓存框架,其 3.x 版本在性能、功能和易用性上均有显著提升。本文将详细介绍…...

【Flask全栈开发指南】从零构建企业级Web应用

目录 🌟 前言🏗️ 技术背景与价值🚧 当前技术痛点🛠️ 解决方案概述👥 目标读者说明 🔍 一、技术原理剖析📊 核心概念图解💡 核心作用讲解🧩 关键技术模块说明⚖️ 技术选…...

使用docker安装clickhouse集群

1、简介 clickhouse 作为大数据场景中,实现快速检索的常用列式存储数据库,采用物理机部署,会在数据量大的场景中,物理机器存储达到阈值需要扩容,会带来比较大的问题,因此,使用docker部署clickho…...

佰力博科技准静态d33测试的注意事项

准静态d33测试是测量压电材料纵向压电应变常数的重要方法,其注意事项包括以下几个方面: 选择合适的测量设备 准静态d33测试需要使用专用的压电测试仪,如佰力博PEAI1000高精度压电分析仪、准静态d33测量仪或PCA1000压电陶瓷综合参数分析仪。这…...

iOS设备投屏Archlinux

我的iphone手机屏太小,我想把手机投到archlinux电脑上看。与是我就想找一个免费的软件。 UxPlay https://github.com/FDH2/UxPlay GPLv3,开源。原来只支持 AirPlay Mirror 协议,现在新增 支持来自 AirPlay 的纯音频 (Apple Los…...

VUE_UI组件的二次封装

属性和事件 <template><div><myInput a"1" b"2" c"3" change"() > {}"></myInput></div> </template>myInput.vue <template><div><el-input v-bind"$attrs">&…...

算法·KMP

KMP算法的思想 想要一次性遍历模板串 s 1 s_1 s1​&#xff0c;不在匹配失败时重新开始遍历子串 s 2 s_2 s2​&#xff0c;实现模板串不回退的效果。 KMP数组的理解 KMP数组有两种定义&#xff1a;一是匹配失败后&#xff0c;子串 s 2 s_2 s2​应该回退的位置&#xff0c;一种…...

如何正确地写出单例模式

如何正确地写出单例模式 | Jarks Blog 枚举方式&#xff1a; public class SingletonObject {private SingletonObject() {}/*** 枚举类型是线程安全的&#xff0c;并且只会装载一次*/private enum Singleton {INSTANCE;private final SingletonObject instance;Singleton() {…...

Mac M系列 安装 jadx-gui

安装 Homebrew在终端中执行以下命令&#xff08;需管理员密码&#xff09;&#xff1a; 安装 Homebrew&#xff08;官方源&#xff09; /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"国内用户可用镜像源加速&…...

水滴Android面经及参考答案

目录 static 关键字有什么作用,它修饰的方法可以使用非静态的成员变量吗? Java 中创建线程有几种方式? wait 和 sleep 的区别,如何打断 sleep? Java 垃圾回收的目的是什么,垃圾回收机制是怎样的? Java 的垃圾回收(GC)机制是如何工作的? 请解释 Java 内存模型(J…...

《猜拳游戏》

综合案例《猜拳游戏》 需求&#xff1a; 本游戏是一款单机游戏&#xff0c;人机交互 规则&#xff1a; 需要双方出拳&#xff1a;石头、剪刀、布 赢&#xff1a; 石头 → 剪刀剪刀 → 布布 → 石头 平&#xff1a; 两边出拳相等 输&#xff1a; … 实现&#xff1a; 选择对…...

Mysql索引优化

一、索引 1. 主键索引&#xff08;Primary Index&#xff09; 定义 主键索引是一种特殊的唯一索引&#xff0c;用于唯一标识表中的每一行数据。每个表最多有一个主键索引&#xff0c;且索引列不允许为 NULL&#xff0c;自动添加 UNIQUE 和 NOT NULL 约束。 特点&#xff1a;…...

Postgresql与openguass对比

背景介绍 PostgreSQL是世界上最先进的开源关系型数据库&#xff0c;以其强大的功能、稳定性和可扩展性著称。而openGauss是华为公司于2020年6月30日开源的数据库系统&#xff0c;内核基于PostgreSQL 9.2.4版本演进而来。值得注意的是&#xff0c;PostgreSQL 11.3版本拥有290个数…...

线程的概念和控制

自从20世纪60年代提出了进程的概念之后&#xff0c;操作系统一直以进程作为独立运行的基本单位。到了20世纪80年代&#xff0c;人们又提出了比进程更小的、能独立运行的基本单位——线程。提出线程的目的是试图提高系统并发执行的程度&#xff0c;从而进一步提高系统的吞吐量。…...

如何配置activemq,支持使用wss协议连接。

1、到阿里云申请一个证书&#xff0c;通过后下载jks证书。 2、配置activemq&#xff1a; 打开activemq安装目录中“conf/activemq.xml”&#xff0c;增加以下记录&#xff1a; <transportConnectors> <transportConnector name"wss" uri"…...

【言语】刷题3

front&#xff1a;刷题2 题干 超限效应介绍冰桶挑战要避免超限效应 B明星的作用只是病痛挑战的一个因素&#xff0c;把握程度才是重点&#xff0c;不是强化弱化明星作用&#xff0c;排除 A虽没有超限效应&#xff0c;但是唯一的点出“冰桶效应”的选项&#xff0c;“作秀之嫌…...

关于 ast: Babel AST 全类型总览

AST 的每个节点都有一个 type 字段&#xff0c;用来标识它的语法类型。 程序结构节点 type说明示例Program整个程序的根节点整体代码结构BlockStatement大括号代码块 {}if、function、for 等的主体ExpressionStatement表达式语句&#xff08;如 a b;&#xff09;EmptyStatem…...

STM32 内存

根据STM32的存储器映射机制&#xff0c;其32位地址总线可访问4GB逻辑地址空间&#xff08;0x00000000-0xFFFFFFFF&#xff09;&#xff0c;但实际物理地址分配由芯片厂商定义。以下是STM32完整的地址映射结构及关键区域说明&#xff1a; 一、地址空间整体架构 4GB地址空间划分…...

图片的require问题

问题 <template><!--第一种方式--><img :src"require(/assets/${imageName})" style"width:100px;" /><!--第二种方式--><img :src"require(imageUrl)" style"width:100px;" /> </template><…...

关于 js:8. 反调试与混淆识别

一、常见反调试手段识别 1. debugger 死循环&#xff08;阻塞调试器&#xff09; 样例代码&#xff1a; while (true) {debugger; }原理&#xff1a; 每次执行到 debugger 语句&#xff0c;如果 DevTools 打开&#xff0c;将自动触发断点。 如果在死循环中&#xff0c;调试…...

深度Q网络(DQN)的基本概念

一、深度Q网络(DQN)的基本概念 深度Q网络(Deep Q-Network,DQN)是将强化学习中的Q学习(Q-Learning)与深度学习相结合的算法,由DeepMind在2013年提出,并在2015年发表于《Nature》杂志。它通过神经网络近似动作价值函数(Q函数),解决传统Q学习在高维状态空间下的计算难…...

uniapp+vue3中自动导入ref等依赖

前言&#xff1a; 在我们使用uni-appvue3创建项目&#xff0c;开发的过程中&#xff0c;老是需要导入我们的ref、onshow等&#xff0c;那么能不能自动导入&#xff0c;不用我们每个页面都写呢&#xff1f;是没问题的&#xff0c;这里让他的小帮手来帮你减轻负担&#xff1a;他就…...

合肥SMT贴片加工核心优势与工艺升级

内容概要 在电子制造领域&#xff0c;工艺精度与生产效率的平衡始终是企业关注的核心命题。本文将系统呈现合肥SMT贴片加工产业的技术演进图谱&#xff0c;为寻求制造升级的企业提供可落地的决策参考。 作为长三角电子制造集群的重要节点&#xff0c;合肥SMT贴片加工产业通过持…...

Ansible安装与核心模块实战指南

Ansible安装与核心模块实战指南 自动化运维入门:从安装到模块化任务配置 Ansible作为一款无代理自动化工具,通过模块化设计实现高效管理,尤其适用于快速部署、配置和维护大规模系统。本文将从安装、核心模块使用到实际案例,全面解析其核心功能与最佳实践。 一、Ansible安装…...

TDengine 做为 Spark 数据源

简介 Apache Spark 是开源大数据处理引擎&#xff0c;它基于内存计算&#xff0c;可用于批、流处理、机器学习、图计算等多种场景&#xff0c;支持 MapReduce 计算模型及丰富计算操作符、函数等&#xff0c;在大超大规模数据上具有强大的分布式处理计算能力。 通过 TDengine …...

Codeforces Round 997 (Div. 2)

A. Shape Perimeter 题目大意 给你一个m*m的正方形&#xff0c;再给你n个坐标表示每次在xy移动的距离&#xff08;第一个坐标是初始位置正方形左下角&#xff09;&#xff0c;问路径图形的周长 解题思路 记录好第一次的位置之后一直累加最后求总移动距离的差值即可 代码实…...

WSL 安装 Debian 12 后,Linux 如何安装 nginx ?

在 WSL 的 Debian 12 中安装 Nginx 的步骤如下&#xff1a; 1. 更新系统软件包 sudo apt update && sudo apt upgrade -y2. 安装 Nginx sudo apt install nginx -y3. 管理 Nginx 服务 ▶ 启动 Nginx sudo service nginx start # 如果使用 systemd 可能需改用&…...

目标检测任务 - 数据增强

目标检测任务 - DETR &#xff1a; 数据预处理/数据增强 算法源码实例 import datasets.transforms as Tnormalize T.Compose([T.ToTensor(),T.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225]) ])scales [480, 512, 544, 576, 608, 640, 672, 704, 736, 768, 800]…...

java的switch case

import java.util.Scanner;public class Hello {public static void main(String[] args) {Scanner in new Scanner(System.in);int type in.nextInt();switch(type){case 1:case 2:System.out.println("你好");break;case 3:System.out.println("晚上好"…...

基于亚博K210开发板——LCD触摸屏读取坐标数据测试

开发板 亚博K210开发板 实验目的 主要学习 K210 通过 I2C 读取触摸屏的坐标&#xff0c;并打印出来&#xff0c;显示在 LCD上。 实验准备 实验元件 LCD 显示屏触摸板 元件特性 K210 开发板自带 2.0 寸触摸屏&#xff0c;其实是 LCD 显示屏上贴一个触摸板组成&#xf…...

coze平台实现文生视频和图生视频(阿里云版)工作流

工作流全貌 开始 首先从入参开始&#xff1a; api_key&#xff1a;来自阿里云百炼平台&#xff0c;自行去申请 prompt&#xff1a;生成视频的文本提示词。支持中英文&#xff0c;长度不超过800个字符&#xff0c;每个汉字/字母占一个字符&#xff0c;超过部分会自动截断。 …...

python酒店健身俱乐部管理系统

目录 技术栈介绍具体实现截图系统设计研究方法&#xff1a;设计步骤设计流程核心代码部分展示研究方法详细视频演示试验方案论文大纲源码获取/详细视频演示 技术栈介绍 Django-SpringBoot-php-Node.js-flask 本课题的研究方法和研究步骤基本合理&#xff0c;难度适中&#xf…...

QtGUI模块功能详细说明,图标和光标(七)

目录 一.窗口和屏幕管理 二. 绘图和渲染 三. 图像处理 四. 字体和文本 五. 事件和输入处理 六. OpenGL 和硬件加速 七. 颜色和外观 八. 图标和光标 1、QIcon: 图标管理 1.1、QIcon 简介 1.2、图标的来源与创建 1.3、多分辨率与 DPI 支持 1.4、图标的状态管理 2、…...

【图像处理基石】如何入门OCR技术?

入门OCR&#xff08;Optical Character Recognition&#xff0c;光学字符识别&#xff09;技术需要结合理论学习、工具实践和项目实战&#xff0c;以下是分步骤的学习指南&#xff0c;适合零基础学习者&#xff1a; 一、明确OCR技术的核心概念 OCR的基本原理 核心流程&#xf…...

数据库知识沉浸式游戏化学习设计研究

数据库知识沉浸式游戏化学习设计研究 摘要: 本研究旨在设计一款以数据库知识为主题的沉浸式游戏化学习系统。通过对数据库知识体系的深入剖析,结合游戏化学习理论,构建了一个多层次、多任务的游戏架构。玩家在游戏过程中需完成构建数据库结构、编写 SQL 查询等任务来解锁关…...

大疆无人机

在大疆上云API中&#xff0c;​​DRC 链路​​通常指 ​​Device-Cloud Remote Control Link&#xff08;设备-云端远程控制链路&#xff09;​​&#xff0c;它是无人机&#xff08;或设备&#xff09;与云端服务之间建立的​​实时控制与数据传输通道​​&#xff0c;用于实现…...

撤回不了一点 v1.0.2,支持微信QQ钉钉飞书等消息防撤回

如今生活节奏快得飞起&#xff0c;社交软件和工作通讯软件成了咱日常交流的核心阵地。大家肯定都有过这些闹心事儿&#xff1a;和朋友聊得正嗨&#xff0c;对方突然撤回一条消息&#xff0c;好奇心瞬间爆棚&#xff0c;却怎么也看不到撤回的内容&#xff1b;工作群里关键信息刚…...