news 2026/9/10 18:11:19

使用 RegRipper、python-registry 与 regipy 分析 Windows 注册表取证痕迹:Anthropic-Cybersecurity-Skills 数字取证实战指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
使用 RegRipper、python-registry 与 regipy 分析 Windows 注册表取证痕迹:Anthropic-Cybersecurity-Skills 数字取证实战指南

使用 RegRipper、python-registry 与 regipy 分析 Windows 注册表取证痕迹:Anthropic-Cybersecurity-Skills 数字取证实战指南

【免费下载链接】Anthropic-Cybersecurity-Skills817 structured cybersecurity skills for AI agents · Mapped to 6 frameworks: MITRE ATT&CK, NIST CSF 2.0, MITRE ATLAS, D3FEND, NIST AI RMF & MITRE F3 (Fight Fraud) · agentskills.io standard · Works with Claude Code, GitHub Copilot, Codex CLI, Cursor, Gemini CLI & 20+ platforms · 29 security domains · Apache 2.0项目地址: https://gitcode.com/GitHub_Trending/an/Anthropic-Cybersecurity-Skills

Windows 注册表(Registry)是系统与用户行为的"记事本"——自动启动项、程序执行历史、USB 设备连接记录、已安装软件、最近访问文档等关键取证痕迹都沉淀于此。本文以 Anthropic-Cybersecurity-Skills 仓库中的analyzing-windows-registry-for-artifacts技能文档(skills/analyzing-windows-registry-for-artifacts/SKILL.md)为主体,结合该技能自带的 agent.py 自动化分析脚本与 api-reference.md API 参考,系统讲解从镜像中提取注册表配置单元(hive)、用 RegRipper 批量抽取工件、用 python-registry/regipy 定向解析自启动与用户活动痕迹的完整取证工作流。读完本文,你将掌握一套可复制的"注册表取证五步法",并能直接运行仓库附带的 Agent 脚本对 NTUSER.DAT、SYSTEM、SOFTWARE 等 hive 进行自动化分析。

技能定位与适用场景

在 Anthropic-Cybersecurity-Skills 的 29 个安全领域中,该技能归属于Digital Forensics(数字取证)子域(subdomain: digital-forensics),是一份面向 AI Agent 的结构化操作手册,遵循 agentskills.io 标准。其 YAML frontmatter(见 SKILL.md 开头部分)将其映射到多个权威框架:

  • MITRE ATT&CK:T1012(Query Registry,查询注册表)、T1547.001(Registry Run Keys / Startup Folder,注册表 Run 键自启动)、T1112(Modify Registry)、T1003.002(Security Account Manager,SAM 凭据转储)、T1025(Data from Removable Media,可移动介质数据);
  • NIST CSF 2.0:RS.AN-03(分析调查)、DE.AE-02(异常活动事件分析)、RS.MA-01(缓解措施被证实有效)。

在仓库的 ATT&CK 覆盖映射中,该技能被明确列入T1547.001(Registry Run Keys / Startup Folder)的覆盖技能(见 mappings/mitre-attack/README.md),并与其他技能共同覆盖T1547(Boot or Logon Autostart Execution)(见 mappings/mitre-attack/coverage-summary.md)。这意味着它正是调查注册表持久化机制、重建用户/系统活动与进行 Windows 镜像 DFIR 分诊(triage)的首选技能。

典型触发场景包括:

  • 事件响应期间调查 Windows 系统上的用户活动;
  • 识别恶意软件使用的 autorun/持久化机制;
  • 追踪已安装软件、USB 设备与网络连接;
  • 内部威胁调查中重建用户操作轨迹;
  • 将注册表时间戳与其他取证工件(事件日志、Prefetch、ShimCache)进行关联。

前置条件与工具链

正式开工前,需要准备以下环境与物料:

  • 取证镜像或已提取的注册表 hive 文件(SAM、SYSTEM、SOFTWARE、SECURITY、DEFAULT、NTUSER.DAT、UsrClass.dat);
  • RegRipper(RegRipper3.0)或Registry Explorer(Eric Zimmerman 工具集),以及python-registry / regipyPython 库;
  • 对 Windows 注册表结构(hive、key、value)的基本理解;
  • SIFT Workstation 或其他取证分析环境

仓库推荐的工具分工如下(详见 SKILL.md 的 Tools & Systems 表格与 api-reference.md):

