Shellcode对齐问题

逆向工程 部件 外壳代码
2021-06-13 08:43:43

我正在尝试一些 CTF 风格的挑战,我必须在 x86_64 中针对 Linux 编写 shellcode。

在后面的挑战中,代码增长了很多。我现在有一大堆字节,我不能直接在 shellcode 中使用。我的想法是加载代码,然后在第一阶段使用 add/sub 等操作它,然后稍后执行解码的指令。

然而,解码并不总是正常工作。大多数情况下,当我尝试使用诸如 之类[rax]指针时,运行时读取的内容与由 读取的内容不同gdb这是我正在尝试做的事情的简化版本:

decrypt:
  cmp byte [rax], 0x66
  jae no_change
  cmp byte [rax], 0
  je no_change
    add byte [rax], 0x3f

no_change:
  inc [rax]
  loop decrypt

这不起作用。通常[rax]没有正确读取。但是,当我NOPno_change标签添加一些说明时,它就可以正常工作了。我只是不明白为什么我不能[rax]用来指向任何位置。

0个回答
没有发现任何回复~