Work environment
| Questions |
Answers |
| OS/arch/bits |
MacOS, arm64 |
| Architecture |
arm64 |
| Source of Capstone |
git clone, pip |
| Version/git commit |
v5.0.1 |
Instruction bytes giving faulty results
0xc0, 0x03, 0x5f, 0xd6, 0x98, 0xf2, 0xff, 0xff, 0xc0, 0x03, 0x5f, 0xd6
Expected results
It should be:
1000 c0 03 5f d6 ret
1004 98 f2 ff ff .byte 0x98, 0xf2, 0xff, 0xff
1008 c0 03 5f d6 ret
Steps to get the wrong result
With cstool we got expected result:
$ cstool -s arm64 "c0035fd698f2ffffc0035fd6"
1000 c0 03 5f d6 ret
1004 98 f2 ff ff .byte 0x98, 0xf2, 0xff, 0xff
1008 c0 03 5f d6 ret
With Python code
from capstone import *
CODE = b"\xc0\x03\x5f\xd6\x98\xf2\xff\xff\xc0\x03\x5f\xd6"
md = Cs(CS_ARCH_ARM64, CS_MODE_ARM)
md.skipdata = True
for insn in md.disasm(CODE, 0x1000):
print("%x %s %s %s" % (insn.address, "".join(["%02x " % b for b in insn.bytes]), insn.mnemonic, insn.op_str))
Got only first instruction
NOTE
- Compiled
test_skipdata.c works as expected.
- Use of compiled dynamic library from
v5.0.1 release sources from python returns invalid result.
Probably the issue with dynamic library.
Work environment
git clone, pipInstruction bytes giving faulty results
Expected results
It should be:
Steps to get the wrong result
With
cstoolwe got expected result:$ cstool -s arm64 "c0035fd698f2ffffc0035fd6" 1000 c0 03 5f d6 ret 1004 98 f2 ff ff .byte 0x98, 0xf2, 0xff, 0xff 1008 c0 03 5f d6 retWith
PythoncodeGot only first instruction
NOTE
test_skipdata.cworks as expected.v5.0.1release sources from python returns invalid result.Probably the issue with dynamic library.