【问题标题】:How to call library functions in shellcode如何在 shellcode 中调用库函数
【发布时间】:2017-08-12 13:24:08
【问题描述】:

我想使用以下 NASM 代码生成 shellcode:

global _start
extern exit

section .text
_start:
    xor     rcx, rcx
    or      rcx, 10
    call    exit

这里的问题是我不能使用它,因为exit函数的地址不能被硬编码。那么,我该如何去使用库函数而不必使用系统调用重新实现它们呢?

我能想到的一种方法是使用GetProcAddress 在预处理程序中检索exit 函数的地址,并将其替换为适当位置的shellcode。

但是,此方法不会生成可以按原样运行的 shellcode。我相信一定有更好的方法来做到这一点。

【问题讨论】:

    标签: windows 64-bit nasm shellcode


    【解决方案1】:

    我不是编写 shellcode 的专家,但您可以尝试查找目标程序的导入地址表 (IAT),并使用存储的函数指针来调用 windows 函数。 请注意,您将受限于目标程序使用的功能。 此外,由于重定位,您还必须让您的 shellcode 计算 IAT 相对于进程基址的位置。当然,您可以依靠 Windows 不重新定位,但这在少数情况下可能会导致错误。 另一个问题是您必须从外部找到目标进程的基地址。 一个完全不同的尝试是使用系统调用,但它们真的很难使用,更不用说使用它们的危险了。

    PE文件结构信息: https://msdn.microsoft.com/en-us/library/ms809762.aspx

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-03
      • 1970-01-01
      • 1970-01-01
      • 2022-12-05
      • 1970-01-01
      相关资源
      最近更新 更多