首页 > 解决方案 > 这个大会到底在做什么?

问题描述

我有一个正在阅读的汇编代码,代码中有以下部分:

    mov    $0x28,%esi
    mov    %rax,%rdi
    callq  <strchr@plt>
    mov    %rax,%rbx
    test   %rax,%rax
    jne     somewhere

我在这段代码中遇到了一些困难。第一步移动0x28到注册%esi。第二个移动%rax%rdi,然后它移动到strchr(char *rdi, char *esi)。因此,基本上它返回指向 ascii 之后第一次出现的指针0x28,即'('. 然后最后一个测试告诉我它正在测试字符串 atrdi是否有'('字符。如果没有,则test %rax, %rax设置 ZeroFlags,并且jne不会执行。我的理解正确吗?

我还有一个问题是,当我尝试检查%esi第一个之后的确切内容时mov,我使用了命令p (char *)$esiingdb但得到了输出<error: Cannot access memory at address 0x28>。谁能告诉我如何查看内容$esi

标签: cassemblygdb

解决方案


推荐阅读