Inferring Fine-grained Control Flow Inside SGX Enclaves with Branch Shadowing 重点整理

Intel x86提供的Branch Trace Store的功能 写给转载者:转载请保留作者信息来源: http://www.csksoft.net/blog作者:陈士凯介绍Branch Trace Store(BTS)是目前广泛被intel CPU所提供的一种硬件辅助调试功能,因为在MSRA项目需要,所以作了一些基于它的应用。虽然Intel的CPU开发手册[1]提供了比较详细的使用方法,但是由于比较笼统,且缺少win32下的相关资料。所以我 阅读详情

文章主旨

在SGX环境中,LBR可以记录时间信息,且精准度比RDTSC更精准,所以利用LBR(last branch record测量时间和以及获得预测是否成功信息,分析执行流。最根本原因是enclave切换过程中并没有更新清除预测历史。

背景

Intel SGX

英特尔CPU支持基于硬件的TEE通过安全扩展模块Intel SGX。 SGX提供了一组指令,允许应用程序实例化一个enclave(飞地),用于保护内部的代码和数据免受特权软件(如操作系统或管理程序),硬件固件,甚至硬件单元(CPU除外)的影响。 为了提供这种保护,SGX强制执行严格的内存访问机制:只允许飞地代码访问相同飞地的内存。 此外,SGX利用片上存储器加密引擎,在将嵌入式内容写入物理内存之前对其进行加密,并仅在加密内容执行或飞地模式期间进入CPU封装时解密加密内容。
飞地内容交换
为了支持飞地与非飞地模式之间的上下文切换,SGX提供了诸如启动飞地执行的EENTER和终止飞地执行的EEXIT等指令。 另外,ERESUME在发生异步飞地退出(AEX)后恢复飞地执行。 AEX的原因包括例外和中断。 在上下文切换期间,SGX执行一系列检查和操作以确保安全性,例如,刷新翻译旁视缓冲区(TLB)。 但是,我们观察到SGX并未清除所有缓存的系统状态,例如分支历史记录

分支预测Branch Prediction

分支预测是现代流水线处理器最重要的特性之一。 在高层次上,一条指令流水线由四个主要阶段组成:读取,解码,执行和回写。 在任何特定的时间,都有很多指令正在进行中。 处理器利用指令级并行和无序执行来最大化吞吐量,同时仍然维持指令的退休顺序。分支指令会严重降低指令吞吐量,因为处理器无法执行分支直到分支的目标和结果被确定。 如果减少,分支机构将导致管道失速,也称为气泡。 因此,现代处理器使用分支预测单元(BPU)来预测分支结果和分支目标。 虽然BPU增加了通用性,但值得注意的是,在预测失误的情况下,惩罚相当高,因为处理器需要清除流水线并回滚任何推测性执行结果。 这就是为什么英特尔提供专用硬件功能(LBR)来分析分支执行的原因
Branch and branch target prediction.
分支预测是预测条件分支的下一条指令的过程,通过猜测它是否会被采用。 分支目标预测是在执行分支之前预测和获取分支的目标指令的过程。 对于分支目标预测,现代处理器具有BTB来存储所采用的分支指令的计算出的目标地址,并且当相应的分支指令被预测为采取时获取它们。
BTB structure and partial tag hit.
BTB是一种类似缓存的关联结构。地址位用于计算集合索引和标签字段。用于设置索引的位数由BTB的大小决定。与使用标签的所有剩余地址位的高速缓存不同,BTB使用标签剩余位的子集(即部分标签)。例如,在64位地址空间中,如果将ADDR [11:0]用于索引,而不是对标记使用ADDR [63:12],则只有部分数量的位(如ADDR [31:12]被用作标签。这种选择的原因如下:首先,与数据缓存相比,BTB的大小非常小,并且完整标签的开销可能非常高。其次,一个程序中的高阶比特通常倾向于相同。第三,与需要保持精确的微体系结构状态的缓存不同,BTB只是一个预测器。即使部分标记命中导致错误的BTB命中,也会在执行阶段计算正确的目标,并且如果预测错误(即,它仅影响性能,而不影响正确性),则管道将回滚。
Static and dynamic branch prediction.
静态分支预测是一个默认的规则,用于在没有历史的情况下预测分支指令之后的下一个指令[25]。 首先,处理器预测将不会采用前向条件分支(其目标地址高于其自身的条件分支),这意味着下一条指令将被直接提取(即,下降路径)。 其次,处理器预测将会采用后向条件分支 - 目标地址低于其自身的条件分支; 也就是说,将获取指定的目标。 第三,处理器预测不会采取间接分支,类似于前向条件分支情况。 第四,处理器预测将采取无条件分支,类似于后向条件分支情况。 相反,当分支在BTB中有历史记录时,处理器将根据历史记录预测下一条指令。 这个过程被称为动态分支预测。

Last Branch Record

没有任何性能下降,记录最近32条分支信息,包括源地址 目标地址 时间cycle消耗 预测成功或失败,但是此LBR需开启调试模式才会记录。

分支影子攻击

主要包括三种类型攻击:条件分支 非条件分支 间接跳转,主要依据静态分支预测规则可能带来的漏洞攻击。

攻击模型

威胁模型基于英特尔SGX的原始威胁模型和受控通道攻击[60]:攻击者损害了操作系统并利用它来攻击目标飞地程序。
1)攻击者通过静态或动态分析其源代码或二进制文件知道目标飞地程序(即分支指令及其目标序列)的可能控制流。 这与在飞地内运行未经修改的遗留代码的重要用例一致[5,6,51,57]。 不可观察的代码(例如,自修改代码和来自远程服务器的代码)超出了我们的攻击范围。 此外,攻击者可以将目标飞地程序映射到特定的内存地址,以指定每个分支指令的位置及其目标地址。 自我分页[22]和ASLR[15]的实时再随机化不在我们的攻击范围之内。
2)攻击者推断目标飞地的哪部分代码是通过可观察的事件运行的,例如调用飞地外的页面函数和页面错误。 攻击者使用此信息将目标代码的执行与分支影子代码同步。
3)攻击者尽可能频繁地中断目标飞地的执行,以运行分支影子代码。 这可以通过操纵本地APIC定时器和/或禁用CPU缓存来完成
4)攻击者通过监视硬件性能计数器(例如LBR)或测量分支错误预测罚分来识别影子代码的分支预测和错误预测
最后,攻击者可以阻止目标区域接收可靠的高分辨率时间源,以避免因减速而检测到攻击。 为每个中断或页面错误探测目标飞地会减慢飞行区域,使攻击者需要隐藏它。 SGX版本1已经满足这样的要求,因为它不允许RDTSC。 对于SGX版本2(尚未发布),攻击者可能需要操纵模型特定的寄存器(MSR)来挂接RDTSC。 尽管目标飞地可以依靠外部时间源,但由于网络延迟和开销,它也不可靠。 此外,攻击者可以故意丢弃或延迟这些数据包。

