rasm2实战:从机器码到汇编,轻松搞定多架构反汇编
昨天一个朋友在调试一块老设备的固件日志里吐出一串十六进制字节他对着屏幕发了十几分钟呆我路过瞄了一眼说“用rasm2 -d翻一下不就完了”。他有点意外“rasm2 不是做汇编的吗” 确实rasm2名气不如它的老东家 radare2 那么响亮但它是个既能“汇编”又能“反汇编”的轻量命令行工具。所谓机器码转汇编就是把b8 01 00 00 00这种字节序列变成mov eax, 1这样人能看懂的指令。这行字听起来简单实际在用的时候架构、位数、字节序、指令模式都会影响结果稍不注意就会翻出完全看不懂的东西。这篇文章就围绕 rasm2 讲透机器码转汇编这件事从安装、用法、多架构实操到脚本集成把我实际踩过的坑一起写出来适合正在做固件分析、二进制比对、或者单纯想搞懂反汇编原理的开发者和安全爱好者。1. 为什么需要把机器码转成汇编1.1 机器码、汇编和“翻译”的关系机器码是 CPU 真正执行的二进制指令在文件里表现为一串字节。比如55这一个字节在 x86 架构下代表push ebp但在 ARM 架构下就可能是一条完全不同的指令。汇编语言是机器码的助记符形式把难以记忆的十六进制字节翻译成mov、add、jmp这样的名字。所以“机器码转汇编”本质上是反汇编是一套把二进制指令还原成汇编文本的逆过程。这个过程不是机械的字节替换。同样是字节90在 x86 里是nop在 ARM 里可能是umull r0, r0, r0, r0之类。机器码的解读高度依赖三件事指令集架构x86、ARM、MIPS、RISC-V 等、指令宽度16/32/64 位、字节序大端小端。如果这三点没对上反汇编出来的结果就会变成一堆看似合理但完全不是那么回事的指令。举个例子我手头有一段嵌入式程序的字节00 00 00 00。如果按 x86 32 位解释它是add byte [eax], al如果按 MIPS 大端解释它是nop如果按 MIPS 小端解释它又变成sll zero, zero, 0。同一个字节序列在不同架构下含义完全不同。这就是为什么反汇编工具必须支持多种架构并且允许用户手动指定架构参数。1.2 rasm2 在同类工具里的定位提到反汇编很多人第一个想到的是 objdump、IDA、Ghidra或者 radare2 里的pd命令。这些工具当然都能做机器码转汇编但它们大多数是“重武器”objdump 需要完整的 ELF/PE 文件格式支持IDA 和 Ghidra 需要图形界面和工程管理radare2 的交互式命令行虽然强大但启动成本也比较高。rasm2 是 radare2 项目里一个独立的极简命令行工具它只做一件事的两面汇编和反汇编。你可以直接在终端里输入一条指令也可以用管道喂给它一串十六进制字节它吐出一行汇编文本然后退出。没有多余的交互没有复杂的配置非常适合写进脚本和自动化流程。它的核心价值在于“可组合”。我在实际分析中经常需要从日志、抓包或者固件偏移量里截取一小段字节然后立刻判断它是什么指令。这种场景下开一个完整的逆向工具反而很笨重用rasm2 -d一条命令搞定效率高得多。而且要解析数百条机器码时rasm2 可以配合 shell 循环、Python 脚本批量处理这是很多重型工具做不到的。2. 装上就能用rasm2 的获取与最简入门2.1 三种安装方式对比rasm2 通常随 radare2 一起安装也可以尝试单独构建。在 Linux 系统上最常见的是通过包管理器直接装。Debian/Ubuntu 系执行apt install radare2Fedora 系执行dnf install radare2macOS 上可以用 Homebrew 执行brew install radare2。如果只是想快速体验直接安装整个 radare2 是最省事的因为它还附带其他有用的工具。如果系统里已经有 radare2但找不到rasm2命令那可能是路径问题。某些发行版会把 rasm2 装到/usr/bin/rasm2有些则在/usr/lib/radare2/下可以通过find / -name rasm2 2/dev/null定位。还有种情况是只安装了某个精简版工具包需要单独安装 radare2 的完整版本。方式优点缺点适用场景包管理器安装简单快速依赖自动处理版本可能偏旧日常试用、学习从源码编译版本最新可自定义插件需要编译依赖需要新指令集支持直接下载预编译 release与本机环境可能不完全匹配兼容性需要验证临时环境、快速测试我个人建议如果只是做常规的 x86/ARM 反汇编用系统包管理器安装就完全够用。但如果你要折腾 MIPS、RISC-V、SH-4 这些相对小众的架构或者想要体验最新的反汇编改进最好从源码编译一份。radare2 的官方仓库提供了sys/install.sh执行后会安装到/usr/local下注意覆盖系统自带的旧版本时需要确认路径优先级。2.2 确认版本和能力边界安装完成后先执行rasm2 -v确认版本。版本信息里会显示构建时间和支持的架构列表。想看当前支持哪些架构可以执行rasm2 -L输出会列出x86,arm,mips,riscv等各个插件名以及对应的位数。这一步非常关键因为不同版本支持的架构差异很大你可能会发现某次更新前的版本不支持 RISC-V或者某次更新后调整了 ARM 指令的助记符格式。另一个容易忽略的参数是-h它会打印完整的命令行帮助。不过帮助信息比较简略很多参数需要配合文档或实际测试来理解。我通常会用一组简单字节做“冒烟测试”echo c3 | rasm2 -a x86 -b 64 -d输出应当是ret。如果能正常输出说明基本反汇编链路没问题。这个测试可以在任何新装好 rasm2 的环境里快速验证工具可用性。3. 最常用的三种反汇编姿势3.1 直接怼一串十六进制字节rasm2 最简单也最常用的反汇编用法是直接在命令行里给字节。下面这个例子把 x86-64 架构下的ret指令机器码c3反汇编rasm2 -a x86 -b 64 -d c3输出是ret。这里的-d是反汇编模式-a x86指定架构-b 64指定位数。如果不指定架构和位数rasm2 会使用默认的 x86 32 位模式这常常导致 64 位代码被反汇编得乱七八糟。所以即使只是转换一条指令也建议显式写出-a和-b避免默认值带来的意外。多条指令可以连在一起。比如机器码b8 01 00 00 00 c3在 x86-32 下对应mov eax, 1和retrasm2 -a x86 -b 32 -d b8 01 00 00 00 c3输出两行mov eax, 1 ret这里要注意字节串里各字节之间用空格分隔。有时候从文件里复制出来的字节串不带空格比如b801000000c3rasm2 直接这样输入也能识别但我习惯先用xxd -p或 Python 处理成带空格的格式以便保持清晰。3.2 指定架构、位数与字节序不同的处理器架构在 rasm2 里的命名和参数也有区别。x86 通常写作x86ARM 写作armMIPS 写作mipsRISC-V 写作riscv。位数参数-b可以写16、32、64但要注意不是所有架构都支持所有位数。比如 MIPS 大多只有 32 位和 64 位两种模式你指定 16 位会直接报错。字节序用-e参数指定。-e little表示小端-e big表示大端。x86 和大部分 ARM 默认是小端MIPS 和 PowerPC 则常常使用大端。下面这条命令把大端 MIPS 的nop机器码00000000反汇编rasm2 -a mips -b 32 -e big -d 00000000输出nop。如果忘了指定-e big默认可能按小端处理结果是sll zero, zero, 0虽然逻辑上等价但对照参考手册时容易让你产生困惑。3.3 从文件或管道批量转换实际分析中字节往往来自一个文件而非键盘输入。rasm2 支持从标准输入读取数据也支持-f参数读取文件。举个例子把一串字节写入临时文件bytes.bin然后执行cat bytes.bin | rasm2 -a x86 -b 32 -d或直接rasm2 -a x86 -b 32 -d -f bytes.bin两种方式效果类似。但这里有一个非常重要的区别rasm2 通常默认把输入当作二进制数据按原始字节解析而不是文本。如果你在管道里传递的是文本形式的十六进制字符串比如echo c3它会被识别为十六进制文本然后解析如果你直接传二进制文件它按字节流处理。理解这一点可以避免很多“为什么结果不对”的疑惑。批量转换几百条指令时我一般会在 Python 里循环调用 rasm2或者先生成一个带换行的十六进制字符串再通过管道交给 rasm2。rasm2 每遇到一个换行或一段输入会尝试反汇编成一条或多条指令输出以换行分隔。因为 radare2 生态里隐藏着一些针对管道输入的特殊优化建议在写脚本前用少量数据测试输出格式。4. 多架构实战从 x86 到 ARM、MIPS 的机器码拆解4.1 x86/x64 经典指令的字节意图x86 指令长度不固定最短一字节最长可以到 15 字节以上。这种可变长度特性让“从机器码到汇编”的转换比固定长度架构更有讲究。比如mov eax, 1的机器码是b8 01 00 00 00其中b8是mov的操作码后面四个字节是小端方式存放的立即数1。你看到01 00 00 00的时候要理解它实际上是数值 1而不是四个独立的字节。再比如8d 3c 03这是一个常见的 LEA 指令lea edi, [ebxeax]。8d是 LEA 操作码3c是 ModR/M 字节03是 SIB 字节表示基址寄存器 ebx 和索引寄存器 eax 的组合。如果不懂这种编码规则你会觉得这三个字节跟最终指令之间毫无关联。rasm2 的价值就是帮你跳过编码细节直接给出结果。对于 x86-64指令前缀有所不同。比如48 89 e5对应mov rbp, rsp48是 REX.W 前缀代表 64 位操作数。rasm2 会自动识别并处理这些前缀不需要你手工拆解。但在查看输出时如果你看到mov ebp, esp而不是mov rbp, rsp很可能是指定位数错误比如用 32 位模式去解 64 位代码。4.2 ARM 与 Thumb 模式的切换ARM 架构有两种主流执行状态ARM 模式和 Thumb 模式。ARM 模式指令固定 32 位Thumb 模式则混有 16 位和 32 位指令。同样的中间字节在不同模式下可能对应完全不同的汇编。rasm2 通过参数来区分通常-a arm -b 32默认按 ARM 模式解要解 Thumb 代码就需要专门指定。在 radare2 系列的 rasm2 中Thumb 模式一般用-a arm -b 16或者通过汇编架构中的thumb子选项。实际测试一个例子机器码00 00在 ARM 模式下通常被当作半个指令导致解析异常在 Thumb 模式下则可能是movs r0, r0。所以当你的固件是 Cortex-M 系列时务必使用 16 位 Thumb 模式。ARM 的立即数编码和条件码也比较容易让人迷惑。例如e3a00001在 ARM 模式小端下是mov r0, #1。这里的e3a00001包含了条件码ealways、指令助记符mov、目标寄存器 r0 以及立即数 1。rasm2 能帮你把机器码翻译成标准的汇编文本但如果你需要理解每条指令背后的编码含义还是建议配合参考手册。反汇编只是第一步真正理解程序逻辑还需要结合上下文。4.3 MIPS 和 RISC-V 的字节序问题MIPS 架构最经典的坑就是字节序。路由器固件、嵌入式设备里的 MIPS 程序既有大端也有小端而且不同版本工具链生成的代码可能混合出现。最典型的例子是24040001这条机器码代表addiu a0, zero, 1。如果你的 rasm2 用默认小端去反汇编看到的结果可能完全不同甚至出现合法但没意义的指令。因此拿到 MIPS 固件第一步就要确定字节序通常可以从 ELF 头或者固件加载地址判断。MIPS 指令固定 32 位所以反汇编结果整齐每四个字节对应一条指令。比如下面这段rasm2 -a mips -b 32 -e big -d 3c0c1000 258c0000 01802821得到的三条指令会有lui t0, 0x1000、addiu t0, t0, 0、move a1, t0之类的输出。直观上能看出这是在构造一个地址。如果你在做路由器固件的漏洞分析这种模式非常常见。RISC-V 是相对较新的架构rasm2 对它的支持也在逐步完善。基本的反汇编用法如下rasm2 -a riscv -b 32 -d 13 01 01 00这里的13 01 01 00对应addi sp, sp, 0也就是栈指针自增通常出现在函数序言里。RISC-V 也有字节序问题但多数应用是小端遇到大端 RISC-V 的情况比较罕见。如果你在解析某款自研芯片的固件时遇到 RISC-V建议先确认编译工具链的默认字节序再交给 rasm2。5. 进阶玩法把 rasm2 接进自己的脚本和逆向流程5.1 用管道和 bash 实现批量重命名有时候你手头有一个目标地址列表每个地址对应一段机器码需要批量反汇编输出到文件。可以写一个简单的 bash 循环for hex in c3 90 55 89 e5; do echo -n $hex - echo $hex | rasm2 -a x86 -b 32 -d done输出类似c3 - ret 90 - nop 55 - push ebp 89 e5 - mov ebp, esp这个循环每次调用一次 rasm2性能可能不是最优但胜在直观。如果想提升批量效率可以把所有十六进制字节按空格连接成一个长字符串一次性交给 rasm2 反汇编让它自动切分指令。但要注意rasm2 对一段连续字节流会尝试按当前架构指令长度解析如果中间混有数据段可能会解析出错。这种情况下按指令边界拆分后逐条处理更稳妥。5.2 用 Python 子进程包装一个反汇编服务在写更复杂的分析工具时subprocess 调用 rasm2 是最灵活的方式。下面是我常用的一个函数接受字节列表返回反汇编文本列表import subprocess def disasm_bytes(data, archx86, bits32, endianlittle): hex_string .join(f{b:02x} for b in data) cmd [rasm2, -a, arch, -b, str(bits), -e, endian, -d, hex_string] proc subprocess.run(cmd, capture_outputTrue, textTrue) if proc.returncode ! 0: raise RuntimeError(frasm2 error: {proc.stderr}) return proc.stdout.strip().split(\n) print(disasm_bytes([0xb8, 0x01, 0x00, 0x00, 0x00]))输出会得到[mov eax, 1]。这个函数可以塞进更大的固件解析脚本比如遍历整个代码段按函数边界拆分再把每个函数内部的机器码反汇编成可读文本。性能方面频繁创建子进程会有一些开销但实际测试发现在几千条指令的规模下完全可接受。如果你有几十万条指令需要反汇编则建议改用 radare2 的 Python 绑定或者r2pipe库来批量处理这样能复用引擎速度更快。5.3 和 radare2 一起使用的典型场景rasm2 是 radare2 生态的一部分两者经常配合使用。一个常见场景是你正在 radare2 里分析一个固件看到一个地址处的机器码比较特殊想单独确认它的编码可以直接在 radare2 的 shell 里用rasm2的命令替代而不必退出。radare2 本身提供了rasm2的等价命令比如r2 -q -c pd 1 0x1000 analysis能反汇编当前地址的指令但如果你只想对一小段字节做实验直接调用外部rasm2反而更轻便。另一个典型场景是汇编器与反汇编器的往返校验。当你修改了一个字节想要重新生成指令时可以用 rasm2 先汇编再反汇编检查结果是否符合预期。比如验证nop的机器码是否为90可以执行echo nop | rasm2 -a x86 -b 32输出90。这种“汇编-反汇编”往返测试在写 shellcode 生成器或者代码插桩工具时很有用。虽然 rasm2 不是完整的编译工具链但处理单条或少量指令时足够可靠。6. 我踩过的坑常见问题与排查技巧实录6.1 看不到预期指令先查字节序曾经我在解析一份 MIPS 固件的日志时拿到一段字节0c 00 00 00用默认参数反汇编输出一个陌生的伪指令。查了资料才发现固件是大端的正确解析应为jal 0。加上-e big之后结果就对了。这个问题非常普遍尤其是处理路由器、交换机固件时MIPS、PowerPC 这两种架构的大端版本经常出现。我的经验是先看文件头ELF 头里的e_ident[EI_DATA]字段如果是 1 表示小端2 表示大端。如果固件是原始二进制没有 ELF 头那就看加载地址和工具链信息。实在无法判断时可以找几个常见指令的字节去试探比如 MIPS 的nop在小端是00 00 00 00大端也是00 00 00 00不好区分但jr ra返回指令的编码03e00008在小端模式下会变成08 00 e0 03这就能明显看出字节序。6.2 指令长度不对检查 mode 和 Thumb有一次处理某 ARM 嵌入式设备的固件反汇编出来的指令总是每隔几条就“断裂”或出现奇怪的操作数。后来发现固件入口地址处于 Thumb 模式而我用了默认的 ARM 模式解析。Thumb 模式下指令长度可以是 16 位解析器在处理连续字节流时需要知道正确的模式边界。rasm2 对于 Thumb 的支持并没有在命令行里直接给一个-m thumb的开关而是通过架构名或位数区分。我在实际中的做法是用-a arm -b 16试试在 Cortex-M 类设备固件上是否能得到合理的指令序列。如果结果里出现大量undefined那可能就是模式混用需要根据指令地址对齐来判断。更稳妥的办法是结合反汇编时的地址偏移先用 radare2 分析固件符号和入口点再批量提取机器码交给 rasm2。6.3 工具输出格式不友好时的处理rasm2 默认输出格式比较简单指令和操作数之间用一个空格分隔没有地址、没有字节注释。这可能会让批量分析的结果不够直观。我通常会在脚本里自己补充上下文信息比如记录每条指令的偏移量然后格式化为表格偏移机器码反汇编0x000055push ebp0x000189 e5mov ebp, esp0x000383 ec 10sub esp, 0x10这种输出对于后续人工审计比较友好。如果你需要更接近 objdump 风格的结果可以将 rasm2 的输出在脚本里再做一步格式化。不过我很少这样做因为 rasm2 的优势本来就是轻量额外包装以符合自己的需求才是正确姿势。另一个比较常见的坑是rasm2 反汇编出来的操作数格式在不同版本之间可能有细微差异比如符号是[eax]还是[eax]立即数是1还是0x1。我的经验是不要让脚本依赖具体的文本格式而是通过正则或者特定分隔符提取助记符和操作数这样即使 rasm2 更新也能保持兼容。在实际项目里我遇到最多的问题其实不是指令识别而是输入数据的洁癖。有些十六进制字符串是从日志里复制出来的自带0x前缀、逗号、或者多余换行。直接喂给 rasm2 会解析失败。我的办法是写一个预处理函数把非字节字符全部过滤掉import re def clean_hex_string(s): return re.sub(r[^0-9a-fA-F], , s)然后再按字节两两分组得到标准的空格分隔格式。这样处理之后数据在进入 rasm2 之前就是干净的字节流避免了很多低级错误。最后分享一个小技巧如果在分析一个未知架构的固件不确定应该用哪种-a参数可以先拿文件开头的一段字节分别用常见架构跑一遍观察哪种架构下反汇编结果里助记符种类最多、undefined 最少。这个方法虽然不严谨但往往能快速定位架构。我靠这个办法不止一次在一些没文档的 IoT 设备上找到了突破口。rasm2 的轻量特性让你可以几秒钟切换一次架构这种快速试错正是它最值钱的地方。

