AI 自动化逆向(二十二)换行比峰值法:让 AI 自己发现图像的宽度

AI 自动化逆向(二十二)换行比峰值法:让 AI 自己发现图像的宽度

本文是「AI 自动化逆向」系列第 22 篇。上一篇:同义反复的度量:AI 最容易糊弄你的地方;下一篇预告:magic 家族图谱:让 AI 定位「读取器在哪个模块里」。

前言

审核协议那条线讲完了,回到格式战场。这一篇讲一个很漂亮的方法------当"宽度"这种元信息缺失时,不猜它,让数据自己说出来。

场景:一种瓦片图集文件,头里能读出"有几块瓦片",但每块像素没有尺寸字段;像素数据就是一片连续字节。它是 128 宽?256 宽?还是干脆是一张竖着排的长条?

(同前几篇:文中"AI"指执行分析的模型,"我"指设定目标、审结果的人;内容均已脱敏。)

一、AI 在这里踩的坑:先定布局,再看数据

第一版解读是错的,而且错法很典型:它先把"布局"猜死了------"这些瓦片大概是竖着排的一张长条纹理"------然后让数据去将就这个布局。渲染出来自然是花屏。

这个坑的位置值得记住:"猜布局"这条路的验收标准,永远只是"看起来闭合了" 。比如那条整除关系------"文件大小减去头,正好等于块数乘以某个固定块大小"------它在全部一百多个文件上零误差 。零误差!但它只是必要不充分 :任何整齐的字节流都能找到某种整除方式。整除通过,什么都不能保证。

人应该加的检查 :闭合类证据(整除、恒等式)只能证明"没算错",不能证明"解释对了"。"能闭合"和"解释对了"之间,还隔着一整个假设。

二、过程:换行比峰值法

方法本体

回到那个问题:像素是一片线性字节,宽度未知。但数据自己知道答案------

如果它是宽度 W 的二维图,那么线性序列每 W 个像素,就该出现一次"换行";而换行处的相邻像素突变,应该明显大于行内部。

于是可以定义一个换行比:边界处的像素差 ÷ 行内部的平均像素差。然后对候选宽度做精细扫描,看这个比值怎么变:

候选宽度 ... 126 127 128 129 130
换行比 ... 1.110 1.054 25.5 1.019 1.185

峰值尖锐、精确落在 128,邻居全部塌回 1.0 附近。 宽度 = 128 像素。(块大小又恰好等于 128×128×4 字节------一个正方形瓦片。)

这个方法好看在哪:它没有动用任何外部知识------没有猜、没有查表、没有翻代码;只是问了一句"哪个候选宽度会让数据最像一张图",数据自己指了 128。

而且它自带了可信度判据:

  • 峰值尖锐、邻居塌回 ≈1.0 → 可信;
  • 如果扫出来是一片没有主峰的山丘 (好几处都差不多高),别选"最高的那个"------那是模型不对的信号,不是分辨率不够(第 7 篇那把尺子,在这里量的是宽度)。

四重验证:谁强谁弱,分清楚

这个方法最后和另外三条证据并排放进结论,但强度是分级的:

证据 强度 一句话
整除性(大小 = 块数 × 固定块大小) 弱(辅证) 必要不充分------它只排除"算错",不证明"解释对"
换行比峰值 强(决定性) 峰值尖锐、孤独,且精确落在候选上
行平滑度 强 用对宽度:相邻行差在个位到十位;用错宽度:行被切碎,差值直接跳一个量级
块边界突变 强(语义) 块与块之间的跳变远大于块内行差 → 每块是独立瓦片,不是连续条带;且每块的透明通道从 0 重新爬升------块是自包含的

弱证据当辅证,强证据各自独立------四条不是"凑数",是四种不同的物理直觉。

顺带:通道顺序也用"必然性"裁决

颜色通道的顺序不靠猜。挑颜色必然性的样本反问:"岩浆必须偏红、海水必须偏蓝、沙滩偏暖"------把每种候选顺序代进去,算实际字节:

  • 岩浆样本:若按错误顺序读,它变成蓝色------荒谬;
  • 沙滩样本:若按错误顺序读,它变成电光蓝------荒谬。

10 个样本里 9 个方向一致(那个"例外"后来还被翻案------见下),扩到 50 个样本后依然全票。判据的力量来自"荒谬" :错误的解读不是"差一点",是语义上当众崩坏。