工具用途
RegRipper基于插件架构的注册表工件自动化提取
Registry ExplorerEric Zimmerman 出品的 GUI 交互式注册表分析工具
python-registry以编程方式解析注册表 hive 的 Python 库
RECmdEric Zimmerman 的命令行注册表分析工具
yarpYet Another Registry Parser,Python 系注册表解析
AppCompatCacheParser专门的 ShimCache/AppCompatCache 解析器
AmcacheParser专门的 AmCache.hve 分析工具
ShellBags Explorer专门分析 ShellBag 工件的工具

核心取证概念速查

注册表取证涉及若干关键概念,先建立统一认知(摘自 SKILL.md 的 Key Concepts 表格):

概念说明
Registry hive存储注册表某一部分的二进制文件(SAM、SYSTEM、SOFTWARE、NTUSER.DAT 等)
MRU(Most Recently Used)追踪最近访问的文件、命令与搜索词的列表
UserAssistROT13 编码的注册表项,记录程序执行及时间戳
ShimCache应用程序兼容性缓存,记录已执行过的程序
AmCache更详细的执行历史,包含可执行文件的 SHA-1 哈希
BAM/DAMBackground/Desktop Activity Moderator,Win10+ 上记录程序执行
Last Write Time注册表键的最后修改时间戳
Transaction logs日志文件,允许在非正常关机后恢复注册表状态

注册表取证五步工作流

这是本文的实战核心。该技能定义了从"拿到镜像"到"输出分析报告"的完整五步流程,每一步都给出可直接复制的命令。

Step 1:从取证镜像中提取注册表 Hive

以只读方式挂载取证镜像,提取系统级与用户级 hive,并复制事务日志(用于脏 hive 恢复),最后对全部 hive 做 SHA-256 哈希以确保证据链完整:

# 只读挂载取证镜像(offset=$((2048*512)) 跳过分区表) mkdir /mnt/evidence mount -o ro,loop,offset=$((2048*512)) /cases/case-2024-001/images/evidence.dd /mnt/evidence # 复制系统级 hive cp /mnt/evidence/Windows/System32/config/SAM /cases/case-2024-001/registry/ cp /mnt/evidence/Windows/System32/config/SYSTEM /cases/case-2024-001/registry/ cp /mnt/evidence/Windows/System32/config/SOFTWARE /cases/case-2024-001/registry/ cp /mnt/evidence/Windows/System32/config/SECURITY /cases/case-2024-001/registry/ cp /mnt/evidence/Windows/System32/config/DEFAULT /cases/case-2024-001/registry/ # 复制用户级 hive cp /mnt/evidence/Users/*/NTUSER.DAT /cases/case-2024-001/registry/ cp /mnt/evidence/Users/*/AppData/Local/Microsoft/Windows/UsrClass.dat /cases/case-2024-001/registry/ # 复制事务日志(用于脏 hive 恢复) cp /mnt/evidence/Windows/System32/config/*.LOG* /cases/case-2024-001/registry/logs/ # 对所有 hive 哈希,固化证据链 sha256sum /cases/case-2024-001/registry/* > /cases/case-2024-001/registry/hive_hashes.txt

需要说明的要点:NTUSER.DAT按用户逐一提取,UsrClass.dat位于用户配置目录的 AppData 下;*.LOG*事务日志在系统非正常关机、hive 处于"脏"状态时可用于恢复未落盘的修改,是完整取证中不可省略的一环;所有提取物都应计入哈希清单以备后续校验。

Step 2:用 RegRipper 批量自动化提取工件

安装并运行 RegRipper,对不同 hive 使用对应的 profile(-f),或针对特定插件(-p)做定向提取:

# 安装 RegRipper git clone https://github.com/keydet89/RegRipper3.0.git /opt/regripper # 对 NTUSER.DAT(用户配置文件)运行 perl /opt/regripper/rip.pl -r /cases/case-2024-001/registry/NTUSER.DAT \ -f ntuser > /cases/case-2024-001/analysis/ntuser_report.txt # 对 SYSTEM hive 运行 perl /opt/regripper/rip.pl -r /cases/case-2024-001/registry/SYSTEM \ -f system > /cases/case-2024-001/analysis/system_report.txt # 对 SOFTWARE hive 运行 perl /opt/regripper/rip.pl -r /cases/case-2024-001/registry/SOFTWARE \ -f software > /cases/case-2024-001/analysis/software_report.txt # 对 SAM hive 运行(用户账户信息) perl /opt/regripper/rip.pl -r /cases/case-2024-001/registry/SAM \ -f sam > /cases/case-2024-001/analysis/sam_report.txt # 运行特定插件 perl /opt/regripper/rip.pl -r /cases/case-2024-001/registry/NTUSER.DAT \ -p userassist > /cases/case-2024-001/analysis/userassist.txt perl /opt/regripper/rip.pl -r /cases/case-2024-001/registry/SYSTEM \ -p usbstor > /cases/case-2024-001/analysis/usbstor.txt

