新闻详情

新闻详情

首页 / 资讯中心 / 详情

Burglar病毒逆向分析:从汇编指令到内存驻留的完整查杀实战

发布时间:2026/9/25 4:20:43来源:尧图网络
Burglar病毒逆向分析:从汇编指令到内存驻留的完整查杀实战
1. 认识 Burglar一个会偷东西的 DOS 病毒说起汇编语言和病毒分析很多年轻同行可能觉得这是两个世界的东西——一个是古老晦涩的机器级编程一个是每日安全通告里的高级威胁。但真正做过恶意代码逆向的人都知道汇编语言永远是分析恶意软件的第一道门。你不可能等每个样本都有现成的反编译报告拿到一个陌生样本打开十六进制窗口满屏都是mov ax, 4300h、int 21h这种指令时不懂汇编就只能干瞪眼。这次我拿 Burglar 病毒当教材完整走了一遍分析—破解—防治的流程收获比读十本理论书都大。Burglar 病毒是一款典型的 DOS 时代文件感染型病毒常见的感染对象是 COM 文件病毒体积在 1600 字节上下属于小而精的品种。它的名字 Burglar 翻译过来就是窃贼这名字起得很实在它不会像 DIR-2 那样瞬间把磁盘搅得天翻地覆而是悄悄驻留内存在你执行文件时偷偷下手把自身代码附加到新的宿主程序上像个小偷一样不留痕迹地扩展自己的地盘。分析 Burglar 的过程本质上就是在学三件事病毒如何进入内存、如何伪装自身、如何批量感染文件。这三件事搞明白了DOS 病毒族系的很多样本你都能触类旁通。在当年的病毒分类里Burglar 属于内存驻留型文件感染病毒。它的整体套路不复杂首次运行被感染的 COM 文件时病毒通过修改 DOS 内存控制块实现常驻然后挂钩系统中断把文件打开、执行、创建相关的中断服务程序拦截下来之后每当系统调用文件操作它就检查目标文件是否符合感染条件符合就写入病毒代码顺便打上已感染标记防止重复感染导致宿主程序膨胀到无法运行。这套改内存—挂钩子—查文件—打标的流程其实就是今天所有感染型恶意软件的祖传手艺。值得一提的还有它的隐蔽性设计。Burglar 比较讲究姿态它不会在屏幕上打印乱七八糟的字符也不会故意制造明显的文件长度异常。它会在宿主程序的文件头保存原始入口点等宿主程序正常执行时再把控制权交还回去。单看文件首部你甚至不容易察觉异常只有在内存布局层面才能发现多了一个幽灵进程。所以分析这类病毒光靠看文件有没有变大这种粗筛是不够的必须从内存状态和中断向量表入手。这篇文章适合三类读者一是正在学汇编语言、想知道int 21h、int 27h这类中断调用到底能干什么的人二是做安全分析、想从老病毒身上学最小可执行恶意代码设计思路的人三是纯粹对老软件考古感兴趣、想搞清楚 90 年代的病毒到底怎么写的人。看完你至少能回答一个问题一个不到 2KB 的程序凭什么能把整台机器拿捏得死死的2. 还原现场用 DOSBox 搭建病毒分析隔离环境2.1 为什么选 DOSBox 而不是实体机现在想找一个能跑 DOS 的老机器比找一块 IDE 硬盘还难更别提在真实硬件上测试病毒的风险了——万一感染了引导区整块磁盘的数据可能一夜清零。我的选择是 DOSBox 加虚拟磁盘镜像软件模拟出来的 8086 环境既保留了真实的内存布局和中断行为又不会让恶意代码碰到宿主操作系统。具体做法是先创建一个 100MB 的虚拟硬盘镜像用mkfs一类的工具格式化成 FAT 格式DOSBox 自带的imgmake也能干这事然后把镜像挂到 DOSBox 里。启动参数大致是这样DOSBox -machinevga_only -mem 16 -c mount c /path/to/disk.img这里的-mem 16是重点。当年很多病毒会检查内存总量来决定驻留策略Burglar 对常规 640KB 内存的布局有固定预期你要是开 32MB 模拟内存反而容易让病毒的内存计算逻辑出现异常导致分析结果失真。老病毒分析有个铁律环境越接近当年行为越真实。2.2 必备工具箱DEBUG、中断向量表检查器与跟踪器在 DOS 环境下我最依赖的工具是 DEBUG。它虽然简陋却是汇编语言分析的万能手术刀。用debug.exe可以加载 COM 文件、单步跟踪t、查看寄存器r、修改内存e、转储十六进制内容d对付 1600 字节的病毒绰绰有余。另一个工具是 Norton Utilities 里的 DiskEdit用来检查文件在磁盘上的物理分布和未用簇能辅助判断病毒是否在文件尾部追加了代码。更关键的是检查中断向量表的方法。DOS 的中断向量表位于内存地址0000:0000到0000:03FF每个中断向量占 4 字节分别是偏移地址和段地址。病毒驻留内存后必然要修改某个中断的向量。所以我拿到一个可疑环境第一件事就是用 DEBUG 把中断向量的原始值和新值都打印出来逐一比对。; 在 DEBUG 中查看 INT 21H 向量是否被篡改 -d 0000:0084 0000:0087INT 21H的中断号是21H它对应的向量表偏移是21H * 4 84H。如果显示的段地址指向一个可疑的高位内存区比如9xxx:xxxx或Axxx:xxxx而不是 DOS 系统常用的xxxx:xxxx的某些特定地址区间基本就能断定有程序挂钩了这个中断。Burglar 最常动的是INT 21H因为所有文件操作都走这个口子堵住了它等于守住了感染通道。检查中断向量这一步是整个分析流程里成本最低、收益最高的动作。2.3 分析前的样本准备和快照机制病毒分析最忌讳拿裸样本直接跑。我的做法是准备几个标准的测试文件一个干净的hello.com几十字节的合法 COM 程序、一个 100KB 左右的.EXE文件用于验证感染范围、还有几个带只读属性和隐藏属性的文件用于测试病毒对特殊属性的处理。这样每一步感染行为都有清晰的对照物。DOSBox 还有个好用的功能是保存状态快照。在启动hello.com之前先存一个快照运行后如果发现内存被污染直接恢复快照就能回到干净状态。相当于给病毒分析加了一个后悔药按钮。这个机制帮我节省了大量重启虚拟环境的时间强烈建议每个做老病毒分析的人都用起来。快照的时机要选好最好是已完成 DOS 引导、但还没执行任何可疑程序的时刻这样后续每次对比都能从同一个基点出发。3. 病毒行为拆解它到底在内存里干了什么3.1 内存驻留申请一块偷来的地盘Burglar 的驻留逻辑是典型的 COM 病毒架构。它把自己分成两段一段叫安装器任务是完成驻留和挂钩另一段叫病毒体副本在安装完成后常驻内存等待系统中断被触发。安装器首先通过INT 21H的功能48H——也就是 DOS 的分配内存功能——申请一块大小为病毒体总长度加上若干字节的总内存块然后把病毒体从当前进程复制到这块新申请的内存里再通过INT 21H的31H功能终止并保持驻留退出当前进程。这里有一个很有意思的细节Burglar 申请内存时会专门用一个非标准的段地址来隐藏自己使得MEM命令列出的内存块列表里这块区域看起来像是被一个合法程序占用的。它还会把自己复制到内存后立即修改这块区域内几个关键跳转指令的目标地址。也就是说它不光搬家搬家之后还把门牌号给涂了。从内存布局上看驻留后的 Burglar 大体是这样分布的区域用途内存控制块前部伪装成系统进程的占位信息病毒体入口区处理被挂钩中断的分发逻辑加密的病毒主体平时以密文形式存放触发时才解密标志区记录驻留状态防止重复驻留这个布局提示我们一个重要的排查技巧如果你怀疑某个 DOS 程序驻留了内存不要直接看进程列表而要看内存控制块链表中那些从未被释放的段。手动遍历 MCB 链段地址M开头后面跟着4D 5A时凡是出现宿主进程已退出但内存块仍存活的段基本就是驻留代码的落脚点。Burglar 的伪装做得不算完美细心遍历总能发现多出来的一块“无主之地”。3.2 挂钩中断劫持系统服务驻留只是第一步。Burglar 要让自己能在后续时刻不断感染新文件就必须接管某个系统服务。DOS 时代最常用的劫持目标是INT 21H——这个中断相当于 DOS 的系统调用总入口几乎所有的文件创建、打开、读取、写入、执行操作都要经过它。Burglar 的挂钩方式是把原本的INT 21H向量地址保存在自己内存区的一个变量中然后在向量表里填上自己新入口的地址。每次系统调用INT 21H会先跳到病毒入口病毒检查 AH 寄存器中的功能号如果是4BHEXEC加载并执行程序就是最关键的感染时机它知道有程序要被执行了于是找文件、感染文件、再把控制权交还给真正的系统处理程序如果是一些无关的功能比如2AH读取日期就直接跳转到原中断向量在调用链上完全透明如果是48H分配内存它会顺便把分配结果记录下来用于判断当前可用内存大小方便后续决定是否需要释放自己占用的部分。这种选择性劫持的策略比一刀切地拦截所有调用要高明得多。它减少了在无关调用上的开销也让分析者更难通过简单的调用计数发现异常。我当时为了确认挂钩点不得不对几个关键功能号逐一设置断点观察哪个功能号被病毒额外处理了。最终锁定了4BH和48H这两个重点对象再往下走就顺畅多了。3.3 触发与破坏性它到底会不会咬人很多初学者以为病毒都会设一个发作日期定时删除文件、格式化硬盘。Burglar 并不是那种破坏性病毒。它的典型行为里没有明显的炸弹机制至少常见的版本没有。它更像一个纯粹的繁殖者所有动作都围绕感染展开不会故意损坏宿主文件也不会篡改数据。它的恶意体现在传播本身——消耗内存、拖慢系统、让文件体积膨大以及最致命的让杀毒软件的病毒库必须时刻更新。但没有破坏性不代表没有危险。当病毒反复感染已经感染过的文件时会覆盖宿主文件原有的部分数据或者因为文件长度超过 64KB 的上限而破坏 COM 文件的结构导致程序无法运行。Burglar 虽然设计了已感染标志来避免重复感染但由于它判断文件大小的逻辑存在一个上限通常避开超过某个长度的文件一旦被感染的文件列表过长系统内存碎片化加剧就可能导致 DOS 报出内存不足的异常。这些都是在分析时需要观察记录的行为特征也是手工查杀时必须考虑的风险点。4. 感染算法逐行破解从汇编代码看 Burglar 的作案手法4.1 从宿主文件到带病毒文件完整感染流程Burglar 感染一个 COM 文件的典型流程可以划分为五个阶段。下面我会结合汇编代码的简化示意来讲解这段代码不是从 Burglar 原样提取的逐字节复制而是根据感染逻辑整理出的等价还原版本用于说明算法思路。第一阶段定位文件属性。病毒调用INT 21H的4300H功能读取文件属性然后调用4301H把属性改为普通文件。这么做是因为只读文件无法写入病毒必须先把障碍清除。它还会记住原来的属性感染结束后恢复。第二阶段打开并检查长度。用3DH打开文件用4202H移动文件指针到文件末尾再读取当前指针位置得到文件长度。如果长度大于某个阈值比如 63000 字节或者小于 100 字节病毒会放弃感染因为 COM 文件超过 64KB 就无法正常运行对太小的文件下手又容易让宿主程序因头部被改写而立刻崩掉。第三阶段读取文件头判断感染标志。病毒将文件指针移到文件开头读取 4 个字节。大多数情况下COM 文件的前 4 个字节是E9 xx xx或EB xx开头的跳转指令。病毒会检查一个特定的字节位置通常是基于文件头某些偏移计算出的一个数值看是否等于自己的感染标记值这个值可能藏在文件偏移0001H至0003H的跳转地址字段里让分析者误以为是正常的入口点跳转目标。如果等于标记就认为是自己家族成员跳过不感染。第四阶段写入病毒体并修改文件头跳转。把文件指针挪到文件末尾在末尾写入完整的病毒体代码。同时在文件头写入一条跳转指令指令的目标地址指向病毒体所在的偏移位置。这样当系统执行被感染的程序时会先跳到病毒体首部让病毒完成驻留和感染逻辑然后病毒再跳回文件原来的入口点继续执行宿主程序。; 感染逻辑等价还原示意 MOV AH, 3DH ; 打开文件 MOV AL, 02H ; 读写方式 INT 21H MOV AH, 4202H ; 指针移到文件末尾 XOR CX, CX XOR DX, DX INT 21H CMP AX, 64000 ; 超长文件不感染 JA ABORT CMP AX, 100 JB ABORT ; 过小文件不感染 ; 读取文件头 4 字节检查感染标志 MOV AH, 3FH MOV CX, 04H LEA DX, HeaderBuf INT 21H CMP WORD PTR [HeaderBuf1], MarkVal JE ABORT ; 已感染则放弃 ; 写入病毒体到文件尾部 MOV AH, 4202H XOR CX, CX XOR DX, DX INT 21H MOV AH, 40H MOV CX, VirLen LEA DX, VirusBody INT 21H ; 修改文件头跳转指令指向病毒体 MOV AH, 4200H XOR CX, CX XOR DX, DX INT 21H MOV AH, 40H MOV CX, 03H LEA DX, JumpInstr INT 21H第五阶段恢复属性并关闭文件。病毒恢复文件原属性、关闭文件句柄。整个流程中它不会留下明显的文本特征也不会修改文件日期时间戳——因为 DOS 的3CH创建文件和5BH创建新文件在写入后会改变时间戳Burglar 更倾向于用3DH加40H的方式保留原时间戳这样用户从资源管理器里看不出任何异样。4.2 病毒体内部的加密与自解密Burglar 最让我感兴趣的其实是它对病毒主体做了一层简单的加密处理。驻留在文件尾部的病毒体看起来基本是一堆无意义的字节只有当病毒被触发时才会用一段自解密代码把真正的功能代码还原出来。自解密循环在汇编里大概是这样的思路; 自解密循环示意 MOV SI, OFFSET EncodedBody MOV DI, OFFSET DecodedBody MOV CX, BodyLen XOR AX, AX DECODE_LOOP: MOV AL, BYTE PTR [SI] XOR AL, 55H ; 单字节异或解密 MOV BYTE PTR [DI], AL INC SI INC DI LOOP DECODE_LOOP这种方式在当年的病毒里并不罕见但 Burglar 有个独特细节它会根据驻留内存的段地址动态生成异或密钥也就是每台机器、每次驻留解密密钥都可能不同。这大大增加了静态分析的难度——你如果只看文件里的病毒字节读出来全是密文没法直接判断逻辑必须动态执行或者模拟执行才能在内存里看到还原后的代码。这个设计放到今天看就是恶意软件常见的多重编码 动态生成密钥的原型。分析这种自解密代码有一个实用的手段不要急着逐行读懂解密循环而要先找到解密循环结束后的那一条指令。方法是在调试器里跟踪解密循环的LOOP指令等循环次数归零后再查看目标缓冲区的内容然后对整个缓冲区做内存转储。零散的病毒体此时会变成可读的汇编指令块我再用反汇编工具逐步解析每个功能段的用途。这个先定位还原点再读逻辑的思路比跟着密文硬撸效率高太多了。4.3 入口点跳转的伪装技巧刚才提到Burglar 修改 COM 文件头时不是简单写一个E9 xx xx的跳转而是会把跳转目标计算得和原入口点跳转几乎一致——很多正常 COM 文件本身就是以E9 xx xx开头的。病毒只改动其中一个字节让跳转的偏移恰好指向病毒体同时在某些偏移位置写入自己的标记值。这样用户用 DEBUG 查看文件头部时看到的依然是跳转指令的合法形态而不是一串乱码。这个伪装技巧也提醒了我们防治层面的一条经验判断文件是否被感染不能只看头部是不是跳转指令而要结合文件长度、跳转目标位置、文件尾部的冗余数据来综合判断。我在分析时就是先注意到hello.com的原始入口点是0100H处的MOV AH, 09H可被感染后入口点变成了跳转到尾部偏移的指令再对比终止地址IP寄存器的变化才确认了跳转被篡改的事实。5. 查杀与防御手工清理流程和长效机制5.1 清理内存中的驻留副本防御和查杀是同一枚硬币的两面。面对一个已感染系统我的第一步永远是先清内存再清文件——顺序错了会很麻烦。如果你先删了磁盘上的病毒文件但内存里的驻留副本还在它马上会重新感染其他干净文件等于白忙。清除内存驻留体有两种思路。最简单粗暴的是重启到干净系统盘。DOS 时代很多杀毒软件要求的干净启动盘就是这个原理用一个确定无毒的 DOS 引导盘启动系统确保病毒代码没进内存然后再去检查硬盘里的文件。第二种是手工还原中断向量在 DEBUG 里找到病毒保存的原中断向量地址填回中断向量表。这个操作很精细要求你先分析出病毒把原向量存在哪里。我的经验是驻留类病毒往往把自己的原向量保存在病毒段内一个固定偏移处顺着病毒入口的跳转指令往回追多几步就能找到。具体操作上我会先在 DEBUG 里查看INT 21H向量的值-d 0:84 L4假设显示INT 21H向量被改为97A6:012E那我就在97A6:012E附近反汇编查找病毒入口代码里对原向量的引用找到类似MOV WORD PTR [xxxx], 0E42H之类的指令其中0E42H大概率就是原偏移。确认后把它填回0000:0084地址。填完之后立刻在另一台机器上验证文件能否正常执行。这一步要格外小心地址填错轻则死机重则触发病毒的反击逻辑。5.2 从被感染文件中剥离病毒体内存清理完毕后轮到磁盘文件。手工修复被 Burglar 感染的 COM 文件思路分三步读取文件头部跳转指令的偏移值计算出病毒体在文件中的起始位置读取病毒体开头保存的原文件头字节——多数感染型病毒为了不破坏宿主程序会把原头部先保存下来写回原头部并截断文件到病毒体起始位置之前。因为 Burglar 的感染方式是追加式的病毒体在文件尾部所以截断操作相对安全。但要注意如果病毒体内部还保存了原文件的校验和或长度值你还要一并核对。遇到比较复杂的情况我一般先做一个备份再手动改完测试运行确保宿主程序能正常输出。这一步没有任何捷径。DOS 病毒查杀没有一键隔离这样的现代概念所有操作都建立在你要足够了解病毒的布局。这也是为什么当初学汇编语言的人普遍对文件格式、中断向量、内存管理这些底层概念更熟悉——因为查杀过程就是逆向过程的逆运算不懂底层逻辑根本无从下手。5.3 从病毒查杀到病毒防治的长效机制手工查杀更像是事后扑火真正有价值的思路是防治。Burglar 的传播依赖两个条件可写的可执行文件、可挂钩的系统中断。所以DOS时代的防治策略非常清晰给关键文件设置只读属性至少让随机感染无法轻易得手使用具备实时监控能力的杀毒软件在文件执行前检查文件长度和头部标记关键工作尽量在干净启动盘环境下进行减少内存驻留病毒的扩散窗口定期备份备份文件与工作文件分开放置防止整套系统一起沦陷。把这些经验映射到今天的终端安全你会发现方法论完全没变限制写权限、在代码执行前做静态检测、保持系统基线干净、隔离备份。现代 EDR 里的内存扫描执行前检测行为基线本质上是把当年手工做的事情自动化了。分析老病毒最大的价值就在这里——它能让你看懂安全产品里每一个设计决策的原始问题是什么。6. 复盘我在这轮分析中踩过的坑6.1 DOSBox 模拟精度带来的假象第一次跑样本时我在 DOSBox 里发现病毒驻留后INT 21H向量的段值特别规整几乎一眼就能看出来。当时还挺高兴觉得这病毒的隐蔽性不过如此。后来换了一台更老的真实机做对照实验才发现 DOSBox 对某些中断响应和内存分配策略做了简化导致病毒的某些伪随机化行为没有完全触发。换句话说我最初观察到的不隐蔽是模拟环境的副作用不是病毒的真实水平。这个教训很关键分析病毒时至少要在一个模拟器和一个真实环境或高精度模拟器里做交叉验证。DOSBox 够用但它毕竟是为了打游戏设计出来的对中断时序的模拟精度有限。有条件的话MAME 的 DOS 模式或更高精度的 8086 模拟器更适合做严谨的行为验证。6.2 被假感染标记带偏的一次排查第二次分析时我在某个样本的文件头里发现了一个可疑的标记值自信满满地以为找到了病毒用来识别已感染的指纹。可是当我继续跟踪完整的感染流程却在写入阶段发现病毒根本没用这个标记——它用的是文件尾部另一个偏移处的数值。我之前看到的那个标记只是一个普通的入口偏移字段恰好数值巧合得像指纹。这次误判提醒了我感染标志位置的确认必须建立在完整的感染流程追踪上而不是靠找特殊值。正确的做法是把已知感染文件和原始干净文件做二进制差分把差异区域逐个分析确定哪些字节是病毒的固定代码、哪些是动态填充、哪些是宿主原数据、哪些是标志值。用 diff 思维代替猜谜思维准确率会高很多。6.3 调试器单步跟踪中的反跟踪陷阱Burglar 有一处让我印象很深的反跟踪设计。当调试器单步执行经过它的自解密循环时它会记录当前的执行步数——如果发现步数和预期不符比如中间被INT 03H断点打断或者被单步标志位干扰它会在解密后的代码里插入一段垃圾数据让后续的反汇编结果明显畸形误导分析方向。严格来说这不算非常高级的反调试但在当年已经是相当有意识的对抗设计。我当时的处理方式比较笨但有效不完全依赖单步大量使用运行到断点策略只在关键指令处下断点比如解密循环后的第一条指令、INT 21H调用处让毒自己跑到目标点而不是一步一步推着它走。这样可以减少被反跟踪计策干扰的次数。另外给调试器加一段小工具记录IP寄存器的历史轨迹事后画出一条执行路径图对比异常跳转的位置。这种上下文轨迹复盘的方法在分析带反调试逻辑的样本时特别有用。6.4 手工修复文件前的备份意识最后还有一个实操层面的经验。我在手工修复一个被感染文件时因为过于自信直接在原文件上做了截断修改结果把原文件的最后几个字节弄丢了导致修复后的程序运行到尾部时报错。其实当时只要多花十秒钟复制一份copy hello.com hello.bak后面就完全不需要折腾重装环境。那之后我给自己定了一条规则任何手工修改前先做哈希校验并保留原始副本任何修改操作做记录一条指令对应一条笔记。这条规则后来帮我避免了很多改坏了却不知道改了什么的局面。老病毒分析看似过时它训练的东西却永远不过时耐心、精确、对系统底层机制的敬意。如果你也在学汇编语言或者刚入行安全分析强烈建议找一个这种体量小的 DOS 病毒样本在隔离环境里完整走一遍从行为观察到代码还原再到手工查杀的过程。走完你会发现那些现代恶意软件报告里说的进程注入API钩挂自解密在你眼里会变得无比透明——因为它们的祖宗你已经在汇编层面亲手拆过一遍了。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