相关新闻

测试语义锚定:让AI在自动化测试中稳定落地的工程化方法

测试语义锚定:让AI在自动化测试中稳定落地的工程化方法

1. 为什么“接入AI”不是加个API调用就完事?“想让你的自动化测试接入AI,这一步必须要有。”——这句话在最近三个月里,我至少在五个不同行业的技术分享会上听到过。有某高校实验室的测试平台重构项目,有某电商公司App回归测试提效…

2026/10/18 15:18:00 阅读更多 →
AI生成2D游戏攻击动画序列帧:Stable Diffusion+LoRA+ControlNet完整工作流

AI生成2D游戏攻击动画序列帧:Stable Diffusion+LoRA+ControlNet完整工作流

很多游戏团队在补角色攻击动画素材时都会遇到同一个痛点:动画序列帧的制作成本极高,外包一套 8 到 12 帧的轻击动作可能就要好几天;如果尝试用 AI 绘画直接生成多帧动作,又很容易出现角色脸型飘忽、服装细节漂移、动作节奏断档、逐…

2026/10/18 15:18:00 阅读更多 →
C++ EasyX仿制超级马里奥:从游戏循环到碰撞检测的完整实战

C++ EasyX仿制超级马里奥:从游戏循环到碰撞检测的完整实战

简介:基于C与EasyX图形库还原超级马里奥玩法的项目源码包,面向具备基础C语法、希望进阶图形界面与游戏循环开发的初学者。资源已完整实现1-1、1-2、1-3三个关卡,涵盖移动、跳跃、加速、发射火球、下蹲钻管道等核心操作,操作采用A/…

