gpt4 book ai didi

assembly - x86 程序集 : Data in the Text Section

转载 作者:行者123 更新时间:2023-12-02 22:07:17 26 4
gpt4 key购买 nike

我不太明白变量如何存储在文本部分以及如何操作它们。难道所有变量不应该都在 .data 部分中,并且 .text 部分的所有部分都是只读的吗?那么这段代码是如何工作的呢?

[代码取自Shellcoder 手册]

Section .text
global _start

_start:
jmp short GotoCall

shellcode:
pop esi
xor eax, eax
mov byte [esi + 7], al
lea ebx, [esi]
mov long [esi + 8], ebx
mov long [esi + 12], eax
mov byte al, 0x0b
mov ebx, esi
lea ecx, [esi + 8]
lea edx, [esi + 12]
int 0x80

GotoCall:
call shellcode
db '/bin/shJAAAAKKKK'

最佳答案

嗯,数据和代码只是字节。只有你如何解释它们才决定它们是什么。代码可以解释为数据,反之亦然。在大多数情况下,它会产生无效的东西,但无论如何它是可能的。

节的属性取决于链接器,大多数默认情况下使 .text 节成为 RO,但这并不意味着它不能更改。

整个示例是一种巧妙的方法,只需使用call即可获取/bin/sh的地址。基本上,call 将下一条指令(下一个字节)的地址放在堆栈上,在这种情况下,它将是该字符串的地址,因此 pop esi 将获取该地址从堆栈中取出并使用它。

关于assembly - x86 程序集 : Data in the Text Section,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46203110/

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