事后复核:三条不同的路

后来邻近格式出过一次"判错像素布局"的事故(第 16 篇),这一批的产物被用三条与原文不同的路径 重新验了一遍------避免自证循环:

  1. 几何闭合:全部文件重算不等式,零例外;
  2. 语义颜色裁决扩样到 50 个:全部指向同一通道顺序;
  3. 肉眼:渲染出来是干裂土地、带发光脉络的熔岩,且瓦片间呈典型的渐变透明布局------"地形混合图集应有的样子"。

复核还抓了两件"原文没做对"的事:

  • 那个曾经被记为"唯一例外"的样本不是例外 :之前的统计把大片透明区一起平均了;只看不透明像素,它正是第 N 个支持原判的样本------统计口径的透明区,能把支持者算成例外。
  • 发现头的长度是变长的 、推不出来;渲染器目前靠"文件大小减去块数乘块大小"反推 它------这个反推隐含假设了块大小一定是那个值 。于是加了一条纪律:反推出来的量要标注它依赖的前提,并用前加断言;不满足就跳过并记录,别静默出图。

三、判据与验证:四条

1. 元信息缺失时,让数据自己说。 找"本该出现的不连续性"(这里:每 W 像素一次的换行),对它做扫描------比"猜一个合理值再验证"强一个量级。

2. 峰值要"尖锐且孤独"。 有主峰、邻居塌回基准,才可信;没有主峰,先怀疑模型。

3. 多重验证要分级。 弱证据(整除、闭合)只做辅证;强证据(峰值、平滑度、块边界)各自独立成立------四条同向,才下结论。

4. 反推量标注前提、用前断言。 "反推来的"和"读出来的"是两种可信度;把隐含假设显式写出来,再加一道会拒绝的断言。

四、结论

这个方法最可迁移的一点:当元信息缺失时,好的判据不是"更聪明的猜测",是让数据中"本该出现的不连续性"自己站出来。

换行比测的其实不是图像------测的是"你的模型和数据对齐的程度":模型对了,不连续性自己排成一条尖锐的竖线;模型错了,它散成一片谁也说不清的丘陵。

五、边界声明

  • 本文只讨论AI 自动化逆向中的判据设计与审核方法,不涉及任何具体产品、厂商或服务的分析结论。
  • 文中所有地址、偏移、常量、字段名一律为占位符或示意值 ,
    不代表任何真实目标中的取值;示例代码为说明判据而编写,不构成可运行的针对特定目标的工具。
  • 文中提到的比例与数字均来自作者项目内的测量记录,仅用于说明方法失效的方式。
  • 请勿将本文内容用于未授权的用途。

六、收尾

下一篇换一个问题,也是格式逆向里最实用的一问:"这东西是被谁读的?"------不猜、不跟,扫遍所有模块的字节,让"家族图谱"自己指认读取器。

下一篇计划聊:magic 家族图谱:让 AI 定位「读取器在哪个模块里」。


转载请注明出处:

https://lizhiyong.blog.csdn.net/article/details/169169300

相关推荐
AI小百科1 小时前
Embedding 是什么?为什么它是 AI 的“翻译官“
人工智能·embedding
进击的横打1 小时前
【人工智能】AI 落地:先理流程,再做 Agent
人工智能
qingyunliushuiyu1 小时前
企业选数据BI AI服务商时,需关注哪些核心能力?
人工智能·经验分享
2601_970703831 小时前
中国除湿机与湿度控制行业研究报告
java·大数据·人工智能
天天代码码天天1 小时前
把自己的字,变成电脑里的字体:我做了一个「手写字体工坊」
人工智能
小海测评1 小时前
Schema 结构化标记:GEO 优化容易漏掉的技术抓手
人工智能·geo·企业获客
武天旭1 小时前
AI安全--AI大模型的虚假信息识别与多模态过滤
人工智能·安全
iiiiii111 小时前
大模型批量生成中的左填充 (left padding)与右填充 (right padding):从生成正确性到 GRPO 的混合策略
人工智能·机器学习·语言模型·大模型·llm·attention·注意力
YH_Analytics1 小时前
2026-2032 年中央鸡蛋输送机市场规模与增长预测
网络·人工智能