x64dbg字符串搜索:逆向调试中的精准定位与实战技巧
做逆向调试拿到一个陌生程序很多人的第一反应是跟API、翻反汇编绕来绕去半小时找不到北。我的习惯恰恰相反——先搜字符串。字符串是程序跟用户“说话”的痕迹也是开发者留在代码里的路标。x64dbg里的字符串搜索功能配合字符串引用查找能让你在几分钟内从一团乱麻的反汇编指令里精准锁定关键逻辑区块。这篇文章就以x64dbg为工具把字符串搜索这个基本功拆开揉碎讲清楚从界面操作到实战定位再到各种搜不到、搜不全的疑难杂症一次说透。不管你是刚摸到调试器的新手还是已经在逆向路上踩过不少坑的老手这篇内容应该都能给你一些可复用的经验。1. 为什么字符串搜索是逆向第一课1.1 字符串是程序留下的“对话记录”程序运行起来界面上的按钮文字、弹窗提示、日志输出、配置项内容本质上都是内存里的一段字符串数据。无论是“登录成功”“密码错误”“注册码无效”还是“你已经连接到某服务器”这些人类可读的文本都是逆向分析时最天然的切入点。因为在编写程序时开发者必须让程序输出这些提示才能跟用户交互。这跟做阅读理解一样作者想藏起关键信息但总会在字里行间留下痕迹。字符串就是那个痕迹。尤其在做算法还原、协议分析、破解验证逻辑的时候定位到关键字符串所在的地址顺着交叉引用往回追基本就能找到处理这些文本的函数。相比从程序入口一路单步跟踪走到目标位置搜索字符串的效率高出一个数量级。我在分析某个模拟项目X的注册验证模块时所有验证逻辑都藏在很深的条件分支里但界面上一句“许可验证失败”就把整个判断流程的位置暴露了。从那句提示字符串的引用出发往上追三个调用层级就找到了比较函数。1.2 为什么不直接用反编译工具也许有人会问现在反编译工具那么多直接看伪代码不就行了确实面对一个没有保护、没有混淆的简单程序用反编译工具的“字符串交叉引用”功能也能快速定位。但x64dbg这类动态调试器有它不可替代的优势你看到的是程序运行到某一瞬间的真实内存状态。程序可能动态解密字符串、可能在运行时拼接提示文本反编译工具只能看到静态数据而调试器能看到解密之后、拼接完成的那一刻。更实际的一点是x64dbg的字符串搜索和引用查找之间切换极快几乎不需要等待。我这里指的不仅是搜索那一瞬间而是从“搜到一个字符串”到“在反汇编窗口定位到引用它的指令”再到“下断点观察数据流”整个链路非常顺手。反编译工具做静态分析时遇到动态解密、自修改代码就抓瞎而在调试器里这些都能现场解决。我在分析一款带动态解密壳的工具时反编译工具里全是乱码但程序运行到解密例程执行完毕后x64dbg里重新搜索字符串明文内容一目了然。1.3 什么时候该用什么时候别死磕字符串搜索不是万能的。遇到以下几类情况搜字符串大概率会撞墙字符串被加密存储程序运行时才解密。程序使用哈希、Base64、十六进制字节串来存储关键鉴别信息根本没有明文。开发者故意把字符串拆成几段在运行时拼接单搜其中一段可能搜不到。程序加了壳入口点还没解压字符串数据仍然处于压缩状态。遇到这些情况我的建议是先判断程序是否有壳、是否在入口处解密先运行到OEP原始入口点附近再搜索或者换个思路从API调用入手去断点拦截。别在搜索框里反复折腾浪费时间。字符串搜索是引导路径的指南针不是万能钥匙这一点先明确。2. 手把手从加载到首次搜索的操作链路2.1 界面布局速览x64dbg是开源的调试器界面默认布局分几个大区域左上角是反汇编窗口右上角是寄存器窗口下方左侧是内存窗口转储视图下方右侧是堆栈窗口。打开一个程序后程序会停在系统断点或入口断点。新手往往一看满屏汇编就懵但别慌字符串搜索功能把复杂度挡在了外面。你只需要知道搜索是在“CPU窗口”的上下文里进行的找到结果后主要跟反汇编窗口、转储窗口打交道。如果你打开x64dbg还没载入程序按File - Open选择目标程序或者直接用命令行参数加载。加载后默认会在系统断点处暂停此时程序模块尚未完全初始化很多字符串还不在内存里。如果你要搜索的是程序自带的静态字符串建议先运行到入口断点系统断点后按执行到入口或者直接在入口点下断再执行搜索。这个细节很多人忽略搜不到字符串有相当大一部分原因是搜索时程序还没跑起来字符串所在的内存页尚未被加载或解密。2.2 打开搜索对话框的两种方式在x64dbg里搜索字符串最常见的有两种方式在反汇编窗口中按CtrlF会弹出“文本搜索”对话框可以输入ASCII字符串或Unicode字符串。在反汇编窗口中按CtrlB弹出的是“二进制搜索”对话框可以搜索字节模式比如68 00 00 00 00这种。对大多数场景用CtrlF就够了。x64dbg的CtrlF搜索是直接在进程内存里找匹配的字节序列支持ASCII和Unicode两种编码。它的背后逻辑很简单把你要搜的字符串按指定编码转换成字节数组然后在当前进程的可读内存范围内做模式匹配。理解了这一点你就明白为什么搜索框里输入的文本不能包含通配符也明白为什么大小写、编码对不上就搜不到。2.3 搜索对话框各选项逐项解读按CtrlF后弹出的对话框里有几个关键选项很多人根本不看就点确定结果搜不到就以为自己操作不对。我实际用过一段时间之后把每个选项的用途总结如下选项作用说明与建议ASCII按单字节字符匹配适合英文、数字和常规符号Unicode按宽字符通常是UTF-16LE匹配适合包含中文、日文等多字节文本Leb128按可变长度编码匹配很少用与调试数据格式相关Case sensitive是否区分大小写默认不区分如果想精确匹配就勾上减少无关结果Use selection only只在选中区域搜索比如你只选中了某个模块的内存区域能显著提速实践经验是搜中文提示时优先用Unicode搜英文变量名或日志标记时用ASCII往往更快。很多程序把中文字符串以UTF-8存储但x64dbg的ASCII搜索其实是单字节搜索直接把UTF-8的中文字节序列当作ASCII匹配也能匹配到只不过显示出来是乱码。但这不影响你找到字符串所在的地址只能说明数据存储格式不同。搜索时如果命中很多结果先别急通常命中的是同一段字符串在不同内存位置的拷贝或者相关引用。2.4 从搜索结果到指令引用一旦搜索结果列表弹出你会看到所有命中的内存地址。这时候双击某一行会跳到内存转储窗口显示该地址附近的原始字节。但这还不够真正有用的是右键选择Follow in Disassembler在反汇编窗口中跟随或者更直接的在“引用”面板中查看哪些指令引用了这个字符串。x64dbg提供了两个层面的引用查找在搜索结果列表中右键 -Find References查找引用会列出所有引用了该字符串地址的指令。这些指令通常是push压栈传参、lea取地址或mov加载地址。在反汇编窗口右键 -Search for - String references会列出当前模块里所有被引用的字符串相当于一次性建好整个程序的字符串索引。实际操作时我更常用后一种。打开String references窗口后里面列出了每个字符串及其所在的指令地址双击直接跳到反汇编窗口的引用位置。这才是字符串搜索真正发力的地方你不只看到了字符串本身更看到了“谁在用它、怎么用它”。2.5 推荐的操作习惯从经验角度我建议所有字符串搜索的新手养成两个习惯第一优先搜最“有意义”的提示文本。比如错误提示、成功提示而不是搜一些通用感叹词。为什么因为这类提示往往只在特定逻辑分支中出现引用点更集中更容易定位到关键判断。搜“失败”和搜“浓度过高”的效果完全不同前者命中几百处后者可能就一两处。第二搜索之前先把程序运行到你要分析的场景附近。比如你要分析的是注册按钮的逻辑就先点击注册按钮、触发错误提示后再暂停或者直接把程序跑到入口后搜索。不过很多情况下静态字符串在程序加载后就已在内存中直接搜索也能命中。只有在动态解密或运行时拼接的场景下才必须运行到特定位置后再搜。这个判断标准很简单先搜一次没有命中就运行程序再搜一次穷则变。3. 实战模拟一次登录判定逻辑的定位全流程3.1 搭建模拟场景为了把上面的理论落到实际操作里我设计一个非常典型的模拟场景一个名为“某模拟工具X”的程序界面有注册码输入框点击“激活”按钮后如果注册码不对会弹出“许可验证失败请检查输入”的提示如果正确会弹出“激活成功所有功能已开启”。这个场景在逆向里太常见了——验证逻辑的判断结果会导向不同的提示字符串。我们的目标是定位“许可验证失败”这个字符串的引用然后找到比较注册码的函数最终理解验证算法。为了演示我假设目标程序没有加壳静态字符串直接可见。如果你实际遇到的情况是加壳的请参考本文第4章中关于加壳程序的排查手段。3.2 加载程序并跑起来在x64dbg中打开“某模拟工具X”程序会命中系统断点。此时不要直接搜索按F9运行一次程序会加载到系统断点再次按F9程序会运行到入口断点或者直接运行起来。为了搜索到静态字符串我需要程序模块被完整映射到内存中。通常做法是在反汇编窗口打开符号标签页找到目标模块名。在该模块的入口地址处下一个断点按F2。按F9运行程序会在模块入口处暂停。此时整个程序模块的节区包括.data、.rdata都已经加载到内存字符串应该都在了。如果程序有动态解密逻辑可能还需要继续运行到解密完成但我先按最简单的情况处理。3.3 搜索目标字符串按CtrlF弹出搜索对话框。因为提示文本包含中文我选择Unicode编码输入“许可验证失败请检查输入”不勾选区分大小写然后点击确定。搜索瞬间完成结果列表里出现了几个命中地址。这里我通常会先双击结果跳到内存转储窗口看看字符串确实存在并且观察它前后有没有其他有用的提示信息。往往关键词附近就是一组相邻的提示文本比如“激活成功”往往就排在同一段数据区域里一眼就能确认数据布局。3.4 查找引用并定位关键指令回到结果列表在命中地址上右键选择Find References。x64dbg会在引用分析插件里扫描该地址的引用指令几秒钟后列出类似下面这样的结果sub_1400010C0中有一条lea rdx, [地址]sub_140001230中有一条push 地址双击第一条引用反汇编窗口立即定位到那条指令。我看到类似这样的指令序列00000001400012B0 | 48 8D 15 ... | lea rdx, [许可验证失败...] 00000001400012B7 | 48 8D 4D C8 | lea rcx, [rbp-38] 00000001400012BB | E8 ... | call sub_1400012A0 00000001400012C0 | 85 C0 | test eax, eax 00000001400012C2 | 74 12 | je ...这几乎是一眼就能看明白的典型模式先压入失败提示字符串的地址再调用某个函数然后检查返回值决定是否跳转。注意看那个je相等则跳转指令它跳过的往往就是“激活成功”分支而跳过去之后会走进“许可验证失败”分支。也就是说上面那个call的返回值就是注册码校验结果。我在call指令处按F2下断点然后按F9运行在程序界面上随便输入一串字符点“激活”程序果然在断点处停住。3.5 分析校验函数断下之后我检查寄存器窗口的返回值。这里有个容易混淆的地方在C/C的x64调用约定里函数返回值一般通过rax传递但在进入函数之前rcx、rdx等是参数。当下断点命中在call指令上时我这个断点其实发生在函数执行之前所以不能直接看返回值。正确做法是往函数内部单步或者直接在函数内部的第一条指令和返回指令处分别下断。为了方便我直接在call sub_1400012A0这条指令上按一次F7单步进入进入函数内部。在函数内部观察了一会儿发现它接收的其中一个参数指向一个结构体结构体里保存了用户输入的注册码字符串。函数执行过程中进行了一些字符转换和长度校验最后调用了另一个比较例程。我在此例程返回后看到了一个关键比较从注册码字符串中逐字节计算出一个校验值与某个固定值做比较相等返回1不等返回0。这个比较例程里的关键操作就是题目里说的“核心逻辑”。此时如果需要绕过验证方法很多修改跳转条件、把固定校验值改成自己算出来的值、或者直接让比较函数总是返回1。这些不是本文的重点但足以说明字符串搜索在定位中的杠杆作用——没有那个提示字符串我可能要在几万条指令里逐个排查很久。3.6 验证修复结果假设我修改了跳转条件或者修改了比较函数的返回逻辑接下来要验证是否生效。操作流程是按F9继续运行程序界面弹出“激活成功”提示。为了确保修改是稳定的我通常还会重新启动程序确认断点处的新逻辑正确执行。这里有个小提醒如果修改的是跳转指令要注意jne和je的方向问题改错一个字节可能就从“永远成功”变成“永远失败”。整个过程从加载程序到定位核心比较函数只用了几分钟其中绝大部分时间花在搜索字符串和查看引用上真正理解验证逻辑的时间反而更多。这跟之前不用字符串搜索、从入口硬翻汇编的海量时间相比效率提升不可同日而语。4. 搜索不到、乱码、卡死排查清单来了4.1 搜不到目标字符串的常见原因字符串搜索看似简单实际操作中“搜不到”是最常碰到的问题。我把遇到过的情况整理成一张速查表按出现频率排序现象可能原因解决办法完全搜不到结果为空程序未运行到目标模块初始化完成先运行到入口断点或动态解密完成后搜索中文提示搜不到编码选错程序用UTF-8而非Unicode用ASCII模式搜索UTF-8字节序列或改用二进制搜索英文也搜不到搜索范围限定在某个模块或区域之外取消勾选“Use selection only”扩大搜索范围只能搜到部分内容字符串被拆成多段引用时拼接搜索子串、不同分段的关键词搜到但全无引用字符串地址被间接引用引用分析插件未覆盖直接在汇编中搜索该地址的立即数比如push 0x地址程序有壳字符串被压缩或加密壳在入口处解密数据当前内存尚无明文先运行到OEP或让壳自解密完成看到这张表你应该明白一个原则搜索不到的结果本身也是一种信息。它告诉你程序对字符串做了额外的处理比如加壳、加密、拆分。这比盲目跟踪汇编指令要靠谱得多。4.2 带壳程序怎么搜字符串遇到带壳程序尤其是加壳后字符串仍然被压缩的情况直接搜索往往浪费大量时间。我的方法是先判断壳类型。如果遇到未知壳就运行程序看它是否会暂停到系统断点。运行到OEP附近后再搜索。大多数壳在解压原始代码和数据之后会跳转到程序的原始入口。在到达OEP之后程序内存里的字符串已经还原。如果壳不解密字符串或者解密时机很晚就在程序启动后先执行几步等字符串出现在内存中然后再搜索。实在不行就采取“跟随API调用”的方案。很多验证逻辑会调用特定API来获取用户输入或输出提示这些API调用点反而是更稳定的定位锚点。有一次我分析一个加了某虚拟壳的程序字符串在入口前全是压缩数据入口后解压只要运行到入口搜索立刻就命中。关键是不要一上来就搜索先让程序跑起来。4.3 乱码和编码问题搜索出来的字符串显示成乱码也是家常便饭。原因很简单字符串的实际编码跟你选择的显示模式不一致。x64dbg的ASCII模式本质上是逐字节显示如果是UTF-8编码的中文某几个连续的字节会显示成类似“????”或乱码符号但对应的字节序列是真实存在的。这种情况下双击进入内存转储窗口可以看到对应的UTF-8字节流复制出来后用文本工具转码就能看到真实内容。如果你想在搜索结果里直接显示中文那就在搜索时选择Unicode并输入中文字符。大多数Windows程序的宽字符字符串是UTF-16LE中文会正常显示。另外有些程序会把字符串做成UTF-16BE字节序反转这种情况下Unicode搜索也搜不到需要在二进制搜索中输入反转后的字节序列。这类情况极少见但遇到了就要有排查意识。4.4 搜索卡顿和程序假死大型程序内存占用高搜索全部进程内存可能会卡顿几秒甚至更久。我在分析一个大型图像处理Demo时直接搜索整个内存结果卡了十几秒显得像程序死机了一样。其实搜索功能在后台运行耐心等待即可但更好的办法是先缩小范围。x64dbg支持在某个模块或某个节区范围内搜索操作方式是先在反汇编窗口的“符号”标签页里选中目标模块然后在搜索对话框里确保勾选“Use selection only”。这样搜索范围从全进程内存缩小到单个模块速度会快很多。如果你的目标字符串属于某个特定DLL模块这个技巧尤其重要。还有一种情况搜索的结果非常非常多比如搜一个短字母“a”或者在二进制数据里搜字节0x00结果可能成千上万。这时候不要试图在结果列表里翻找直接用右键菜单里的过滤和排序功能按地址排序或者直接跳转到你关心的模块基址附近去手动查找。4.5 命中很多但都是无关结果命中多个结果是因为程序在内存中有多份字符串拷贝或者匹配到了子串。比如搜索“edit”可能会命中“editor”“editing”等。这类情况可以通过几个策略过滤尽量使用完整、独特的字符串避免常用词。勾选“Case sensitive”排除大小写不一致的无关项。在搜索结果中只看属于目标模块地址范围内的命中过滤掉系统模块和无关加载模块。搜索时尽量包含标点符号或空格比如“密码错误”让模式更独特命中更少。我实际用下来最有效的方式是结合“字符串引用”窗口过滤。如果命中太多就先不去关注搜索结果列表而是直接在转储窗口里找到该字符串数据段观察它前后附近的数据。关键提示字符串往往和它的“成功”“失败”对应文本排在一起这能帮你快速锁定整块的字符串数据布局再通过引用窗口定位到具体指令。4.6 引用找不到怎么办字符串本身搜到了但右键查找引用时一个结果都没有这种情况也遇到过。原因一般是程序对该字符串的引用是间接的不是直接push字符串地址而是先取字符串地址存到寄存器再经过程序表IAT或函数表去访问。这种情况下我会直接在反汇编窗口使用“搜索”功能以字符串地址的十六进制数值为条件搜索它的立即数。操作是选中字符串地址右键点击“复制地址”然后按CtrlB把地址值作为二进制模式输入搜索所有引用。这个技巧常能挖出引用分析插件漏掉的引用点尤其是编译器做过常量折叠或地址表打包的时候。还有一点容易被忽略字符串地址可能在运行时被动态计算比如用lea加上偏移得到。这时候搜立即数可能也找不到。那就只能用内存断点或硬件断点的方式在字符串第一次被访问时断下来。方法是在字符串地址处设置硬件访问断点然后继续运行程序一旦读取该字符串就会触发断点从而直接定位到引用点。4.7 排查流程总结我把字符串搜索问题的排查思路简化成三步走确认程序状态。运行了吗入口解密完成了吗壳处理完了吗确认搜索参数。编码对不对大小写是否影响范围是不是局限在某个模块确认引用方式。直接引用间接引用数据表引用动态拼接这三步走下来绝大多数“搜不到、找不到引用”的问题都能解决。你可以把这个检查流程当作一个心法遇到问题不必慌乱一层层排查逆向的本质就是跟未知较劲而排查方法就是拆解未知。最后再分享一个小技巧字符串搜索这件事做久了你会发现它不仅仅是在找一段文本而是在给调试器“指方向”。平时我用x64dbg基本上把CtrlF搜索、Follow in Disassembler跟随到反汇编、Find References查找引用这三步操作练成了肌肉记忆。感觉自己上手最快的时期就是从熟练使用这三个快捷键开始的。如果只让我留一条建议我会说不要只盯搜索学会看“引用”。搜索只是告诉你字符串在哪引用才能告诉你逻辑在哪。真正花时间的不是搜索本身而是理解引用点周围的指令流和数据流。希望这篇文章能帮你少走我走过的弯路。遇到具体问题的时候多想想编译器和开发者在写这段代码时可能做了什么思路往往就开了。

