问题描述
我最近一直在练习我的汇编,而我遇到了一些奇怪的事情。我在主要功能的开头定义了这段代码。
global main
SECTION .text
main: xor rcx,rcx
loop: inc rcx
mov r8,none
mov r9,none
first: mov rdx,3
call mod
cmp eax,0
jnz second
mov r8,fizz
该程序可以编译并正常运行,但是当我将其放入IDA时,上面的段似乎有问题。它解析出main的单条指令完全正确,但是当它到达循环内的“ inc rcx”指令时,指令似乎无法解析,并且在行401533上的值“ 49C1FF48h”被突出显示为红色
.text:0000000000401550 public main
.text:0000000000401550 main: ; CODE XREF: __tmainCRTStartup+242↑p
.text:0000000000401550 xor rcx,rcx
.text:0000000000401550 ; ---------------------------------------------------------------------------
.text:0000000000401553 ; stringop_alg loop
.text:0000000000401553 loop dd 49C1FF48h <--ISSUE IS HERE
.text:0000000000401557 db 0B8h
.text:0000000000401558 dq offset none
.text:0000000000401560 dq 403010B949h
.text:0000000000401568 db 2 dup(0)
.text:000000000040156A first dw 3BAh,0
.text:000000000040156E dw 0E800h
.text:0000000000401570 dq 7500F88300000057h,403011B8490Ah
.text:0000000000401580 db 3 dup(0)
在执行过程中到达该行时,它将暂停并且IDA弹出警告IDA has detected that RIP points to an address which is not defined as code. Would you like to directly create an instruction at RIP ?
。单击“是”后,ida似乎可以移动并正确解析它,但是所有地址都变为红色。
这使我感到困惑。据我所知,我还没有做任何会引起这样的警告的事情。我对组装没有经验,但可能是对齐问题?多数民众赞成在我能想到的,但似乎我没有做任何会导致对齐问题的事情。 ive还尝试在循环之前添加nops以使其对齐,特别是从main跳转/调用循环以查看是否可以解决该问题,但似乎并没有改变任何内容。我的一部分感到这可能是IDA方面的问题,但是我觉得在指责该工具未使用之前,我应该穷尽更多的可能性。
在Windows 10上使用以下命令编译:{{1}}
完整的程序在这里:https://pastebin.com/FwW5YSji
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)