参考文件 api-reference.md 还补充了常用插件组合:NTUSER.DAT 可跑userassistrecentdocstypedurls;SYSTEM hive 可跑compnameusbstorshutdown

Step 3:提取持久化与 Autorun 条目

自启动(autorun)是恶意软件持久化调查的核心。这里既可以用 python-registry 手工枚举 Run 系键,也可以直接复用仓库脚本。先看手工方式:

# 使用 python-registry 进行定向提取 pip install python-registry python3 << 'PYEOF' from Registry import Registry # 打开 SOFTWARE hive reg = Registry.Registry("/cases/case-2024-001/registry/SOFTWARE") # 检查 Run 键(自启动) autorun_paths = [ "Microsoft\\Windows\\CurrentVersion\\Run", "Microsoft\\Windows\\CurrentVersion\\RunOnce", "Microsoft\\Windows\\CurrentVersion\\RunServices", "Microsoft\\Windows\\CurrentVersion\\Policies\\Explorer\\Run", "Wow6432Node\\Microsoft\\Windows\\CurrentVersion\\Run" ] for path in autorun_paths: try: key = reg.open(path) print(f"\n=== {path} (Last Modified: {key.timestamp()}) ===") for value in key.values(): print(f" {value.name()}: {value.value()}") except Registry.RegistryKeyNotFoundException: pass # 检查已安装服务 key = reg.open("Microsoft\\Windows NT\\CurrentVersion\\Svchost") print(f"\n=== Svchost Groups ===") for value in key.values(): print(f" {value.name()}: {value.value()}") PYEOF # 检查 NTUSER.DAT 中的用户级自启动 python3 << 'PYEOF' from Registry import Registry reg = Registry.Registry("/cases/case-2024-001/registry/NTUSER.DAT") user_autorun = [ "Software\\Microsoft\\Windows\\CurrentVersion\\Run", "Software\\Microsoft\\Windows\\CurrentVersion\\RunOnce", "Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\StartupApproved\\Run" ] for path in user_autorun: try: key = reg.open(path) print(f"\n=== {path} (Last Modified: {key.timestamp()}) ===") for value in key.values(): print(f" {value.name()}: {value.value()}") except Registry.RegistryKeyNotFoundException: pass PYEOF

值得强调的取证细节:StartupApproved\Run记录每个自启动项的启用/禁用状态(二进制数据),可与 Run 键交叉验证——恶意软件常通过恢复启用状态实现持久化。key.timestamp()(Last Write Time)对于将自启动项的写入时间与恶意软件执行时间线关联至关重要。

仓库源码佐证:该步骤在技能脚本中已程序化实现。查看 scripts/agent.py 的extract_autorun_entries()函数,其遍历的 autorun_paths 列表与上文一致,且每条记录都会带上pathnamevaluelast_modified四个字段;extract_user_autorun()则处理 NTUSER.DAT 中的用户级 Run/RunOnce。更有价值的是flag_suspicious_autorun()函数:它内置了\temp\\appdata\\programdata\\public\powershellcmd等可疑特征路径,凡 value 中出现这些特征的条目都会被标记为suspicious并给出原因——这正是把"经验"编码进 Agent 的典型做法。

Step 4:分析用户活动工件

用户活动重建依赖 UserAssist、RecentDocs、TypedURLs、TypedPaths 等 NTUSER.DAT 工件。

UserAssist的 value 名以 ROT13 编码存储,二进制数据中包含运行次数、聚焦次数与最后运行时间(FILETIME,自 1601-01-01 起 100ns 间隔):

