IDA RIP指向未定义为代码的地址

问题描述

我最近一直在练习我的汇编,而我遇到了一些奇怪的事情。我在主要功能的开头定义了这段代码。

            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 (将#修改为@)