条件分支影子

rdtsc
先前的分支定时攻击尝试使用RDTSC或RDTSCP指令来衡量这种回滚损失。 然而,我们的实验显示(表1)分支预测误差的时间相当嘈杂。 因此,在正确的预测和错误预测之间设置一个明确的界限是困难的。 这是因为考虑到最新英特尔CPU的高度复杂的内部结构(例如无序执行),由于分支预测错误而导致错误执行的指令数量难以预测。 因此,我们认为基于RDTSC的推断在实践中很难使用,因此我们的目标是使用LBR来实现精确的攻击,因为它让我们知道分支误预测信息,并且其经过的循环特征几乎没有噪声(表1)。
mean 平均数 o 偏离 偏离越小越好
表一
这里写图片描述
从执行轨迹推断(intel PT)
我们可以使用Intel PT来测量目标分支的误预测惩罚,因为它可以在每个PT分组之间提供精确的经过周期(称为CYC分组)。 但是,CYC数据包不能立即用于我们的目的,因为英特尔PT将一系列有条件和无条件的分支汇总为单个数据包作为优化。 为了避免这个问题,我们有意在目标分支后面插入一个间接分支,使得所有分支在单独的CYC数据包中正确记录它们的使用时间。 英特尔PT关于分支预测失误的时间信息与基于RDTSCP的测量(表1)相比差异小得多。
精确泄露(LBR)
图2显示了使用BTB,BPU和LBR进行条件分支遮蔽的过程。 我们首先解释已经采取了条件分支的情况(案例1)。

条件分支预测