# 提取 UserAssist 数据(ROT13 编码) python3 << 'PYEOF' from Registry import Registry import codecs, struct, datetime reg = Registry.Registry("/cases/case-2024-001/registry/NTUSER.DAT") ua_path = "Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\UserAssist" key = reg.open(ua_path) for guid_key in key.subkeys(): count_key = guid_key.subkey("Count") print(f"\n=== {guid_key.name()} ===") for value in count_key.values(): decoded_name = codecs.decode(value.name(), 'rot_13') data = value.value() if len(data) >= 16: run_count = struct.unpack('<I', data[4:8])[0] focus_count = struct.unpack('<I', data[8:12])[0] timestamp = struct.unpack('<Q', data[60:68])[0] if len(data) >= 68 else 0 if timestamp > 0: ts = datetime.datetime(1601,1,1) + datetime.timedelta(microseconds=timestamp//10) print(f" {decoded_name}: Runs={run_count}, Focus={focus_count}, Last={ts}") else: print(f" {decoded_name}: Runs={run_count}, Focus={focus_count}") PYEOF # 提取最近打开的文档(MRU 列表) perl /opt/regripper/rip.pl -r /cases/case-2024-001/registry/NTUSER.DAT \ -p recentdocs > /cases/case-2024-001/analysis/recentdocs.txt # 提取浏览器输入过的 URL perl /opt/regripper/rip.pl -r /cases/case-2024-001/registry/NTUSER.DAT \ -p typedurls > /cases/case-2024-001/analysis/typedurls.txt # 提取资源管理器地址栏输入过的路径 perl /opt/regripper/rip.pl -r /cases/case-2024-001/registry/NTUSER.DAT \ -p typedpaths > /cases/case-2024-001/analysis/typedpaths.txt

解码细节rot_13仅反转字母(A↔N),还原后的名称即完整程序路径;运行次数从偏移 4 的 4 字节小端无符号整数读取;最后运行时间戳从偏移 60 读取 8 字节 FILETIME。参考 api-reference.md 中的 UserAssist Decoding 片段,仓库的 agent.pyextract_userassist()函数用同样的struct.unpack_from逻辑实现,并输出可直接阅读的%Y-%m-%d %H:%M:%S时间格式。

RecentDocs 的特殊处理:仓库脚本extract_recent_docs()展示了如何从 RecentDocs 键的二进制 value 中还原文件名——以\x00\x00分割 UTF-16-LE 编码数据,跳过MRUListEx索引项,得到最近访问文档清单。

Step 5:提取系统与网络信息

SYSTEM 与 SOFTWARE hive 记录了计算机名、时区、关机时间、网卡配置、Wi-Fi 历史与已安装软件:

# 计算机名与 OS 版本(SYSTEM hive) perl /opt/regripper/rip.pl -r /cases/case-2024-001/registry/SYSTEM \ -p compname > /cases/case-2024-001/analysis/system_info.txt # 网络接口与配置 perl /opt/regripper/rip.pl -r /cases/case-2024-001/registry/SYSTEM \ -p nic2 >> /cases/case-2024-001/analysis/system_info.txt # 无线网络历史 perl /opt/regripper/rip.pl -r /cases/case-2024-001/registry/SOFTWARE \ -p networklist > /cases/case-2024-001/analysis/network_history.txt # 时区配置 perl /opt/regripper/rip.pl -r /cases/case-2024-001/registry/SYSTEM \ -p timezone > /cases/case-2024-001/analysis/timezone.txt # 关机时间 perl /opt/regripper/rip.pl -r /cases/case-2024-001/registry/SYSTEM \ -p shutdown > /cases/case-2024-001/analysis/shutdown.txt # 从 Uninstall 键提取已安装软件 perl /opt/regripper/rip.pl -r /cases/case-2024-001/registry/SOFTWARE \ -p uninstall > /cases/case-2024-001/analysis/installed_software.txt

ControlSet 的解析技巧:仓库脚本extract_system_info()展示了如何处理多 ControlSet——先从Select键读取Current值,动态拼接ControlSetNNN路径,再读取Control\ComputerName\ComputerName的计算机名与Control\TimeZoneInformation的时区键名。已安装软件则通过遍历Microsoft\Windows\CurrentVersion\Uninstall子键、筛选DisplayNameDisplayVersionPublisherInstallDate等字段得到(见extract_installed_software())。

关键注册表取证路径速查表

参考 api-reference.md 中的路径表,将上面所有分析归纳为一张"去哪找什么"的速查表:

