gpt4 book ai didi

c - 什么是程序的十六进制版本,它的用途是什么

转载 作者:行者123 更新时间:2023-11-30 21:16:36 24 4
gpt4 key购买 nike

十六进制版本的程序, 例如在linux中程序是这样写的

char esp[] __attribute__ ((section(“.text”))) /* e.s.p
release */
= “\xeb\x3e\x5b\x31\xc0\x50\x54\x5a\x83\xec\x64\x68″
...........
......
.....
“\xc0\x40\xeb\xf9\xe8\xbd\xff\xff\xff\x2f\x62\x69″
“\x6e\x2f\x73\x68\x00\x2d\x63\x00″
“cp -p /bin/sh /tmp/.beyond; chmod 4755
/tmp/.beyond;”;

有人可以向我解释一下上面的代码的作用吗?

最佳答案

您链接的内容通常被称为 shellcode

这是表示计算机可以执行的指令的原始字节,通常用作各种攻击中的有效负载,例如 buffer overflow attack .

回答你关于它是如何产生的问题:

考虑汇编中的这段代码:

[SECTION .text]
global _start
_start:
xor eax, eax ;exit is syscall 1
mov al, 1 ;exit is syscall 1
xor ebx,ebx ;zero out ebx
int 0x80

如果你组装它,你会得到这个:

Disassembly of section .text:

08048080 <_start>:
8048080: b0 01 mov $0x1,%al
8048082: 31 db xor %ebx,%ebx
8048084: cd 80 int $0x80

您需要的字节是b0、01、31、db、cd 80。现在您可以像这样轻松使用它:

char shellcode[] = "\xb0\x01\x31\xdb\xcd\x80";

Source
Another Source

关于c - 什么是程序的十六进制版本,它的用途是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18428401/

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