1 )获取受害码的条件分支并将相应的信息存储到BTB和BPU中。 这个分支发生在飞地内,除非我们在调试模式下运行飞地进程,否则LBR不会重新传输这些信息。
2)enclave执行被中断,操作系统取得控制权。恶意操作系统如何频繁地中断在第3.6节中讲解。
3)操作系统启用LBR,然后执行影子代码。
4)BPU正确预测将采取阴影条件分支(预测会不会take相关的分支地址)。此时,分支目标预测将失败,因为BTB在飞地内存储目标地址(目标地址不是攻击者跳转正确的地址)。然而,这个目标错误预测与分支预测的结果是正交的,尽管它会在CPU周期中引入惩罚。即根据经验BPU推测这个分支会执行,但由于BTB中记录的跳转地址碰撞的原因,实际上目标地址非正确地址,导致有时间损失。
5)最后,通过禁用和检索LBR,我们知道阴影条件分支已被正确预测 - 它已被预测。我们认为这个正确的预测是关于分支预测的,因为这两个分支指令的目标地址是不同的;也就是说,目标预测可能会失败。请注意,默认情况下,LBR报告发生在用户和内核空间中的所有分支(包括函数调用)。由于我们的影子代码没有函数调用并且在内核中执行,所以我们使用LBR的过滤机制忽略用户空间中的每个函数调用和所有分支。(LBR会记录预测是否正确,此时确实是正确的预测执行跳转了,所以直接查表LBR就可以了)这里写图片描述
攻击时有两种情况:1) 受害者刚执行过,更新了BTB,此时攻击者执行,由于BTB有记录,会正确跳转到正确的地址,因此查看LBR可查看预测准确与否推测受害者执行状态。2)受害者还未执行分支,此时BTB时空的,攻击者此时执行跳转由于没有历史,处理器由于默认静态跳转原则会推测不执行,会继续执行下一条语句,因此LBR记录错误预测。

初始化分支

当预测一个条件分支时,现代BPUs利用分支的前几次执行来提高预测的准确性。 例如,如果一个分支已被多次采用,然后又不被采用一次,则BPU会预测其将执行下一次执行。 这会使得阴影分支被多次执行后(例如,在循环内)错误地推断目标分支的执行。 为了解决这个问题,在每次攻击迭代的最后一步之后,我们在改变条件的同时多次运行阴影代码(即交织采取和不采取分支)来初始化分支状态。

以下都是会take 即 预测跳转,所以不会存在不被采用的情况。

无条件分支预测

与条件分支不同,无条件分支总是被采用; 即不需要分支预测。 因此,为了认识其行为,我们需要转移其目标地址来观察分支目标错误预测,而不是分支错误预测。 有趣的是,我们发现LBR并未报告无条件分支的分支目标错误预测; 它总是说每个无条件分支都被正确预测。 因此,我们使用LBR报告的分支的经过周期来识别分支目标误预测罚分,这比RDTSC更精准。
这里写图片描述
这与前文原理类似,特别需要指出的是 此时无论预测成功与否LBR都会显示预测成功。
所以可通过执行的时间长短推测enclave中的运行状态。 如此图可发现 LBR中有记录后,运行时间更短,

间接跳转

此和无条件跳转类似,都是无论预测是否成功,都会执行。然而,不像无条件跳转,间接跳转没有固定的跳转地址,如果没有历史记录,那么处理器将推测在此指令之后的指令会被执行,这等同于没有执行间接跳转,LBR会记录预测成功和失败。
这里写图片描述

由于间接跳转位置不对,所以攻击者执行时预测失败。
这里写图片描述

通过LBR可获得以上信息。

频繁中断和跟踪