路径Hive工件
Microsoft\Windows\CurrentVersion\RunSOFTWARE / NTUSER自启动条目
Microsoft\Windows\CurrentVersion\RunOnceSOFTWARE / NTUSER一次性自启动
CurrentVersion\Explorer\UserAssistNTUSER程序执行(ROT13)
CurrentVersion\Explorer\RecentDocsNTUSER最近打开文档
CurrentVersion\Explorer\TypedPathsNTUSER资源管理器地址栏历史
ControlSet00X\Enum\USBSTORSYSTEMUSB 设备历史
MountedDevicesSYSTEM盘符分配
CurrentVersion\UninstallSOFTWARE已安装软件
ControlSet00X\Control\ComputerNameSYSTEM计算机名
ControlSet00X\Control\TimeZoneInformationSYSTEM系统时区

进阶:用 regipy 编写分析脚本

除 python-registry 外,参考文件还给出了regipy的编程接口,适合与现有 Python 取证管线集成:

from regipy.registry import RegistryHive # 打开 hive reg = RegistryHive("/path/to/NTUSER.DAT") key = reg.get_key("Software\\Microsoft\\Windows\\CurrentVersion\\Run") print(key.header.last_modified) for val in key.iter_values(): print(val.name, val.value) # 遍历子键 key = reg.get_key("Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall") for subkey in key.iter_subkeys(): print(subkey.name, subkey.header.last_modified)

注意 regipy 的 API 命名与 python-registry 不同:RegistryHive.get_key()/get_subkey()/iter_values()/iter_subkeys(),时间戳通过key.header.last_modified获取。仓库的 agent.py 即基于 regipy 实现,是两种库对照学习的好样例。

仓库附带的自动化分析 Agent

除手工命令外,本技能附带一个可直接运行的取证分析 Agent(scripts/agent.py),其核心价值在于将上述五步工作流固化为可重复执行的程序:

支持的--action参数autorunuserassistrecent_docssystem_infoinstalled_softwarefull_analysis(默认)。

典型用法

# 完整分析:同时传入 SYSTEM / SOFTWARE / NTUSER 三个 hive python3 agent.py \ --system-hive /cases/case-2024-001/registry/SYSTEM \ --software-hive /cases/case-2024-001/registry/SOFTWARE \ --ntuser /cases/case-2024-001/registry/NTUSER.DAT \ --output-dir ./registry_analysis # 仅提取自启动并标记可疑项 python3 agent.py \ --software-hive /cases/case-2024-001/registry/SOFTWARE \ --ntuser /cases/case-2024-001/registry/NTUSER.DAT \ --action autorun

脚本行为说明(与 agent.py 源码一致):

  • 多阶段执行main()根据--action与传入的 hive 参数按需调度extract_system_infoextract_autorun_entriesextract_user_autorunextract_userassistextract_recent_docsextract_installed_software等函数,并在终端打印[+]进度;
  • 可疑项自动标记flag_suspicious_autorun()对自启动项做路径特征匹配,命中temp/appdata/programdata/public目录或powershell/cmd关键词即标记为可疑;
  • JSON 报告输出:所有结果汇总后写入--output-dir/registry_report.json(含generated_at时间戳),便于后续 SIEM 或脚本二次处理。

常见调查场景

场景一:恶意软件持久化调查提取 SOFTWARE 与 NTUSER.DAT,逐一检查所有 Run/RunOnce 键中的未授权条目;检查服务项中可疑的新增服务;检查计划任务注册表键;将 autorun 时间戳与恶意软件执行时间线关联。

场景二:用户活动重建分析 UserAssist 获取程序执行历史,检查 RecentDocs 获取访问过的文件,检查 TypedPaths 获取资源管理器导航记录,提取 ShellBags 获取文件夹访问模式,围绕事件时间窗口构建用户活动时间线。

场景三:未授权软件检测解析 Uninstall 键获取全部已安装应用,与批准的软件基线对比;检查 BAM/DAM 中不在批准清单里的近期执行程序;即使软件已被卸载,AppCompatCache 中仍可能残留执行证据。

场景四:USB 数据外泄调查从 SYSTEM hive 提取 USBSTOR 条目获取连接的设备,将设备序列号与 MountedDevices 关联,检查 NTUSER.DAT 的 MountPoints2 获取用户对可移动介质的访问记录,查阅 SetupAPI 日志获取首次连接时间戳。

输出报告模板

