Shellcode 无法正常工作

逆向工程 拆卸 部件 外壳代码
2021-06-19 08:20:16

我用汇编写了一个小程序,它应该打印“AAAA”。当我直接运行它时它工作正常,但是当我在ac程序中将它作为shellcode运行时,它不起作用。请帮忙。

这是汇编代码: 在此处输入图片说明

当我编译并执行以下代码时:

char shellcode[] = {0x31,0xc0,0xb0,0x04,0x31,0xdb,0xb3,0x01,0x68,0x41,0x41,0x41,0x41,0x89,0xe1,0x31,0xd2,0xb2,0x04,0xcd,0x80,0x31,0xc0,0xb0,0x01,0x31,0xdb,0xb3,0x01,0xcd,0x80};
int main(){
        (*(void(*)())shellcode)();
        return 0;
}

编译为:

$gcc -g -Wall -fno-stack-protector -z execstack code.c -o code

执行:

$./code
$
1个回答

您正在显示 x86(32 位)shellcode,但没有为该架构编译您的程序,因此gcc很可能会创建一个 amd64(64 位)可执行文件。这可以通过添加-m32开关来解决:

gcc -g -Wall -fno-stack-protector -z execstack -m32 code.c -o code

您可以通过file在生成的文件上运行来验证这一点

code: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), […]