分支影子攻击需要考虑改变(或甚至移除)BTB条目的情况,因为它们使得攻击错过某些分支历史。首先,BTB的大小是有限的,使得BTB条目可以被另一个分支指令覆盖。我们经验地确定Skylake的BTB有4,096个条目,其中方式的数量是四个,集合的数量是1,024个(第5.1节)。由于其设计良好的索引散列算法,我们观察到位于不同地址的两条分支指令之间的冲突很少发生。但是,无论如何,在超过4096个不同的分支指令之后,BTB将会溢出,我们将丢失一些分支历史。其次,由于循环或重新执行相同功能,可以删除或更改条件或间接分支的BTB条目。例如,条件分支在其第一次运行时已经被采用,并且由于给定条件的改变而没有在第二次运行时被取走,从而删除相应的BTB条目。间接分支的目标也可以根据条件进行更改,这会改变相应的BTB条目。如果分支遮蔽攻击在更改之前无法检查BTB条目,则会丢失信息。
为了解决这个问题,我们尽可能频繁地中断enclave进程,并通过操纵本地APIC定时器和CPU高速缓存来检查分支历史记录。 这两种方法减缓了目标enclave程序的执行速度,因此攻击者需要谨慎使用它们(即选择性地)以避免检测。
APIC
我们在最近的Linux版本中操纵本地APIC定时器的频率(细节在附录A中)。我们根据两个定时器中断之间执行的ADD指令的数量来度量我们操纵的定时器中断的频率。 定时器中断之间执行了大约48.76条ADD指令(标准偏差:2.75)1。 ADD在Skylake CPU [25]中只需要一个周期,这样我们的频繁定时器就能每隔约50个周期中断受害者飞地。
禁用缓存。
如果我们不得不在短循环内攻击一个分支指令<50个周期,那么频繁的定时器中断是不够的。 为了更频繁地中断飞地进程,我们通过设置CR0控制寄存器的高速缓存禁止(CD)位,选择性地禁用运行受害者飞地进程的CPU内核的L1和L2高速缓存。 随着频繁的定时器中断和禁用的高速缓存,平均在两个定时器中断之间执行约4.71条ADD指令(标准偏差:1.96,迭代次数为10,000次)。 因此,我们可以达到的最高攻击频率大约是五个周期。

虚拟地址防护

为了执行分支影子攻击,攻击者必须操纵受害者飞地进程的虚拟地址。 由于攻击者已经损害了操作系统,操纵页面表来改变虚拟地址是一件容易的事。 为简单起见,我们假设攻击者禁用用户空间ASLR并修改用于Linux的Intel SGX驱动程序(vm_mmap)以更改飞地的基址(附录B)。 另外,攻击者在影子代码之前放置任意数量的NOP指令以满足对齐。

攻击同步

尽管分支阴影在每次迭代中探测多个分支,但当受害者飞地程序很大时,它是不够的。 克服这个限制的方法是在功能级应用分支影子攻击。 即,攻击者首先推断受害者飞地程序已执行或正在执行的功能,然后探测属于这些功能的分支。 如果这些函数包含可从外部调用(通过EENTER)或依赖于外部调用的入口点,则攻击者可以轻松识别它们,因为它们可由OS进行控制和观察。
但是,攻击者需要另一种策略来推断非导出函数的执行。 攻击者可以创建由目标函数总是可达的分支(例如,位于函数序言部分的分支)组成的特殊影子代码。 通过周期性地执行这个代码,攻击者可以看到哪些被监视的功能已经被执行。 此外,攻击者可以使用页面错误侧通道[60]来同步页面方面的攻击。

虚拟机隔离

为了实现攻击  减少误差  最好在同一个core上 只有后victim 与 攻击者两个进程。为了避免这个问题,我们使用isolcpus引导参数来指定一个隔离的内核,如果没有特定的请求,它将不会被调度。 然后,我们使用taskset命令来运行受隔离内核的受害者飞地。

仿真

RSA攻击
10次恢复全部密钥 一次恢复66%

防护

1 冲刷分支状态 enclave与非enclave 区分开
flush的频率会影响性能 做了很多对比图 针对不同应用
2.模糊分支
尽量每个分支都执行
本文提出zigzagger工具
这里写图片描述
转换所有的有条件的跳转转为无条件跳转到蹦床上,无条件跳转会更加难分析,而这些蹦床最后会跳转到r15 保存的目标地址。利用cmov将每次不同的目标地址存入到寄存器中。利用个寄存器只是为了提高性能,可以将信息保存在内存中。这些目标地址r15拥有很多值,所以很难猜测当前流的具体目标地址。而对于分支条件不满足时,一些语句相当于NOP。

优点 1 可实现 简单不需要复杂的代码分析 或者厚重的代码改变。2 性能影响小 3 安全。

OpenSGX 安装编译教程 介绍:    英特尔提供的SGX是一个扩展的x86指令集架构,它能让应用程序在叫做enclave的受保护的容器内运行。为不信任特权软件(如:操作系统和虚拟机管理程序)上的应用程序提供隔离的执行和内存保护。通过减少可信计算基(TCB),SGX提供窄攻击面。掌握了所有的软件组件和硬件,除CPU包外的敌人不能危害到SGX应用的代码和数据。SGX不仅保证了程序代码和数据的完整性,还保证了SGX程序的保密 阅读详情

