Microbe.Win64.Blau!E4

· Dawid Farbaniec

ethical.blue Magazine NaN. Anomalie i zniekształcenia

Microbe.Win64.Blau!E4

Rysunek 1. Program Microbe.Win64.Blau!E4.exe

Kod źródłowy w Asemblerze MASM x64 przedstawiono poniżej.

; Microbe.Win64.Blau!E4
; by ethical.blue Magazine

.code
Main proc

push rbp
mov rbp, rsp

push rbx
push rdi
push rsi
push r10
push r11
push r12
push r13
push r14
push r15

rdgsbase r10
mov r10, [r10+60h]
mov r10, [r10+18h]
mov r11, [r10+20h]
mov r10, [r11]
mov r11, [r10]
mov rbx, [r11+20h]
mov r9d, [rbx+3Ch]
add r9, rbx
add r9, 88h
mov r11d, [r9]
lea r8, [r11+rbx]
mov ecx, [r8+18h]
mov r9d, [r8+20h]
add r9, rbx

ForEach:
lea r10, [r9+rcx*4]
mov edi, [r10]
add rdi, rbx
lea rsi, aGtPrcA

Next:
cmpsb
jnz Continue
mov al, [rsi]
test al, al
jz Found
jmp Next

Continue:
loop ForEach
jmp Exit

Found:
mov r10d, [r8+24h]
add r10, rbx
mov cx, [r10+rcx*2]
mov r10d, [r8+1Ch]
add r10, rbx
mov eax, [r10+rcx*4]
add rax, rbx
mov r13, rax

sub rsp, 28h
lea rdx, aLdLbry
mov rcx, rbx
call r13

lea rcx, aUsr32
call rax

lea rdx, aMsgBx
mov rcx, rax
call r13

mov r9, 000000030h
lea r8, aEthcl
lea rdx, aEthcl
xor rcx, rcx
call rax

Exit:
add rsp, 28h

pop r15
pop r14
pop r13
pop r12
pop r11
pop r10
pop rsi
pop rdi
pop rbx

mov rsp, rbp
pop rbp

ret

aGtPrcA db 'GetProcAddress', 0
aLdLbry db 'LoadLibraryA', 0
aUsr32 db 'user32.dll', 0
aMsgBx db 'MessageBoxA', 0
aEthcl db 'ethical.blue '
db 'Magazine', 0

Main endp
end

Program w postaci kodu maszynowego niezależnego od miejsca w pamięci przedstawiono poniżej.

┌ Microbe.Win64.Blau!E4
└─ raw.txt

Program Microbe.Win64.Blau!E4 korzysta ze struktur danych, które są przeznaczone do użytku wyłącznie przez wewnętrzne, kluczowe komponenty systemu Microsoft Windows. Wspomniane struktury danych mogą ulec zmianie w dowolnym momencie.