相关新闻

栈实现综合计算器:双栈分工与优先级处理详解

栈实现综合计算器:双栈分工与优先级处理详解

栈这个结构,很多人学的时候觉得简单,不就是后进先出嘛,拿个数组或者链表模拟一下,push、pop 一写就完事了。但真到了要拿它解决一个稍微像样点的问题,比如做一个能算加减乘除、带括号、还能处理多位数的计算器&#xf…

2026/10/18 5:39:42 阅读更多 →
2026年硅基流动实测报告:开源模型性价比之选,闭源旗舰如何补位

2026年硅基流动实测报告:开源模型性价比之选,闭源旗舰如何补位

硅基流动(SiliconFlow)是国产 MaaS 第一梯队的代表选手,综合实力如何、适合什么人用,本文用一次完整实测给出答案。先看背景:公司 2023 年由前 OneFlow 创始人袁进辉创立,总部位于北京;定位第三…

2026/10/18 5:39:42 阅读更多 →
基于Spring Boot的私人云网盘实现:分片上传、断点续传与安全部署实战

基于Spring Boot的私人云网盘实现:分片上传、断点续传与安全部署实战

先交代下背景:我手头有一台不关机的小主机,平时要存的东西越来越多——手机照片、工作文档、影视资源,散落在电脑、移动硬盘和各个网盘里。公有网盘要么限速要么担心隐私,折腾一圈下来,还是决定自己搭一个私人云网盘。…