eslint-plugin-react 规则详解:react/jsx-props-no-spread-multi —— 禁止重复展开同一标识符 2026/9/25 6:05:14

eslint-plugin-react 规则详解:react/jsx-props-no-spread-multi —— 禁止重复展开同一标识符

开发工具代码质量静态分析 【免费下载链接】eslint-plugin-react React-specific linting rules for ESLint 项目地址: https://gitcode.com/gh_mirrors/es/eslint-plugin-react 点击查看 免费下载 📝 本文是 eslint-plugin-react 插件中 react/jsx-pro…

阅读更多 →
Dart Analysis Server 插件快速修复(Quick Fix)编写指南:基于 analysis_server_plugin 包 2026/9/25 6:05:14

Dart Analysis Server 插件快速修复(Quick Fix)编写指南:基于 analysis_server_plugin 包

编程语言编译器语言运行时标准库开发工具 【免费下载链接】sdk The Dart SDK, including the VM, JS and Wasm compilers, analysis, core libraries, and more. 项目地址: https://gitcode.com/gh_mirrors/sdk1/sdk 点击查看 免费下载 本指南面向需要为 Dart 分析…

阅读更多 →
深入解析 @microsoft/fast-colors 的 Histogram.significantBits 属性:直方图降位量化与内存权衡 2026/9/25 6:05:14