相关推荐

stb-translator-data-repository.zip - Web 版翻译者资料库项目源码

本项目是由 VB6/Qt 桌面版《翻译者资料库》移植而来的 Web 版本,采用 Spring Boot 3.3 + Thymeleaf + Bootstrap 5.3 + MySQL 8.0 技术栈,面向翻译与写作场景提供一站式资料管理底座。系统涵盖资料管家、分类词库、句库、文本处理器、中英对照制作、通用查找、数据备份恢复及旧库迁移等核心模块,完整继承桌面版的编号连续、引号规范化、查重、RTF 附件同步等关键业务规则。前端采用服务端渲染配合本地静态资源,支持离线使用;通过 run.bat 一键完成环境检查、建库、编译与启动,访问 http://localhost:8080 即可使用。

英特尔 SGX 技术概述

英特尔 SGX 是一项为满足可信计算行业需求而开发的技术,其方式与 ARM TrustZone 类似,但这次适用于台式机和服务器平台。它允许用户代码创建专用内存区域(称为安全区),这些区域与以相同或更高权限级别运行的其他进程隔离。在安全区内运行的代码有效地与其他应用程序、操作系统、虚拟机管理程序等隔离。它于 2015 年推出,搭载了基于 Skylake 微架构的第六代英特尔酷睿处理器。可以通过执行设置结构化扩展功能页标志的 CPUID 指令并检查是否设置了 EBX 寄存器的第二位来检查 SGX 支持。

谈论现实 2030

利用LQR反馈控制器在不同风况下模拟风力涡轮转速控制的MATLAB.zip

1.版本:matlab2014a/2019b/2024b 2.附赠案例数据可直接运行。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。

再谈Intel x86_64 LBR功能

该文描述了LBR的使用,并给出一个简单的例程

小立仔 6189

基于jdk21、jdk17、jdk8 + SpringCloud + SpringBoot 开发的微服务中后台快速开发平台,专注于多租户、开放平台解决方案,亦可作为普通项目的基础开发框架使用

基于jdk21、jdk17、jdk8 + SpringCloud + SpringBoot 开发的微服务中后台快速开发平台,专注于多租户(SaaS架构)、开放平台解决方案,亦可作为普通项目(非SaaS架构)的基础开发框架使用,目前已实现数据库隔离、字段隔离等租户隔离方案。

【无人机控制】基于MATLAB的侧风扰动抑制与风力模型构建:位置误差评估及风场感知路线规划系统设计 MATLAB 无人机侧风扰动抑制|风力模型与位置误差评估

内容概要:本文档围绕无人机在侧风扰动下的飞行稳定性问题,构建了一个基于MATLAB的完整仿真框架,涵盖风力建模、无人机运动仿真、侧风抑制控制、风场感知路线规划及位置误差评估。项目通过五种独立机制(平均风速、风向投影、阵风、湍流、定位噪声)生成具有物理意义的模拟数据,构建二维无人机运动模型,并设计包含比例-积分-前馈的复合控制器以抑制侧风引起的横向漂移。路线规划采用融合距离、风场与转弯代价的A*算法,实现抗扰路径选择。系统提供多层次误差评价体系,并支持结果可视化与模型部署,适用于低空飞行任务的抗风性能分析与优化。; 适合人群:具备MATLAB编程基础,从事无人机控制、路径规划或自动化系统开发的研发人员,尤其适合工作1-3年、希望深入理解环境扰动建模与控制系统协同设计的工程师。; 使用场景及目标:①研究侧风环境下无人机航迹跟踪的误差来源与抑制方法;②对比不同控制策略(如无补偿、积分补偿、前馈补偿)在侧风扰动中的性能差异;③实现融合风场代价的智能路径规划,提升任务安全性与能效;④基于模拟数据训练误差预测模型,支持数据驱动的飞行优化。; 阅读建议:此资源强调可复现性与工程实用性,建议读者结合代码逐模块运行,重点关注风场建模机制、控制律设计、路线代价函数构建及多指标评估方法。应通过调整参数(如风场权重、控制增益)观察系统响应变化,并利用提供的GUI界面进行交互式调试,以深化对各模块协同机制的理解。

Intel x86_64 LBR & BTS功能