2026/10/18 15:18:00 阅读更多 →

最新新闻

Python金融风控建模实战:从WOE编码到评分卡落地

Python金融风控建模实战:从WOE编码到评分卡落地

简介:面向金融风控建模学习者,这份源码包聚焦大数据风控全流程,适合有志于信用评分、欺诈检测与风险预测的数据分析师或建模工程师。资源共一百零六个文件,包含四十个脚本、十九个模型、十六个样本数据、二十个可视化图表及三个示…

2026/10/18 16:16:27 阅读更多 →
HTML5调用手机摄像头拍照上传:兼容微信iOS/安卓的轻量方案

HTML5调用手机摄像头拍照上传:兼容微信iOS/安卓的轻量方案

简介:本资源是一套面向Web前端开发者与移动端H5项目实践者的完整拍照上传解决方案,聚焦HTML5在手机浏览器中调用摄像头、预览图片并上传至PHP后台的核心功能实现。资源包共22个文件,包含1个主入口HTML页面、1个核心JS脚本、1个PHP服务端接收脚…

2026/10/18 16:16:27 阅读更多 →
C#自托管WebApi:.NET Framework下不依赖IIS的HTTP服务实现

C#自托管WebApi:.NET Framework下不依赖IIS的HTTP服务实现

简介:这是一份面向C#中高级开发者与.NET桌面应用架构师的自托管WebApi实践项目,解决传统IIS部署依赖强、服务嵌入难、中小规模内部通信启动重等痛点。项目基于OWIN标准实现完全脱离IIS的轻量级HTTP服务宿主,内置FileController与Authorizatio…

