[unicorn-engine] Question regarding the movabs instruction x86_64

  • From: Kyle Gwinnup <kpgwinnup@xxxxxxxxx>
  • To: unicorn-engine@xxxxxxxxxxxxx
  • Date: Tue, 17 Jul 2018 14:11:47 -0400

Hi all,
 
I have a strange issue with an instruction, `movabs` on X86_64. My question is
about the instruction at 0x140001782. Unicorn tells me the instruction is of
size 0xa and if I am understanding the instruction correctly, it should set the
value of ebx to 0x2b992ddfa232 which is not happening (output below).

Thanks in advanced, any help is appreciated.
 
I am initializing unicorn as UC_ARCH_X86/UC_MODE_64. Additionally, some output
is provided below. More or less this is what is in some of the examples from the
github page.
 
 
```
0x140001770      48895c2420     mov qword [arg_20h], rbx
0x140001775      55             push rbp
0x140001776      488bec         mov rbp, rsp
0x140001779      4883ec20       sub rsp, 0x20
0x14000177d      4883651800     and qword [arg_18h], 0
0x140001782   *  48bb32a2df2d.  movabs rbx, 0x2b992ddfa232
0x14000178c      488b05751800.  mov rax, qword [0x140003008]    ; 
[0x140003008:8]=0x2b992ddfa232 ; "2\xa2\xdf-\x99+"
0x140001793      483bc3         cmp rax, rbx
0x140001796      756f           jne 0x140001807          ;[1]
0x140001798      488d4d18       lea rcx, [arg_18h]       ; 0x18 ; 24
0x14000179c      ff158e080000   call qword 
sym.imp.KERNEL32.dll_GetSystemTimeAsFileTime
```
 