深入解析 @microsoft/fast-colors 的 Histogram.significantBits 属性:直方图降位量化与内存权衡

前端UI组件 【免费下载链接】fast The adaptive interface system for modern web experiences. 项目地址: https://gitcode.com/gh_mirrors/fa/fast 点击查看 免费下载 导读 Histogram.significantBits 是 microsoft/fast-colors 颜色量化管线中控制颜色精度与内…

阅读更多 →
ESPnet egs2 说话人日志示例的 Kaldi 依赖解析:mini_librispeech/diar1 与 `wav-to-duration` 2026/9/25 6:05:14

ESPnet egs2 说话人日志示例的 Kaldi 依赖解析:mini_librispeech/diar1 与 `wav-to-duration`

人工智能语音音频深度学习NLP 【免费下载链接】espnet End-to-End Speech Processing Toolkit 项目地址: https://gitcode.com/gh_mirrors/es/espnet 点击查看 免费下载 本文围绕 egs2/mini_librispeech/diar1/NOTE.md 展开,说明一个容易被忽略的部署事…

阅读更多 →
Apache DataFusion 循环依赖检查工具 depcheck:原理、源码解析与 CI 实践 2026/9/25 6:05:08

Apache DataFusion 循环依赖检查工具 depcheck:原理、源码解析与 CI 实践

大数据数据分析后端 【免费下载链接】datafusion Apache DataFusion SQL Query Engine 项目地址: https://gitcode.com/gh_mirrors/datafu/datafusion 点击查看 免费下载 导读 Apache DataFusion 是一个以模块化多 crate 架构著称的 Rust 查询引擎,其仓…

阅读更多 →
Humanizer InDate.Five 深入解析:用 DateOnly 流畅表达“5 天/周/月/年后“的日期 2026/9/25 6:05:08

Humanizer InDate.Five 深入解析:用 DateOnly 流畅表达“5 天/周/月/年后“的日期

开发工具 【免费下载链接】Humanizer Humanizer meets all your .NET needs for manipulating and displaying strings, enums, dates, times, timespans, numbers and quantities 项目地址: https://gitcode.com/gh_mirrors/hu/Humanizer 点击查看 免费下载 本文聚…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