分析完成后,按以下模板组织结果(摘自 SKILL.md 的 Output Format 部分),确保结论清晰、可审计、可关联其他取证工件:

Registry Analysis Summary: System: DESKTOP-ABC123 (Windows 10 Pro Build 19041) Timezone: Eastern Standard Time (UTC-5) Last Shutdown: 2024-01-18 23:45:12 UTC Autorun Entries: HKLM Run: 5 entries (1 suspicious: "updater.exe" -> C:\ProgramData\svc\updater.exe) HKCU Run: 3 entries (all legitimate) Services: 142 entries (2 unknown: "WinDefSvc", "SysMonAgent") User Activity (NTUSER.DAT): UserAssist Programs: 234 entries Recent Documents: 89 entries Typed URLs: 45 entries Typed Paths: 12 entries USB Devices Connected: - Kingston DataTraveler (Serial: 0019E06B4521) - First: 2024-01-10, Last: 2024-01-18 - WD My Passport (Serial: 575834314131) - First: 2024-01-15, Last: 2024-01-15 Installed Software: 127 applications Suspicious Findings: 3 items flagged for review

该模板把系统信息、自启动条目、用户活动、USB 设备与已安装软件五类证据整合成一份可交付的分析摘要,其中的可疑项(如C:\ProgramData\svc\updater.exe这类非常规路径)可直接进入后续事件响应流程。

与仓库生态的衔接

该技能是 Anthropic-Cybersecurity-Skills 中 41 个数字取证技能(README.md 的 Digital Forensics 领域)之一,其产物(自启动条目、执行历史、USB 记录)天然可与同仓库其他技能形成分析链条:例如将 UserAssist/ShimCache 中的执行证据与 hunting-for-persistence-mechanisms-in-windows 的持久化狩猎、与事件日志分析类技能(如 analyzing-windows-event-logs-in-splunk)的时间线进行交叉验证。全套技能覆盖 MITRE ATT&CK、NIST CSF 2.0、MITRE ATLAS、D3FEND、NIST AI RMF 与 MITRE F3 六大框架,可在 mappings 目录查看整体映射数据。

结语

注册表取证的核心在于"知道去哪找、找到后怎么解码、解码后如何关联"。本文基于analyzing-windows-registry-for-artifacts技能,完整走通了从镜像挂载、hive 提取、RegRipper 批量分析、python-registry/regipy 定向解析到自动化 Agent 出报告的整套流程。实践中建议始终遵循三点原则:只读取证、全程哈希(确保证据可复现);多工件交叉验证(UserAssist、ShimCache、Prefetch 互相印证);时间戳驱动时间线(用 Last Write Time 与 FILETIME 将碎片证据串成攻击叙事。

【免费下载链接】Anthropic-Cybersecurity-Skills817 structured cybersecurity skills for AI agents · Mapped to 6 frameworks: MITRE ATT&CK, NIST CSF 2.0, MITRE ATLAS, D3FEND, NIST AI RMF & MITRE F3 (Fight Fraud) · agentskills.io standard · Works with Claude Code, GitHub Copilot, Codex CLI, Cursor, Gemini CLI & 20+ platforms · 29 security domains · Apache 2.0项目地址: https://gitcode.com/GitHub_Trending/an/Anthropic-Cybersecurity-Skills

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/10 18:10:39

CANN/ge Tensor描述API

aclTensorDesc 【免费下载链接】ge GE&#xff08;Graph Engine&#xff09;是面向昇腾的图编译器和执行器&#xff0c;提供了计算图优化、多流并行、内存复用和模型下沉等技术手段&#xff0c;加速模型执行效率&#xff0c;减少模型内存占用。 GE 提供对 PyTorch、TensorFlow …

作者头像 李华
网站建设 2026/9/10 18:10:37

Android通知渠道适配指南与最佳实践

1. Android 8.0通知渠道适配的必要性2017年发布的Android 8.0&#xff08;Oreo&#xff09;引入了一个革命性的通知管理机制——通知渠道&#xff08;Notification Channels&#xff09;。这个看似简单的功能更新&#xff0c;实际上彻底改变了Android应用处理通知的方式。作为开…

作者头像 李华
网站建设 2026/9/10 18:10:10

配电网最优潮流二阶锥松弛建模与Matlab代码实现详解

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/10 18:09:23

STM32静态库制作与链接原理:从.a文件到固件

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华