E1F322D1
,旧的reko反汇编程序和ODA都会反汇编为: ldrsb r2, [r3, #33]!
但是,Capstone回应:
ldrsb r2,[r3,#&221]!
我没有其他方便的反汇编程序,所以我不确定该信任谁!
什么是正确的拆卸方法?
#1 楼
IDA同意第一个:LDRSB R2, [R3,#33]!
Capstone可能试图显示类似#0x21之类的内容,这是等效的,但似乎出现了问题。 />
#2 楼
来自http://bear.ces.cwru.edu/eecs_382/ARM7-TDMI-manual-pt2.pdf:E1F322D1
等于二进制形式的11100001111100110010001011010001
。您的问题是特定于偏移量的,因此我们可以根据上方屏幕快照中的分解规则来检查该二进制字符串的最后十二位:
... Offset 1 SH 1 Offset
... 0010 1 10 1 0001
因此,高半字节为
0010
,低半字节为0001
。如果将它们组合在一起,我们将以二进制形式获得00100001
,或者以十进制获得33
。因此正确的反汇编是
ldrsb r2, [r3, #33]!
。
评论
确实,经过一些进一步的故障排除后,我将问题缩小到Capstone.NET并报告了。希望很快就会有修复程序。
– JohnKällén
15年8月11日在20:31