该文主要介绍了intel 处理器得LBR和BTS功能,用来获取CPU产生得跳转指令:call ,jmp(直接跳转),jxx(间接跳转),ret,中断。通过这些指令我们可以分析出系统当前运行的系统流程是否正常,可以用于系统安全领域得对抗,逆向分析,系统调试,系统性能分析等等。......

小立仔 9015

高校技术转移办公室人员如何提升技术成果的推介效果和市场转化率?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

Intel SGX技术详细解释(非常棒)

http://www.jos.org.cn/html/2018/9/5594.htm#b18 随着信息技术的迅速发展与广泛应用, 人类社会已经进入了一个崭新的互联网时代.一方面, 人们享受着互联网科技带来的便利; 另一方面, 由网络和信息系统构成的网络空间也面临着日益严峻的安全问题.信任是网络空间中安全交互的基础, 但随着软件复杂度和攻击水平的提高, 移动环境和云平台的安全对硬件和平台安全机制的...

kouryoushine的博客 12万+

两相交错并联BuckBoost变换器仿真模型(Simulink仿真实现)

内容概要:本文档系统整合了电力电子与新能源领域的Simulink仿真资源,聚焦于两相交错并联Buck-Boost变换器的双闭环PWM控制建模与仿真,同时涵盖多种典型拓扑结构,包括交错并联Boost、PFC功率因数校正、LLC谐振变换器、双向CLLC、DAB变换器、VIENNA整流器等。资源体系完整,包含仿真模型、设计报告、计算书、PPT说明文档及Matlab/Python代码,覆盖从基础建模到高级控制策略(如软开关技术、谐波抑制、状态估计、双闭环控制)的全流程。此外,还拓展至状态估计(卡尔曼滤波、粒子滤波)、智能优化算法、机器学习、信号处理、路径规划等多个交叉学科方向,构建了一个面向科研与工程应用的综合性技术平台。; 适合人群:电气工程、自动化、电力电子、新能源科学与工程等专业的硕士博士研究生、高校科研人员,以及从事新能源发电、智能电网、电动汽车、电力传动等领域技术研发的工程师。; 使用场景及目标:①开展电力电子变换器(如Buck-Boost、LLC、DAB、PFC等)的建模、控制与仿真研究;②支撑课程设计、学位论文、科研项目中的系统仿真与算法验证;③学习并复现高水平期刊(如EI)提出的先进控制策略,如基于KKT条件的最优控制、扩展移相调制、恒压恒流双环竞争控制等;④结合智能算法(如粒子群、秃鹰算法)进行微电网调度、储能配置、路径规划等多目标优化问题的研究与快速原型开发。; 阅读建议:建议依据提供的资源目录循序渐进地查阅资料,优先选取与自身研究方向高度契合的内容进行深入学习;应结合仿真模型与配套文档动手实践,调试参数并分析结果,充分利用百度网盘与公众号渠道获取完整资源,提升科研工作的系统性、规范性与创新性。

【基于Zernike矩的良性和恶性肿块的分类】应用于乳腺癌诊断中的快速相反权重学习规则(Matlab代码实现)

内容概要:本文详细介绍了基于Plecs软件构建的全桥LLC谐振变换器仿真模型,重点阐述了其在软开关技术条件下的建模方法与仿真分析过程。该模型能够精确模拟LLC谐振变换器在不同运行工况下的动态响应特性,涵盖开环与闭环控制策略的设计与实现,适用于研究变换器的效率优化、谐振参数匹配、系统稳定性及软开关性能等问题。相较于Simulink等传统仿真工具,Plecs在高频电力电子系统仿真中展现出更高的仿真速度与数值精度,尤其适合用于复杂电力电子拓扑的快速原型验证与优化设计。; 适合人群:具备扎实电力电子技术基础和仿真经验,从事高频功率变换器设计、新能源电源开发、电力电子系统研究的研发工程师及高校研究生。; 使用场景及目标:①深入理解全桥LLC谐振变换器的工作原理与软开关实现机制;②掌握在Plecs环境中搭建高精度、高效率电力电子系统仿真模型的方法;③开展变换器控制策略(如变频控制、闭环稳压)的仿真验证与参数优化;④为科研课题、学位论文或工业项目提供可靠的仿真平台与技术支持。; 阅读建议:建议结合相关电力电子教材与LLC变换器设计指南,深入掌握谐振参数计算与系统稳定性分析方法,并通过反复调试仿真模型,观察关键波形(如原边电流零点切换、副边整流波形),以全面理解软开关过程的物理本质与控制实现细节。