2026/10/18 5:39:42 阅读更多 →

最新新闻

Servlet+JSP+MySQL:手把手拆解经典Java Web新闻发布系统

Servlet+JSP+MySQL:手把手拆解经典Java Web新闻发布系统

简介:基于Java Servlet、JSP和MySQL的Web新闻发布系统源码,适合正在学习Java Web开发的初学者,以及需要课程设计或毕业设计参考的学生。项目采用MVC分层模式,实现了新闻的发布、编辑、删除和展示,还包含用户登录认证、…

2026/10/18 6:30:52 阅读更多 →
老系统重构实战:从数据库连接池打爆到模块化单体选型复盘

老系统重构实战:从数据库连接池打爆到模块化单体选型复盘

这期节目聊完,我在整理笔记的时候发现,Dirk和Linus两个人聊得最投入、最没有嘉宾包袱的一次,反而是这期讲"旧系统改造"的。原因很简单:他们俩都亲手拆过自己的烂摊子,也都被人用"别动,动了出…

2026/10/18 6:30:52 阅读更多 →
基于SAM的多阶段细化橄榄树遥感分割方案与实践

基于SAM的多阶段细化橄榄树遥感分割方案与实践

做农业遥感这几年,“橄榄树分割”这个需求我前前后后碰过好几回。刚开始觉得这事不难——树冠是圆的、叶子是常绿的,卫星图上看起来就是一片片绿色圆斑,做个阈值分割加形态学处理,应该分分钟搞定。真上了项目才发现,远…