current instruction at 0x140001324, instruction size = 0x4
rip is 0x0000000140001324 r8 is  0x0000000000000000
rsp is 0x008f000000000000 r9 is  0x0000000000000000
rax is 0x0000000000000000 r10 is 0x0000000000000000
rbx is 0x0000000140000000 r11 is 0x0000000000000000
rcx is 0x0000000000000000 r12 is 0x0000000000000000
rdx is 0x0000000000000000 r13 is 0x0000000000000000
rsi is 0x0000000000000000 r14 is 0x0000000000000000
rdi is 0x0000000000000000 r15 is 0x0000000000000000
rbp is 0x008f000000000000
current instruction at 0x140001328, instruction size = 0x5
rip is 0x0000000140001328 r8 is  0x0000000000000000
rsp is 0x008effffffffffd8 r9 is  0x0000000000000000
rax is 0x0000000000000000 r10 is 0x0000000000000000
rbx is 0x0000000140000000 r11 is 0x0000000000000000
rcx is 0x0000000000000000 r12 is 0x0000000000000000
rdx is 0x0000000000000000 r13 is 0x0000000000000000
rsi is 0x0000000000000000 r14 is 0x0000000000000000
rdi is 0x0000000000000000 r15 is 0x0000000000000000
rbp is 0x008f000000000000
current instruction at 0x140001770, instruction size = 0x5
rip is 0x0000000140001770 r8 is  0x0000000000000000
rsp is 0x008effffffffffd0 r9 is  0x0000000000000000
rax is 0x0000000000000000 r10 is 0x0000000000000000
rbx is 0x0000000140000000 r11 is 0x0000000000000000
rcx is 0x0000000000000000 r12 is 0x0000000000000000
rdx is 0x0000000000000000 r13 is 0x0000000000000000
rsi is 0x0000000000000000 r14 is 0x0000000000000000
rdi is 0x0000000000000000 r15 is 0x0000000000000000
rbp is 0x008f000000000000
current instruction at 0x140001775, instruction size = 0x1
rip is 0x0000000140001775 r8 is  0x0000000000000000
rsp is 0x008effffffffffd0 r9 is  0x0000000000000000
rax is 0x0000000000000000 r10 is 0x0000000000000000
rbx is 0x0000000140000000 r11 is 0x0000000000000000
rcx is 0x0000000000000000 r12 is 0x0000000000000000
rdx is 0x0000000000000000 r13 is 0x0000000000000000
rsi is 0x0000000000000000 r14 is 0x0000000000000000
rdi is 0x0000000000000000 r15 is 0x0000000000000000
rbp is 0x008f000000000000
current instruction at 0x140001776, instruction size = 0x3
rip is 0x0000000140001776 r8 is  0x0000000000000000
rsp is 0x008effffffffffc8 r9 is  0x0000000000000000
rax is 0x0000000000000000 r10 is 0x0000000000000000
rbx is 0x0000000140000000 r11 is 0x0000000000000000
rcx is 0x0000000000000000 r12 is 0x0000000000000000
rdx is 0x0000000000000000 r13 is 0x0000000000000000
rsi is 0x0000000000000000 r14 is 0x0000000000000000
rdi is 0x0000000000000000 r15 is 0x0000000000000000
rbp is 0x008f000000000000
current instruction at 0x140001779, instruction size = 0x4
rip is 0x0000000140001779 r8 is  0x0000000000000000
rsp is 0x008effffffffffc8 r9 is  0x0000000000000000
rax is 0x0000000000000000 r10 is 0x0000000000000000
rbx is 0x0000000140000000 r11 is 0x0000000000000000
rcx is 0x0000000000000000 r12 is 0x0000000000000000
rdx is 0x0000000000000000 r13 is 0x0000000000000000
rsi is 0x0000000000000000 r14 is 0x0000000000000000
rdi is 0x0000000000000000 r15 is 0x0000000000000000
rbp is 0x008effffffffffc8
current instruction at 0x14000177d, instruction size = 0x5
rip is 0x000000014000177d r8 is  0x0000000000000000
rsp is 0x008effffffffffa8 r9 is  0x0000000000000000
rax is 0x0000000000000000 r10 is 0x0000000000000000
rbx is 0x0000000140000000 r11 is 0x0000000000000000
rcx is 0x0000000000000000 r12 is 0x0000000000000000
rdx is 0x0000000000000000 r13 is 0x0000000000000000
rsi is 0x0000000000000000 r14 is 0x0000000000000000
rdi is 0x0000000000000000 r15 is 0x0000000000000000
rbp is 0x008effffffffffc8
current instruction at 0x140001782, instruction size = 0xa
rip is 0x0000000140001782 r8 is  0x0000000000000000
rsp is 0x008effffffffffa8 r9 is  0x0000000000000000
rax is 0x0000000000000000 r10 is 0x0000000000000000
rbx is 0x0000000140000000 r11 is 0x0000000000000000
rcx is 0x0000000000000000 r12 is 0x0000000000000000
rdx is 0x0000000000000000 r13 is 0x0000000000000000
rsi is 0x0000000000000000 r14 is 0x0000000000000000
rdi is 0x0000000000000000 r15 is 0x0000000000000000
rbp is 0x008effffffffffc8
current instruction at 0x14000178c, instruction size = 0x7
rip is 0x000000014000178c r8 is  0x0000000000000000
rsp is 0x008effffffffffa8 r9 is  0x0000000000000000
rax is 0x0000000000000000 r10 is 0x0000000000000000
rbx is 0x0000000140000000 r11 is 0x0000000000000000
rcx is 0x0000000000000000 r12 is 0x0000000000000000
rdx is 0x0000000000000000 r13 is 0x0000000000000000
rsi is 0x0000000000000000 r14 is 0x0000000000000000
rdi is 0x0000000000000000 r15 is 0x0000000000000000
rbp is 0x008effffffffffc8
[1]    59161 segmentation fault  ./build/unicorntest tests/test.exe
 

Other related posts:

  • » [unicorn-engine] Question regarding the movabs instruction x86_64 - Kyle Gwinnup