2026/10/18 16:16:27 阅读更多 →
DevExpress VCL 18.1.6源码包安装编译与Delphi迁移实践指南

DevExpress VCL 18.1.6源码包安装编译与Delphi迁移实践指南

简介:DevExpress VCL 18.1.6 完整源码包,配套 DxAutoInstaller 自动安装器,面向使用 Delphi 7 至 Delphi 10.3 Rio 的桌面应用开发者。资源解决了在较新 IDE 中手动安装第三方组件库耗时易错的问题,尤其适合需要阅读底层实现、二次…

2026/10/18 16:16:27 阅读更多 →
Java桌面程序中SWT与JavaFX WebView嵌入ECharts的实战整合方案

Java桌面程序中SWT与JavaFX WebView嵌入ECharts的实战整合方案

简介:本资源是一套面向Java桌面应用开发者的SWT与JavaFX混合GUI工程实践案例,聚焦于在原生级界面中嵌入高性能网页渲染能力,解决Java传统桌面程序调用ECharts动态图表、实现Web数据可视化及大文件分片上传的集成难题。项目完整实现了SWT主窗口…

2026/10/18 16:16:27 阅读更多 →
从 APK/PCK 恢复完整 Godot 项目:gdsdecomp 上手与实战指南

从 APK/PCK 恢复完整 Godot 项目:gdsdecomp 上手与实战指南

从 APK/PCK 恢复完整 Godot 项目:gdsdecomp 上手与实战指南 【免费下载链接】gdsdecomp Godot reverse engineering tools 项目地址: https://gitcode.com/GitHub_Trending/gd/gdsdecomp gdsdecomp(Godot RE Tools)是一个面向 Godot 引…

2026/10/18 16:15:27 阅读更多 →

日新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/18 0:00:55 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/18 0:00:55 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

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

2026/10/18 0:55:02 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

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

2026/10/17 17:22:31 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

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

2026/10/18 12:16:16 阅读更多 →