2026/10/18 6:30:52 阅读更多 →
贪吃蛇不是玩具:JavaScript状态机驱动的游戏内核设计

贪吃蛇不是玩具:JavaScript状态机驱动的游戏内核设计

1. 这不是玩具代码,而是一次对前端基础能力的全面压力测试“使用 JavaScript 开发贪吃蛇游戏”——看到这个标题,很多人第一反应是:“老掉牙了,网上教程一抓一大把。”但如果你真去翻过那些所谓“5分钟上手”的教程,就…

2026/10/18 6:30:52 阅读更多 →
自动化测试框架选型:Selenium、Cypress与Playwright深度对比

自动化测试框架选型:Selenium、Cypress与Playwright深度对比

聊到自动化测试框架,圈子里每隔一阵就要吵一轮:Selenium这么老还这么稳,Cypress开发体验爽到飞起,Playwright又带着一堆黑科技来抢地盘,旁边还站着Puppeteer和Appium盯着移动端那块蛋糕。到底选谁?这个问题…

2026/10/18 6:30:52 阅读更多 →
力扣198打家劫舍补充(滚动数组)

力扣198打家劫舍补充(滚动数组)

补充力扣198打家劫舍(动态规划)-CSDN博客的滚动数组写法,只有小改动 原未使用滚动数组代码: class Solution {public int rob(int[] nums) {int length nums.length;if(nums null || length 0){ return 0; }if(length 1){re…

2026/10/18 6:29:52 阅读更多 →

日新闻

基于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/16 14:23:36 阅读更多 →