我很难弄清楚这到底在做什么。
mov rax, [rbp+var_720]
mov [rbp+var_458], rax
mov rax, [rbp+var_458]
mov [rbp+command_], rax
mov rax, [rbp+something_weird_idk]
mov [rbp+var_4D8], rax
mov rax, [rbp+var_4D8]
mov [rbp+var_4D0], rax
mov rax, [rbp+var_4D0]
mov [rbp+var_4C8], rax
mov rax, [rbp+var_4C8]
movzx ecx, byte ptr [rax]
and ecx, 1 <- Breakpoint here
cmp ecx, 0
jz loc_100003CFE
我想要实现的不是跳转到 loc_1000...,所以如果我理解正确,cmp指令应该返回 1(如此真实)。
有了断点,RAX就是这个
__common:00000001000181C8 _command:
__common:00000001000181C8
__common:00000001000181C8 sbb [rcx+55h], al
__common:00000001000181CB push rsp
__common:00000001000181CC db 48h, 45h
__common:00000001000181CC push rsp
__common:00000001000181D0 db 49h, 43h
__common:00000001000181D0 push r12
__common:00000001000181D4 add [r8], r8b
虽然和往常一样,不知道这是在做什么。
任何人都可以对此有所了解吗?
另外,为什么程序集通过多个变量移动数据?例如,在断点之前和之后mov rax, [rbp+something_weird_idk],它基本上是在[rbp+something..]不做任何事情的情况下遍历多个变量。这是为什么?