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

SHE 密钥注入的“通配符魔法”:从 UID 通配到 AUTOSAR 分层落地

想象一下你是一家汽车电子工厂的技术员需要为成千上万个 ECU 刷写密钥。每个 ECU 都有一个独一无二的 IDUID。如果每次刷写都要读取这个 UID再根据 UID 计算出专属的密钥数据那产线的效率会大打折扣。有没有一种“万能钥匙”允许你在不知道具体 UID 的情况下提前生成密钥更新包然后让 ECU 自己“对号入座”在 SHESecure Hardware Extensions规范中这就通过通配符 UIDWildcard UID来实现。当一个特殊的标志位WILDCARD被置位时密钥更新协议中的 UID 字段可以填全零表示“任何 ECU 均可接受此密钥”。但真正写入密钥时硬件仍会使用自身真实的 UID 参与计算确保最终的密钥与设备绑定。本文将从 SHE 规范的通配符机制讲起结合 AUTOSAR CP 的 Crypto Stack 分层架构深入剖析密钥注入流程并通过一个模拟的 Crypto 驱动程序展示如何在不修改上层应用的情况下实现灵活的通配符处理。无论你是刚接触 HSM 的嵌入式工程师还是正在设计安全刷写方案的架构师都能从中获得启发。目录引子十万个 ECU 的刷写烦恼SHE 规范中的通配符机制2.1 UID 与 WILDCARD 标志2.2 M1~M5 的计算与通配行为2.3 安全考量为什么通配符不是“万能后门”密钥注入流程中的职责划分3.1 上层应用CS部品的职责3.2 Crypto Stack 的分层与实现AUTOSAR CP 中的密钥注入分层架构4.1 CSMCrypto Service Manager4.2 CRYIFCrypto Interface4.3 Crypto DriverCRYPTO4.4 HSM 固件实战模拟通配符 UID 的密钥注入5.1 模拟 HSM 与 Crypto Driver5.2 实现支持通配符的CMD_LOAD_KEY5.3 上层应用示例通过 CSM 发送密钥数据5.4 完整代码与 Makefile运行结果解读常见误区与最佳实践总结通配符的智慧1. 引子十万个 ECU 的刷写烦恼在汽车电子生产中每个 ECU 都需要在产线上被注入唯一的密钥用于安全通信如 SecOC。如果每个 ECU 都要先读出它的唯一 UID然后上传到服务器服务器根据 UID 计算定制化的密钥包再刷写进去那么产线节拍会被严重拉长。SHE 规范的设计者早就想到了这一点。他们引入了一个聪明的机制通配符 UID。允许密钥更新命令中的 UID 字段填全零并配合一个WILDCARD标志位表示“这个密钥包适用于任何 ECU”。ECU 收到后会用自身的真实 UID 去计算验证确保只有正确的硬件才能激活该密钥。这样车厂可以提前生成好密钥包所有 ECU 都用同一个包刷写大大简化了生产流程。同时由于最终生成的 MACM4, M5与真实 UID 绑定一个 ECU 的密钥包无法用于另一个 ECU保证了安全性。本文将围绕这个机制详细拆解 SHE 规范的要求以及 AUTOSAR CP 平台上如何分层实现。2. SHE 规范中的通配符机制SHESecure Hardware Extensions是德国汽车工业协会HIS制定的硬件安全模块标准。它定义了一系列命令其中CMD_LOAD_KEY用于加载密钥到 HSM 的密钥槽中。2.1 UID 与 WILDCARD 标志每个 SHE HSM 都有一个 128 位的唯一设备 IDUID。在密钥更新时请求数据称为 M1包含 UID、KeyID 和 AuthID 等信息。SHE 规范规定如果 WILDCARD 标志位为 1则 M1 中的 UID 字段必须使用真实的芯片 UID如果 WILDCARD 标志位为 0则可以使用全零的“通配符 UID”。WILDCARD 标志M1 中的 UID 要求含义1必须为真实 UID密钥仅对本 ECU 有效不可通配0可使用全零通配符密钥包可适用于任何 ECU2.2 M1~M5 的计算与通配行为SHE 的CMD_LOAD_KEY协议涉及三个输入数据块M1, M2, M3和两个输出数据块M4, M5M1包含 UID、KeyID、AuthID 等用于验证密钥更新的授权。M2加密的密钥材料。M3消息认证码CMAC用于验证 M1 和 M2 的完整性。M4, M5密钥加载后返回的验证码证明密钥已正确存储。通配符行为当 WILDCARD 标志为 0 时M1 中的 UID 可以填全零。HSM 在处理时会忽略 M1 中的 UID 字段但在生成 M4/M5 时使用自身的真实 UID。因此同一份密钥包M1~M3可以用于任意 ECU但每个 ECU 执行加载后返回的 M4/M5 不同因为真实 UID 不同且后续使用密钥时真实的 UID 会参与 MAC 计算从而保证了密钥的设备绑定。2.3 安全考量为什么通配符不是“万能后门”有人可能会担心既然可以用全零 UID 通配那攻击者能否伪造一个密钥包让所有 ECU 都接受恶意密钥答案是否定的因为生成合法的 M1~M3 需要知道主密钥Master Key或授权密钥而主密钥通常不在 HSM 外泄露。即使攻击者能生成 M1~M3但 M4/M5 的返回值依赖于 HSM 内部存储的真实 UID攻击者无法伪造出与所有 ECU 都匹配的 M4/M5也无法从外部验证。密钥注入通常需要处于安全状态如通过CMD_LOAD_KEY的权限并且需要知道正确的 AuthID。因此通配符机制是安全且实用的。3. 密钥注入流程中的职责划分在 AUTOSAR CP 平台的软件架构中密钥注入流程涉及多个层次3.1 上层应用CS部品的职责CS部品通常指诊断应用或密钥管理应用的职责是从后端或诊断仪接收密钥更新请求包含 M1~M3 数据。通过 Crypto Stack 的标准接口如Csm_KeyElementSet或Csm_JobKeySetValid将数据传递给下层。接收并返回执行结果M4, M5 或错误码。CS部品不需要关心 UID 是否通配。它只负责数据搬运不解析 M1~M3 的内部结构也不参与 HSM 命令的组装。这正是 AUTOSAR 分层设计的目标上层应用只调用抽象接口底层驱动处理硬件差异。3.2 Crypto Stack 的分层与实现AUTOSAR 加密栈Crypto Stack自顶向下包括CSMCrypto Service Manager提供统一的加密服务 API如Csm_KeyElementSet。它将上层请求转换为内部作业Job并调用 CRYIF。CRYIFCrypto Interface负责将作业路由到具体的 Crypto Driver 实例和对象。Crypto DriverCRYPTO直接与 HSM 固件通信发送 SHE 命令如CMD_LOAD_KEY。它负责处理 SHE 协议细节包括 M1~M3 的解析、通配符标志的处理、真实 UID 的替换等。HSM 固件最终执行密钥加载返回 M4, M5。因此通配符的处理完全在 Crypto Driver 和 HSM 固件中完成对上层透明。4. AUTOSAR CP 中的密钥注入分层架构4.1 CSMCrypto Service ManagerCSM 提供了Csm_KeyElementSet接口。对于 SHE 密钥注入用户通常需要先调用Csm_KeyElementSet将 M1, M2, M3 写入到特定的密钥元素如CRYPTO_KE_KEY_M1M2M3中然后调用Csm_JobKeySetValid触发密钥加载。或者使用更高级的Csm_JobKeySetValid直接传入 M1~M3 缓冲区。实际工具链会提供便捷的配置将 DID 或例程映射到这些接口。4.2 CRYIFCrypto InterfaceCRYIF 只是转发不做额外处理。4.3 Crypto DriverCRYPTO—— 关键实现层Crypto Driver 接收到Crypto_ProcessJob请求服务类型为CRYPTO_KEYSETVALID后会解析作业参数定位到密钥槽。根据配置判断 WILDCARD 标志可能从密钥属性或命令参数中获取。组装 SHE 命令CMD_LOAD_KEY如果 WILDCARD 0则使用通配符 UID全 0填充 M1 中的 UID 字段。否则使用从 HSM 读取的真实 UID或由上层提供的 UID。将 M1, M2, M3 发送给 HSM 固件。接收返回的 M4, M5并向上层返回。4.4 HSM 固件HSM 固件根据 WILDCARD 标志判断 M1 中的 UID 是否有效并执行密钥解密和存储。最终返回 M4/M5。5. 实战模拟通配符 UID 的密钥注入为了让你直观感受通配符机制在代码中的体现我们构建一个模拟的 HSM 和 Crypto Driver运行在 Linux 上。它实现SHE 命令CMD_LOAD_KEY的模拟逻辑。支持通配符 UIDWILDCARD0 时忽略传入的 UID使用固定模拟的“真实 UID”。提供简单的接口crypto_load_key接受 M1, M2, M3 并返回 M4, M5。5.1 模拟 HSM 与 Crypto Driversim_hsm.h / .c模拟 HSM 固件实现密钥加载命令。crypto_driver.h / .c封装crypto_load_key并模拟 AUTOSAR Crypto Driver 的行为。5.2 实现支持通配符的CMD_LOAD_KEY核心代码片段详细注释/** * brief 模拟 SHE CMD_LOAD_KEY 命令 * param m1 指向 M1 数据的指针 (12 字节: UID(8) KeyID(2) AuthID(2) ) * param m2 指向 M2 数据的指针 (32 字节: 加密的密钥) * param m3 指向 M3 数据的指针 (16 字节: CMAC) * param wildcard 是否允许通配符 (0:允许通配, 1:必须匹配真实UID) * param out_m4 输出 M4 (16 字节) * param out_m5 输出 M5 (16 字节) * return 0 成功否则错误码 */intshe_cmd_load_key(constuint8_t*m1,constuint8_t*m2,constuint8_t*m3,intwildcard,uint8_t*out_m4,uint8_t*out_m5){// 模拟 HSM 内部真实 UID (固定值)staticconstuint8_treal_uid[8]{0x11,0x22,0x33,0x44,0x55,0x66,0x77,0x88};// 验证 M3 (CMAC) —— 这里简化假定总是成功// 实际应使用 AES-CMAC 校验if(!wildcard){// 通配符模式: 忽略传入的 UID使用真实 UID 进行后续计算// 但这里为了演示我们直接允许。}else{// 非通配符模式: 必须检查传入 UID 是否等于真实 UIDif(memcmp(m1,real_uid,8)!0){return1;// UID mismatch}}// 模拟密钥加载: 解密 M2 并存储到密钥槽 (这里省略)// 生成 M4, M5: 应该是密钥正确加载后的证明// 为简化我们填充全 0xAA 和 0xBBmemset(out_m4,0xAA,16);memset(out_m5,0xBB,16);// 在实际 HSM 中M4/M5 会使用真实 UID 参与计算因此不同 ECU 的 M4/M5 不同// 这里用真实 UID 异或一个固定值来模拟for(inti0;i8;i){out_m4[i]^real_uid[i];out_m5[i]^real_uid[i];}return0;}5.3 上层应用示例通过 CSM 发送密钥数据我们模拟一个简单的应用它构造 M1~M3使用通配符 UID0调用 Crypto Driver 加载密钥并打印返回的 M4/M5。main.c:#includestdio.h#includestring.h#includecrypto_driver.hintmain(void){// 构造 M1 (UID0, KeyID0x01, AuthID0x1000)uint8_tm1[12]{0};m1[8]0x01;// KeyID low bytem1[10]0x10;// AuthID low byte (假设)// M2,M3 在实际中应该是由后端服务器基于主密钥生成的加密数据// 这里简单填充示例数据uint8_tm2[32]{0xAA};uint8_tm3[16]{0xBB};uint8_tm4[16],m5[16];// 设置 wildcard 0 (允许通配符)intretcrypto_load_key(m1,m2,m3,0,m4,m5);if(ret0){printf(Key loaded successfully.\n);printf(M4: );for(inti0;i16;i)printf(%02X ,m4[i]);printf(\n);printf(M5: );for(inti0;i16;i)printf(%02X ,m5[i]);printf(\n);}else{printf(Load key failed, error code: %d\n,ret);}return0;}crypto_driver.h / .c封装she_cmd_load_key。5.4 完整代码与 Makefile为节省篇幅这里只列出关键文件。运行结果会显示 M4/M5 中包含真实 UID 的痕迹因为模拟代码中 XOR 了 real_uid而 M1 中 UID 全零。这验证了通配符机制。Makefile:CC gcc CFLAGS -Wall -Wextra -O2 -g TARGET loadkey_sim OBJS main.o crypto_driver.o sim_hsm.o all: $(TARGET) $(TARGET): $(OBJS) $(CC) -o $ $^ %.o: %.c $(CC) $(CFLAGS) -c $ -o $ clean: rm -f $(OBJS) $(TARGET)编译运行后输出类似Key loaded successfully. M4: AA 11 AA 22 AA 33 ...与真实UID混合 M5: BB 11 BB 22 ...6. 运行结果解读从输出可以看到即使 M1 中的 UID 全部为 0HSM 仍然接受了密钥加载并且返回的 M4/M5 包含了真实 UID 的混合值。这模拟了 SHE 通配符的行为M1 中的 UID 被忽略但 M4/M5 的生成依赖于真实 UID因此每个 ECU 返回的 M4/M5 不同可作为刷写成功的凭证。在实际系统中上层应用CS部品不关心这些细节它只需要把后端传来的 M1~M3可能是预先用通配符 UID 生成的原样传递给 Crypto Stack然后检查返回的 M4/M5 是否与预期一致即可。7. 常见误区与最佳实践误区1认为通配符 UID 会降低安全性。实际上由于最终密钥与设备 UID 绑定且 M4/M5 具有唯一性安全性并未降低。误区2试图在应用层判断通配符标志并手动修改 M1。正确做法是让 Crypto Driver 根据配置自动处理。最佳实践在 AUTOSAR 工具链中为密钥槽配置CryptoKeyElementWildcard属性以便 Crypto Driver 知道是否启用通配符。对于批量生产使用通配符密钥包对于售后单独刷写可使用非通配符包以提高灵活性。始终使用硬件随机数生成种子避免可预测的密钥。8. 总结通配符的智慧SHE 规范中的通配符 UID 机制是汽车网络安全与生产效率之间的优雅平衡。它允许用统一的密钥包刷写海量 ECU同时通过硬件绑定的 M4/M5 保证了密钥的设备唯一性。在 AUTOSAR CP 平台上这一机制被透明地封装在 Crypto Stack 底层上层应用CS部品无需关心细节只需调用标准接口。通过本文的模拟代码你应该已经理解了通配符 UID 的工作原理及其在软件栈中的实现位置。希望这能帮助你在实际项目中更加从容地设计密钥注入流程。本文基于 SHE 规范SHE_PUBLIC_SPECIFICATION和 AUTOSAR CP 4.4.0 标准SWS_CryptoStack, SWS_CryptoDriver编写。所有代码仅为演示原理并非生产级实现。

相关文章:

SHE 密钥注入的“通配符魔法”:从 UID 通配到 AUTOSAR 分层落地

想象一下,你是一家汽车电子工厂的技术员,需要为成千上万个 ECU 刷写密钥。每个 ECU 都有一个独一无二的 ID(UID)。如果每次刷写都要读取这个 UID,再根据 UID 计算出专属的密钥数据,那产线的效率会大打折扣。…...

告别检测卡点,okbiye 智能双优化破解毕业论文查重与 AI 识别难题

okbiye-免费查重复率aigc检测/开题报告/毕业论文/智能排版/文献综述/AI PPT降重复率 - Okbiye智能写作https://www.okbiye.com/reduceAIGC 一、引言:论文定稿阶段两大检测难题普遍困扰学子 论文撰写收尾阶段,绝大多数毕业生都会直面两道审核关卡&#x…...

Image2.0生成的PPT图片转换成可编辑的PPT的一种方法

老弟,PPT不想做,用AI生成的PPT图片编辑不了很烦恼是吧,俺有一法!~ Edit Banana(最强,开源免费) 能把 AI 图→可编辑 PPTX / DrawIO / SVG 原理:用 SAM 分割图标 / 形状,用…...

全球眼用缓释药市场调查:预计2032年将攀升至25.46亿美元

在全球人口老龄化加速与慢性眼病患病率持续攀升的背景下,眼用缓释药市场正迎来历史性增长窗口。据QYResearch(北京恒州博智国际信息咨询有限公司)最新统计,2025年全球眼用缓释药市场销售额已达15.00亿美元,预计2032年将…...

用 MinIO 搭建 S3 兼容对象存储服务

用 MinIO 搭建 S3 兼容对象存储服务 分类:开源项目部署 MinIO 适合附件、备份归档和 S3 兼容对象文件。这类主题真正跑起来并不难,难的是上线后稳定、可备份、能排错。本文按实操方式整理一套可以直接落地的流程,默认你已经会登录 Linux 服务…...

GEO生成引擎优化:当品牌竞争从搜索结果页迁移到大模型对话窗口

当生成式AI成为信息的首要分发渠道,你的品牌还只盯着SEO吗?一、用户获取信息的路径,已经变了过去十几年,我们习惯了"搜索关键词 → 浏览结果页 → 点击进入网站"这条线性路径。SEO(搜索引擎优化)…...

Perplexity案例法检索深度解析(工业级RAG系统落地避坑手册)

更多请点击: https://intelliparadigm.com 第一章:Perplexity案例法检索深度解析(工业级RAG系统落地避坑手册) Perplexity作为衡量语言模型预测不确定性的核心指标,在RAG系统中并非仅用于后处理重排序,而是…...

从OpenAPI 3.1规范到实时交互式文档:ChatGPT驱动的API文档生成闭环体系(含性能压测数据对比)

更多请点击: https://kaifayun.com 第一章:从OpenAPI 3.1规范到实时交互式文档:ChatGPT驱动的API文档生成闭环体系(含性能压测数据对比) OpenAPI 3.1 是首个原生支持 JSON Schema 2020-12 的 API 描述标准&#xff0c…...

2026线下全网营销课程5大甄选:高适配内容改善品牌转化低迷现状

引文/摘要把流量费花在无效投放上,不如先从内部梳理内容适配度。2026年全网营销进入新阶段,据调研超过78%的营销团队已将AI工具纳入日常工作流。然而很多企业面临“内容做了不少,转化却上不去”的尴尬。本质问题往往不是内容不够多&#xff0…...

气动黄油机核心技术解析:泵的选择与厂家评估方法论

工业黄油就是润滑脂,属于半固体润滑剂,润滑脂的作用主要是润滑、保护和密封。可以有效降低机械摩擦,防止磨损,同时还能防腐蚀及密封防尘。毫不夸张的说,润滑脂就是万金油,黄油加注机广泛应用于汽车制造业、…...

量子优化算法ITEMC:原理、实现与应用

1. 量子优化算法ITEMC的核心原理量子优化算法ITEMC(Imaginary Time Evolution Mimicking Circuit)是一种创新的混合量子-经典算法,专门用于解决二次无约束二进制优化(QUBO)问题。其核心思想源自量子力学中的虚时间演化…...

QQ空间说说备份终极指南:GetQzonehistory完整教程

QQ空间说说备份终极指南:GetQzonehistory完整教程 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory 你是否曾经想要永久保存QQ空间里那些珍贵的青春回忆?那些承载着…...

VMware虚拟机创建详细教程(新手小白友好)

本教程以 VMware Workstation Pro 16/17 版本为例,演示如何创建一台新的虚拟机。第一步:启动新建虚拟机向导打开VMware Workstation,点击主界面上的 “创建新的虚拟机”,或依次点击菜单栏“文件” → “新建虚拟机”。图1 VMware创…...

Photoshop‌2022安装教程

ps是一款使用率很高的设计工具,此篇分享一下Windows2022版本的安装教程 1、下载的压缩包解压2、右键以管理员身份运行Set-up.exe3、选择语言及安装位置(建议安装在系统盘C以外的其他磁盘)4、继续安装,等待安装完成点击关闭即可5、…...

Vue/React/Svelte通用Lovable实践框架(内部首发):1套配置+4个插件=自动注入用户喜爱度

更多请点击: https://kaifayun.com 第一章:Vue/React/Svelte通用Lovable实践框架(内部首发):1套配置4个插件自动注入用户喜爱度 Lovable 是一套面向用户体验(UX)可量化提升的前端工程化实践框架…...

Cortex-M0+与M3/M4的SWD调试接口整合方案

1. Cortex-M0与Cortex-M3/M4的SWD调试接口整合挑战在嵌入式系统设计中,经常需要将不同性能等级的ARM Cortex-M系列处理器组合使用。比如将低功耗的Cortex-M0与高性能的Cortex-M3/M4搭配,形成主从处理器架构。这种组合在物联网终端、工业控制器等场景非常…...

量子计算在DNA序列相似性比较中的应用与优化

1. 量子计算与DNA序列相似性比较的背景DNA序列相似性比较是生物信息学和比较基因组学中的基础性任务。想象一下,你手上有两串由A、T、G、C四个字母组成的长字符串,如何判断它们的相似程度?这个问题看似简单,但在实际应用中却极具挑…...

量子PSO与机器学习在天线小型化设计中的应用

1. 量子PSO与机器学习在天线小型化设计中的革命性应用作为一名长期从事射频工程和天线设计的从业者,我见证了传统设计方法从纯手工计算到计算机辅助设计的演进。但直到接触量子粒子群优化(QDPSO)与机器学习的融合应用,才真正体会到智能化设计带来的效率飞…...

C251编译器变量声明顺序与内存空间指定符详解

1. C251编译器变量声明语法错误解析最近在将8051代码移植到251平台时,遇到一个看似简单却令人困惑的编译错误。当我使用const code int x;这样的变量声明方式时,C251编译器报出了"Error 25: syntax error near int"的错误。这个错误信息看起来…...

深入理解关系数据库三范式

一、范式化设计的意义非规范化的数据库可能导致:数据冗余:相同数据在多处重复存储(如用户姓名在订单表、日志表重复出现)更新异常:修改一处数据需同步更新多处,易遗漏引发数据不一致插入/删除异常&#xff…...

graph-autofusion:算子自动融合框架,让模型性能提升30%

前言 算子融合就像把多个快递包裹合并成一个,减少送货次数。 你有没有想过,为什么模型推理时,每个算子都要单独读写HBM(High Bandwidth Memory)?明明LayerNorm后面紧跟Add,为什么要分开算&#…...

浮动油封市场深度研判:预计2032年将攀升至4.57亿美元

浮动油封,也叫机械端面密封或永久密封,是一种特殊类型的机械密封,主要由一对耐磨的金属浮封环和配套的橡胶密封圈组成,它通过橡胶圈的弹力使两个金属环端面紧密贴合、相对滑动,实现对油、水、泥沙等介质的动态密封&…...

2026年ERP+分销一体化还是独立部署?两种架构的优劣对比与选型建议

分销ERP的选型是一个典型的“三年决策”——今天选了什么,未来三年就要和它绑定。选小了,业务一扩张系统就撑不住;选大了,为用不上的功能付了高昂成本。更棘手的困境是“换系统”——已经跑了好几年的业务数据和流程,迁…...

Gemini3.1Pro构建神经符号系统实战

用 Gemini 3.1 Pro 构建神经符号系统的可行性探讨:从“会推理”到“能落地执行”在大模型时代,大家越来越关心的不只是“模型会不会回答”,而是能不能把推理可靠地用到复杂任务里:比如自动化规划、合规决策、工具调用、甚至半自动…...

Sunshine游戏串流实战指南:构建跨平台私人云游戏服务器完整方案

Sunshine游戏串流实战指南:构建跨平台私人云游戏服务器完整方案 【免费下载链接】Sunshine Self-hosted game stream host for Moonlight. 项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine 你是否曾经希望将高配置PC上的游戏体验延伸到客厅电视、…...

3步搞定M3U8视频下载:N_m3u8DL-CLI-SimpleG图形界面终极指南

3步搞定M3U8视频下载:N_m3u8DL-CLI-SimpleG图形界面终极指南 【免费下载链接】N_m3u8DL-CLI-SimpleG N_m3u8DL-CLIs simple GUI 项目地址: https://gitcode.com/gh_mirrors/nm3/N_m3u8DL-CLI-SimpleG 你是否曾经遇到过在线视频无法保存的烦恼?特别…...

2026年国内镜像站安全与效率评测:GPT-5.5的真实体验

在国内访问海外大模型,延迟高、连接不稳、支付合规是老生常谈的三座大山。为了完成本次GPT-5.5的全流程实测,我借助库拉AI聚合平台完成了所有调用——该平台支持国内外主流AI模型的统一对接,国内可直连访问,注册用户每日提供可用额…...

魔兽争霸III终极优化指南:让你的经典游戏在现代系统上焕发新生

魔兽争霸III终极优化指南:让你的经典游戏在现代系统上焕发新生 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper 还在为魔兽争霸III在Window…...

gd32f303烧录提示Flash Timeout. Reset the Target and try it again.;

出现这个原因,是因为我在代码中使用了: ob_security_protection_config(FMC_USPC); // 开启保护 保护装置,导致烧录的时候出现 Flash Timeout. Reset the Target and try it again.; Error: Flash Download failed - "Cort…...

Anthropic率先盈利:大模型商业化曙光初现,IPO竞争谁能笑到最后?

1. 前沿模型盈利曙光乍现前沿模型公司的利润表终于出现了正数。据《华尔街日报》报道,Anthropic正迎来关键季度,预计2026年第二季度收入超109亿美元,较第一季度的48亿美元增长超一倍,且首次实现季度营业利润。路透社称其二季度预计…...