gpt4 book ai didi

c - 将字符串地址解析为小端

转载 作者:太空宇宙 更新时间:2023-11-04 02:46:42 25 4
gpt4 key购买 nike

我和我的搭档正在尝试在 C 中进行 return-to-libc 攻击,我们必须处理的一个步骤是将以字符串格式给出的地址解析为小端。

因此,例如,我们以字符串形式给出一个如下所示的地址:

"ffffb4a2"

最终需要看起来像:

"\xa2\xb4\xff\xff"

因此我们可以将其反馈到我们的程序中以进行其余的利用。巧妙地使用 memcpy,例如:

memcpy(subbuff1, &address[6], 2);
subbuff1[2] = '\0';
memcpy(subbuff2, &address[4], 2);
subbuff2[2] = '\0';
.....strcat(subbuff1, subbuff2);

和一些适当的空终止符我们可以得到类似的东西:

"a2b4ffff"

我们的程序根本不喜欢。在我们尝试过的任何类型的容量中使用“\x”都会导致它产生轻微的故障。我确信有一种简单的方法可以做到这一点,但我和我的伙伴正在努力。

有没有一种简单的方法可以将这样的地址解析为 Little Endian?

最佳答案

只需将其读作足够长度的十六进制数,或使用适当的指针格式:

  1. strtoll

    long long n = strtoll(yourstringhere, 0, 16);
    void* p = (void*)n;
  2. sscanf

    void* p;
    sscanf(yourstringhere, "%p", &p);
  3. 或者嵌入十六进制文字:

    0xffffb4a2

关于c - 将字符串地址解析为小端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26598475/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com