首页
社区
课程
招聘
[原创]为了理解反汇编引擎而写的X86/X64反汇编引擎
发表于: 2020-2-26 01:37 11913

[原创]为了理解反汇编引擎而写的X86/X64反汇编引擎

2020-2-26 01:37
11913
收藏
免费 24
支持
分享
打赏 + 20.00雪花
打赏次数 2 雪花 + 20.00
 
赞赏  小曾HanFeng   +10.00 2021/01/22
赞赏  RinceLeung   +10.00 2020/03/12 支持樓主好文章!
最新回复 (32)
雪    币: 2702
活跃值: (2092)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
26
非常不错的一篇文章,需要慢慢品。
2020-3-21 11:32
0
雪    币: 1759
活跃值: (2334)
能力值: ( LV2,RANK:15 )
在线值:
发帖
回帖
粉丝
27
大佬,有没有研究过ARM解析啊,我想做个ARM反汇编引擎,但是每次想到那种令人绝望的难度就放弃了,还是大佬有毅力
2020-3-21 12:39
0
雪    币: 4506
活跃值: (905)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
28
又见飞刀z 大佬,有没有研究过ARM解析啊,我想做个ARM反汇编引擎,但是每次想到那种令人绝望的难度就放弃了,还是大佬有毅力
没碰过安卓开发,这个就不知道了。
2020-3-21 14:39
0
雪    币: 4861
活跃值: (18855)
能力值: ( LV13,RANK:317 )
在线值:
发帖
回帖
粉丝
29
膜膜膜
2020-4-9 18:15
0
雪    币: 969
活跃值: (2937)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
31
楼主思路倒是还可以、但是有一些地方定义的不太好(个人觉得)、就比如定义指令结构(add)数组那里、但是貌似没有按照白皮书要求、比如单字节操作码映射(00H - F7H)的04处写的是AL, Ib,但是代码确定义成了rAX、但是白皮书说道当寄存器宽度依赖于操作数大小属性时,使用eXX或rXX形式的寄存器标识符。eXX在16或32位大小可能的情况下使用;rXX在16、32或64位大小可能存在时使用。如eAX表示当操作数size属性为16时使用AX寄存器,当操作数size属性为32时使用eAX寄存器。rAX可以表示AX、EAX或rAX。

但是又说道当一个操作码需要一个特定的寄存器作为操作数时,寄存器由名称标识(例如,AX、CL或ESI)。名称指示寄存器的宽度是64
位、32位、16位还是8位。

所以说rXX是表示可能在16 、32、64位大小运行、04如果在32位汇编模式下明显是al、x64汇编模式下改变需要加上前缀48、但是类似这地方的还有很多处!
(个人建议)、望楼主采纳!
2021-1-25 08:05
0
雪    币: 417
活跃值: (26)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
32
好深奥啊,只看懂了AMD YES
2021-1-26 00:33
0
雪    币: 4506
活跃值: (905)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
33
小曾HanFeng 楼主思路倒是还可以、但是有一些地方定义的不太好(个人觉得)、就比如定义指令结构(add)数组那里、但是貌似没有按照白皮书要求、比如单字节操作码映射(00H - F7H)的04处写的是AL, Ib,但是 ...
你没有看明白我的代码,rAX后面有一个_8BIT,其实就是AL。我那样子写只是好看而已,你可以理解为我把特殊的例子转为一般的规则。出现04的时候就能按照一般的规则解析了。
2021-1-26 03:21
0
游客
登录 | 注册 方可回帖
返回
//