KVM 理解

KVM 虚拟机的管理工具 准确来说,KVM 仅仅是 Linux 内核的一个模块。管理和创建完整的 KVM 虚拟机,需要更多的辅助工具。 https://www.ibm.com/developerworks/cn/linux/l-cn-mgrtvm2/index.html QEMU-KVM: 在 Linux 系统中,首先我们可以用 modprobe 系统工具去加载 KVM 模块,如果用...

forevertingting的博客 1032

产业园区运营负责人如何提升园区内技术成果与企业需求的精准对接效率?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

Linux X86 LBR和BTS功能分析与实现

X86 处理器支持最近分支记录(Last branch record),也就是记录CPU的跳转记录(jmp,jcc,call,ret等指令,中断和异常). 通过操作MSR寄存器(model specific register)来配置分支记录功能. 1. 分支记录格式(branch record) 有如下两个函数: int add_fun(int a,int b) { return (a+b)...

bin_linux96的专栏 3785

国央企创新负责人如何利用数智平台提升核心技术攻关与成果转化协同能力?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

高校技术转移办公室人员如何高效完成技术成果的筛选与推介?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

Ubuntu 16.04下Intel SGX应用程序程序开发——获得Enclave函数返回值!

这篇文章主要讲述获得Enclave函数执行后的返回值。以一个累加函数的返回值为例。 安装完SGX SDK后,我们可以在输入的安装目录下的/sgxsdk/SampleCode文件夹下找到Intel提供的SGX应用程序示例,共有6个例子,根据名字可以大概判断是做什么的,每个示例中的README.txt文件给出了示例的详细信息。6个示例如下所示: 1. 复制SampleEnclave示例并建

qiu_pengfei的博客 2587

R 分析裂区试验设计

裂区试验有主区部分和副区部分, 因而有主区部分误差(误差 a,简记为Ea )和副区部分误差(误差b,简记为Eb) 分别用于测验主区处理以及副区处理和主、副互作的显著性。对同一个二因素试验资料作自由度和平方和的分解,则可发现随机区组的误差项自由度和平方和分别为DFe、SSe,而裂区设计有两个误差项,其自由度和平方和分别为DFEa,DFEb, SSEa, SSEb。而区组,处理效应等各个变异项目的自由

samhuairen的专栏 8934

谈谈intel x86提供的Branch Trace Store的功能

标 题: 【原创】谈谈intel x86提供的Branch Trace Store的功能作 者: greatcsk时 间: 2008-06-20,21:09链 接: http://bbs.pediy.com/showthread.php?t=66975好就没来发贴了...罪过罪过这里说说Intel提供的BTS功能,相信对于做系统逆向分析有一定作用 本文在

1987

关于Vscode配置Unity环境时的一些报错问题(持续更新)

3.找到设置文件,添加如下代码,用于告诉VSCode)在处理 C# 项目时优先使用 C# 扩展来加载和管理项目,而不是使用 C# Dev Kit 或其他扩展。1.很可能是unity的插件版本问题,打开window > package manager将。2.很可能是项目文件的问题,建议unity打开edit > perfercenes。3.手动重装其他版本的.Net框架(去官网找,多下几个无所谓的)解决:(由于造成问题不一样,所以建议都尝试一次)下载net请求超时(一般都会超时很正常的)

bug制造机 1887

ubuntu打实时内核补丁教程以及安装后显卡驱动问题解决方法

在ubuntu20.04上安装成功,亲测有效 目录ubuntu打实时内核补丁教程1、下载实时内核2、解压和打补丁(patch)3、安装依赖和编译安装4、修改一些文件,便于之后切换内核5、重启电脑实时内核版本下安装nvidia显卡驱动的问题1、先切换回之前的内核(非实时)版本2、重装之前内核(非实时)版本下的显卡驱动3、切换回实时内核(按照上面的步骤)4、在实时内核下安装显卡驱动 ubuntu打实时内核补丁教程 安装目标系统:ubuntu20.04 电脑配置:i9,2080ti 1、下载实时内核 打开终端,输

weixin_39275295的博客 7995
上一篇: 跳过ASLR:攻击分支预测来旁路ASLR
下一篇: KVM 理解
forevertingting
博客等级 码龄12年 6粉丝 16原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值