首页
社区
课程
招聘
[原创] Arm静态分析引擎原理二 - 反汇编引擎实现
发表于: 2026-8-4 19:06 548

[原创] Arm静态分析引擎原理二 - 反汇编引擎实现

2026-8-4 19:06
548

上文

经过 DSL 描述以后,引擎不会直接解析 DSL,而是会预先生成一张静态查找表。查找表中的每一个节点都会转换成 (mask, value) 的形式,运行时只需要进行按位与和比较即可完成匹配,因此解码过程不需要解释 DSL,也不需要字符串匹配。

还是以这个C4.1.92 Data Processing – Immediate里面的add为例,在解码的时候会为这棵树生成maskvalue

指令查表的逻辑就是 :


C4.1.92 Data Processing – Immediate:xxx100xxxxxxxxxxxxxxxxxxxxxxxxxx的mask和value分别是:

    mask: 469762048,二进制:00011100000000000000000000000000

    value: 268435456,  二进制:00010000000000000000000000000000


C4.1.92.3 Add/subtract (immediate): xxx100010xxxxxxxxxxxxxxxxxxxxxxx的mask和value分别是:

    mask:528482304,二进制:00011111100000000000000000000000

    value:285212672,二进制:00010001000000000000000000000000


ADD <Wd|WSP>, <Wn|WSP>, #<imm>{, <shift>} 指令的mask和value分别是:

    mask:4286578688,二进制:11111111100000000000000000000000

    value:285212672,二进制:00010001000000000000000000000000

拿一条add指令举例:

那么伪代码的逻辑就是这样的:


以add指令的操作数为例:

第一个操作数是从0开始,5位

第二个操作数是从5开始,5位

第三个操作数是从10开始,12位,这个操作数有shift,shift的逻辑就是f:f1

这里的f:f1表示一个函数,也就是父节点上的fshift,fshift里面就是一个字符串描述的函数,直接可以求出shift的值即可


这里还是以

为例

指令的二进制是:0001000100000000001100 01000 01000

第一个操作数0:5 -> 01000 -> 8 -> 寄存器是16位w -> w8


冰与火的战歌:Windows内核攻防实战高级班!从零到实战,融合AI与Windows内核攻防全技术栈,打造具备自动化能力的内核开发高手。

最后于 2026-8-5 15:29 被neocanable编辑 ,原因: 改个名字
收藏
免费 24
打赏
分享
最新回复 (11)
雪    币: 0
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
2
666
2026-8-4 19:13
0
雪    币: 6
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
3
感谢分享
2026-8-5 06:29
0
雪    币: 1560
活跃值: (5533)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
4
1
2026-8-5 09:45
0
雪    币: 176
活跃值: (1222)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
1
2026-8-5 19:27
0
雪    币: 57
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
6
666
2026-8-5 19:51
0
雪    币: 57
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
7
666
2026-8-5 19:56
0
雪    币: 95
活跃值: (3432)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
6666666
2026-8-5 22:29
0
雪    币: 258
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
9
感谢分享
3天前
0
雪    币: 3589
活跃值: (7270)
能力值: ( LV11,RANK:185 )
在线值:
发帖
回帖
粉丝
10
1
2天前
0
雪    币: 0
活跃值: (2141)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
666
2天前
0
雪    币: 5010
活跃值: (6285)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
6
2天前
0
游客
登录 | 注册 方可回帖
返回