首页
社区
课程
招聘
[推荐]2116 指令集归纳推理引擎 (通用指令架构和反汇编引擎生成器)
发表于: 2天前 698

[推荐]2116 指令集归纳推理引擎 (通用指令架构和反汇编引擎生成器)

2天前
698

有人说:世上无龙,要屠龙术又有何用?
当未来龙出现时,人类不应该束手无策  ~

快速上手:563K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4N6%4N6#2)9J5k6h3q4K6L8e0j5@1i4K6u0W2j5$3!0E0i4K6u0r3x3U0p5I4y4W2)9J5k6h3S2@1L8h3H3`.
下载地址:acfK9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4N6%4N6#2)9J5k6h3q4K6L8e0j5@1i4K6u0W2j5$3!0E0i4K6u0r3y4K6R3^5y4p5c8G2N6$3&6Q4x3X3g2Z5N6r3#2D9

## 它是什么?

2116  指令集归纳推理引擎   (通用指令架构和反汇编引擎生成器),它做的事情和传统反汇编工具不一样。

传统工具需要你先告诉它 "这是 ARM 程序" 或 "这是 x86 程序",然后帮你分析程序逻辑。


2116 相反:你什么都不用告诉它,只给它一段完全未知芯片的二进制,它会用归纳推理的方法,从 0 开始搞清楚这个芯片的指令集是什么,然后生成一个专属的反汇编引擎。



## V0 架构 15 步:从零到一的魔法


2116 分析二进制程序的过程,就像一个侦探破案,总共 15 个步骤:


### 第 1 步:拆包加载

先把 ROM 包装拆开(比如 NES 游戏的 iNES 头),把几百个同架构的程序都读进来。


### 第 2 步:资源探测

看看里面有没有图片、音乐、字体这些东西,先标记出来,免得后面当成代码分析了。


### 第 3 步:统计特征

统计每个字节出现的频率、字节序列的规律,看看哪些地方像代码,哪些地方像数据。


### 第 4 步:边界探测

猜一猜指令是定长的还是变长的?每条指令有几个字节?找出可能的指令边界。


### 第 5 步:识别操作码

哪些字节是操作码?它们是怎么编码的?用前缀树、聚类这些方法找出来。


### 第 6 步:划分操作数

剩下的部分哪些是寄存器编码?哪些是立即数?哪些是内存地址?


### 第 7 步:归纳寻址模式

这些操作数是怎么用的?是直接寻址、间接寻址、还是变址寻址?


### 第 8 步:分析控制流

哪些是跳转指令?跳到哪里?哪些是函数调用?把程序的控制流图画出来。


### 第 9 步:推断寄存器文件

有多少个通用寄存器?哪个是程序计数器 PC?哪个是栈指针 SP?


### 第 10 步:分离代码和数据

哪些区域是真正的代码?哪些是数据、字符串、填充?


### 第 11 步:分类和标注

这条指令是 MOV 还是 ADD?是 JMP 还是 CALL?给它们打上语义标签。


### 第 12 步:迭代收敛

上面这些步骤不是一次性做好的,要多轮迭代,互相验证,直到结果稳定下来。


### 第 13 步:指令分析

统计每个操作数怎么用的,寄存器的读写规律,数据流是怎样的。


### 第 14 步:仿真测试

把推断出来的指令集放进仿真器里跑跑看,看看逻辑顺不顺,有没有自相矛盾的地方。


### 第 15 步:生成结果

最后输出三样东西:可独立运行的反汇编引擎 C 代码、指令集说明文档、分析报告 HTML。


---


## 它能做什么?


- 从纯二进制样本中推导未知指令集的编码规律

- 识别可能的指令和它们的边界

- 区分代码区域和数据区域

- 生成可读的反汇编代码

- 检测嵌入的资源(图片、声音等)

- 输出可独立运行的交互式反汇编引擎


---


## 独白


有人说:世上无龙,要屠龙术又有何用?

为什么做?谁会用?


我们认为:当未来某一天,龙真的出现的时候,人类不应该束手无策。


因为可以分析任何未知,本身就是一种威慑。


---


## V0 发布


这是 V0 版本。它已经可以工作了。


---


**发布日期**:2026年5月17日  

**状态**:V0  

**语言**:C  



传播安全知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回