joyce8/EMBER2024-capa huggingface dataset:
Function at 0x100019a1
Capabilities:
Contain obfuscated stackstrings

Disassembly:
jmp 0x1001a000
mov byte [ebp - 0x56], 0x58
mov byte [ebp - 0x55], bl
mov byte [ebp - 0x54], 0xe0
mov byte [ebp - 0x53], 0xc2
mov byte [ebp - 0x52], 0xd3
mov byte [ebp - 0x51], 0xf4
mov byte [ebp - 0x50], 0xde
mov byte [ebp - 0x4f], 0xd4
mov byte [ebp - 0x4e], 0xd3
mov byte [ebp - 0x4d], 0xc2
mov byte [ebp - 0x4c], 0xca
mov byte [ebp - 0x4b], 0xee
mov byte [ebp - 0x4a], 0xc9
mov byte [ebp - 0x49], 0xc1
mov byte [ebp - 0x48], 0xc8
mov byte [ebp - 0x47], 0xa7
call fcn.10019da0
sbb esi, edx
add al, 0x9d
lea eax, [ebp - 0x58]
push eax
call fcn.10019db0
mov esi, dword [ebp + 0xc]
push eax
push esi
push dword [ebp + 8]
call fcn.10019d65
add esp, 0x10
lea ecx, [ebp - 0xb0]
push ecx
call eax
mov eax, dword [ebp - 8]
mov ecx, dword [ebp - 0xac]
xor edx, edx
div ecx
xor edx, edx
mov dword [ebp - 0x8c], eax
mov eax, dword [ebp - 8]
div ecx
test edx, edx
je 0x1001a08e
inc dword [ebp - 0x8c]
imul ecx, dword [ebp - 0x8c]
mov dword [ebp + 0xc], ecx
mov byte [ebp - 0x40], bl
mov byte [ebp - 0x3f], bl
mov byte [ebp - 0x3e], 0xec
mov byte [ebp - 0x3d], bl
mov byte [ebp - 0x3c], 0x45
mov byte [ebp - 0x3b], 0x7a
mov byte [ebp - 0x3a], 0x61
mov byte [ebp - 0x39], 0x67
mov byte [ebp - 0x38], 0x66
mov byte [ebp - 0x37], 0x72
mov byte [ebp - 0x36], 0x7f
mov byte [ebp - 0x35], 0x52
mov byte [ebp - 0x34], 0x7f
mov byte [ebp - 0x33], 0x7f
mov byte [ebp - 0x32], 0x7c
mov byte [ebp - 0x31], 0x70
mov byte [ebp - 0x30], 0x13
call fcn.10019da0
and al, 0xad
xor ecx, dword [ebp + 0x50c0458d]
call fcn.10019db0
push eax
push esi
push dword [ebp + 8]
call fcn.10019d65
add esp, 0x10
mov dword [ebp - 0x88], eax
call fcn.10019da0
or byte [edx + 0x4d], ch
invalid

Function at 0x100020a9
Capabilities:
Terminate process

Disassembly:
jmp 0x100b5ee3
push 0x17
call dword [sym.imp.KERNEL32.dll_IsProcessorFeaturePresent]
test eax, eax
je 0x100b5ef4
push 5
pop ecx
int 0x29
push esi
push 1
mov esi, 0xc0000417
push esi
push 2
call fcn.10001438
add esp, 0xc
push esi
call dword [sym.imp.KERNEL32.dll_GetCurrentProcess]
push eax
call dword [sym.imp.KERNEL32.dll_TerminateProcess]
pop esi
ret

Function at 0x10003134
Capabilities:
Query environment variable

Disassembly:
jmp 0x100bc0dc
mov edi, edi
push esi
push edi
call dword [sym.imp.KERNEL32.dll_GetEnvironmentStringsW]
mov esi, eax
test esi, esi
jne 0x100bc0f0
xor edi, edi
jmp 0x100bc127
push ebx
push esi
call fcn.100bbfe4
mov ebx, eax
sub ebx, esi
and ebx, 0xfffffffe
push ebx
call fcn.10002487
mov edi, eax
pop ecx
pop ecx
test edi, edi
je 0x100bc117
push ebx
push esi
push edi
call fcn.10003224
add esp, 0xc
push 0
call fcn.1000150f
pop ecx
push esi
call dword [sym.imp.KERNEL32.dll_FreeEnvironmentStringsW]
pop ebx
mov eax, edi
pop edi
pop esi
ret
Function at 0x10077d00
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
movsd xmm6, qword [0x100e48c0]
movsd xmm3, qword [ebp + 0x28]
comisd xmm6, xmm3
movsd xmm2, qword [ebp + 0x20]
movsd xmm4, qword [ebp + 0x18]
movsd xmm5, qword [ebp + 0x10]
jae 0x10077d7d
movsd xmm7, qword [0x100e4900]
nop dword [eax]
movaps xmm0, xmm4
subsd xmm3, xmm6
mulsd xmm0, xmm7
movaps xmm1, xmm5
xorps xmm1, xmmword [0x100e4a10]
comisd xmm6, xmm3
subsd xmm1, xmm0
movaps xmm0, xmm2
mulsd xmm0, qword [0x100e4920]
mulsd xmm2, xmm7
subsd xmm1, xmm0
movaps xmm0, xmm4
addsd xmm0, xmm4
addsd xmm4, xmm2
addsd xmm5, xmm0
addsd xmm5, xmm2
movaps xmm2, xmm1
jb 0x10077d30
xorps xmm0, xmm0
jmp 0x10077d82
movsd xmm0, qword [ebp + 8]
mulsd xmm2, xmm3
addsd xmm2, xmm4
mulsd xmm2, xmm3
addsd xmm2, xmm5
mulsd xmm2, xmm3
addsd xmm2, xmm0
movsd qword [ebp + 0x20], xmm2
fld qword [ebp + 0x20]
pop ebp
ret
Function at 0x403059
Capabilities:
Read file on windows

Disassembly:
push ebp
mov ebp, esp
push ecx
mov eax, dword [ebp + 8]
push ebx
push esi
xor esi, esi
cmp eax, esi
jl 0x403084
mov ecx, dword [0x447798]
push esi
add eax, ecx
push esi
push eax
mov dword [0x4204dc], eax
push dword [0x40a01c]
call dword [sym.imp.KERNEL32.dll_SetFilePointer]
push 4
call fcn.00403161
cmp eax, esi
jl 0x40315b
lea eax, [ebp + 8]
push 4
push eax
push dword [0x40a01c]
call fcn.00405ce5
test eax, eax
je 0x40314b
push dword [ebp + 8]
add dword [0x4204dc], 4
call fcn.00403161
mov ebx, eax
cmp ebx, esi
jl 0x403159
cmp dword [ebp + 0x10], esi
jne 0x403127
cmp dword [ebp + 8], esi
jle 0x403159
mov esi, 0x41c4d8
cmp dword [ebp + 8], 0x4000
mov eax, dword [ebp + 8]
jl 0x4030e9
mov eax, 0x4000
push eax
push esi
push dword [0x40a01c]
mov dword [ebp - 4], eax
call fcn.00405ce5
test eax, eax
je 0x40314b
push dword [ebp - 4]
push esi
push dword [ebp + 0xc]
call fcn.00405d14
test eax, eax
je 0x403123
mov eax, dword [ebp - 4]
sub dword [ebp + 8], eax
add dword [0x4204dc], eax
add ebx, eax
cmp dword [ebp + 8], 0
jg 0x4030d8
jmp 0x403159
push 0xfffffffffffffffe
jmp 0x40314d
mov eax, dword [ebp + 8]
cmp eax, dword [ebp + 0x14]
jl 0x403132
mov eax, dword [ebp + 0x14]
lea ecx, [ebp - 4]
push esi
push ecx
push eax
push dword [ebp + 0x10]
push dword [0x40a01c]
call dword [sym.imp.KERNEL32.dll_ReadFile]
test eax, eax
jne 0x403150
push 0xfffffffffffffffd
pop eax
jmp 0x40315b
mov ebx, dword [ebp - 4]
add dword [0x4204dc], ebx
mov eax, ebx
pop esi
pop ebx
leave
ret 0x10

Function at 0x406523
Capabilities:
Encode data using xor
Hash data with crc32

Disassembly:
cmp dword [0x43f2c4], 0
push esi
jne 0x40655a
xor ecx, ecx
push 8
mov eax, ecx
pop esi
mov edx, eax
and dl, 1
neg dl
sbb edx, edx
and edx, 0xedb88320
shr eax, 1
xor eax, edx
dec esi
jne 0x406534
mov dword [ecx*4 + 0x43f2c0], eax
inc ecx
cmp ecx, 0x100
jl 0x40652f
mov edx, dword [esp + 0x10]
mov eax, dword [esp + 8]
test edx, edx
not eax
jbe 0x40658b
mov ecx, dword [esp + 0xc]
push edi
movzx edi, byte [ecx]
mov esi, eax
and esi, 0xff
xor esi, edi
shr eax, 8
mov esi, dword [esi*4 + 0x43f2c0]
xor eax, esi
inc ecx
dec edx
jne 0x40656d
pop edi
not eax
pop esi
ret 0xc
Function at 0x40610d
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x28
pushal
call 0x40611c
pop dword [ebp - 0x18]
mov eax, 0x2e5730f3
sub eax, 0x2e16cfd7
sub dword [ebp - 0x18], eax
mov dword [ebp - 0x28], 0x80a77525
sub dword [ebp - 0x28], 0x32552fda
mov dword [ebp - 0x24], 0x728ab95a
sub dword [ebp - 0x24], 0x40576d15
mov dword [ebp - 0x20], 0x10312af3
sub dword [ebp - 0x20], 0xc3e4e6c5
mov dword [ebp - 0x1c], 0xb1b02a15
sub dword [ebp - 0x1c], 0xb1b02a15
lea eax, [ebp - 0x28]
push eax
mov eax, 0x321082c8
sub eax, 0x31d01268
add eax, dword [ebp - 0x18]
call dword [eax]
mov dword [ebp - 0x28], 0x82777a98
sub dword [ebp - 0x28], 0xe051142
mov dword [ebp - 0x24], 0xa630311f
add dword [ebp - 0x24], 0x9b3c3056
mov dword [ebp - 0x20], 0x8d52660b
add dword [ebp - 0x20], 0xd61d0661
mov dword [ebp - 0x1c], 0x7e5d75a3
sub dword [ebp - 0x1c], 0x7e5d75a3
lea ebx, [ebp - 0x28]
push ebx
push eax
mov eax, 0xc6c76450
add eax, 0x39790cb0
add eax, dword [ebp - 0x18]
call dword [eax]
push 0x40
push 0x1000
push 0x3c6df
push 0
call eax
mov ecx, 0x61c204d9
add ecx, 0x9e3e5a70
xor edi, edi
add edi, eax
mov esi, 0x12e2fb19
sub esi, 0x12a1fb19
add esi, dword [ebp - 0x18]
mov ebx, 0x73de1dc6
add dword [ebp - 0x10], 0x7ee21d26
mov edx, dword [esi]
mov dword [ebp - 4], 0xfa47af62
sub edx, ebx
xor dword [ebp - 0x10], 0x37abbd16
mov dword [edi], edx
add edi, 0x6a9c84d1
sub edi, 0x6a9c84cd
add esi, 0xf5992709
add esi, 0xa66d8fb
loop 0x40623a
add eax, 0xcc6af941
add eax, 0x339676b6
xor ebx, ebx
add ebx, eax
add eax, 5
mov ecx, 0x400000
add ecx, dword [ebp - 0x18]
call ebx
leave
ret

Function at 0x4065b0
Capabilities:
Terminate process

Disassembly:
cmp ecx, dword [0x40c17c]
jne 0x4065ba
repz ret
jmp fcn.00406941
Function at 0x401ea2
Capabilities:
Terminate process

Disassembly:
cmp ecx, dword [0x410284]
jne 0x401eac
repz ret
jmp fcn.00403e53

Function at 0x409420
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x40
pushal
call 0x40942f
pop dword [ebp - 0x30]
mov eax, 0x4ac1660b
sub eax, 0x4a80d1dc
sub dword [ebp - 0x30], eax
mov dword [ebp - 0x40], 0x556a51c4
sub dword [ebp - 0x40], 0x7180c79
mov dword [ebp - 0x3c], 0x4f48806a
sub dword [ebp - 0x3c], 0x1d153425
mov dword [ebp - 0x38], 0x29a49663
add dword [ebp - 0x38], 0x22a7adcb
mov dword [ebp - 0x34], 0xc3ceb76c
sub dword [ebp - 0x34], 0xc3ceb76c
lea eax, [ebp - 0x40]
push eax
mov eax, 0x89eb36d3
sub eax, 0x89aa667f
add eax, dword [ebp - 0x30]
call dword [eax]
mov dword [ebp - 0x40], 0xe7211de1
sub dword [ebp - 0x40], 0x72aeb48b
mov dword [ebp - 0x3c], 0x43f16d71
add dword [ebp - 0x3c], 0xfd7af404
mov dword [ebp - 0x38], 0x7e31ee3e
add dword [ebp - 0x38], 0xe53d7e2e
mov dword [ebp - 0x34], 0xa95cddfd
add dword [ebp - 0x34], 0x56a32203
lea ebx, [ebp - 0x40]
push ebx
push eax
mov eax, sym.imp.kernel32.dll_GetProcAddress
add eax, dword [ebp - 0x30]
call dword [eax]
push 0x40
push 0x1000
push 0x4049a
push 0
call eax
mov ecx, 0xd1486ce0
sub ecx, 0xd14809e1
mov edx, eax
mov ebx, 0xbb01299e
add ebx, 0x45408662
add ebx, dword [ebp - 0x30]
mov edi, 0xddc4a0be
sub edi, 0x38ca4d77
xor dword [ebp - 0x24], edi
mov esi, dword [ebx]
add dword [ebp - 0x14], 0x25e6db73
xor esi, edi
sub dword [ebp - 0xc], edi
mov dword [edx], esi
sub dword [ebp - 0x1c], 0x4081ecb9
add edx, 0x98941e6d
sub edx, 0x98941e69
add ebx, 4
loop 0x40954c
add eax, 0x17ecf
xor ebx, ebx
add ebx, eax
add eax, 5
mov ecx, 0x400000
add ecx, dword [ebp - 0x30]
call ebx
leave
ret
Function at 0x41797a
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x50
pushal
call 0x417989
pop dword [ebp - 0x40]
mov eax, 0x417989
sub dword [ebp - 0x40], eax
push 0x40
push 0x1000
push 0x52b4e
push 0
mov eax, sym.imp.kernel32.dll_VirtualAlloc
add eax, dword [ebp - 0x40]
call dword [eax]
mov ecx, 0x7ceedbe1
sub ecx, 0x7cee892a
xor ebx, ebx
add ebx, eax
mov edx, 0xaee8e1e4
add edx, 0x515f9c1c
add edx, dword [ebp - 0x40]
mov edi, 0x636d3ff5
add dword [ebp - 0x2c], 0x27c9eb4
mov esi, dword [edx]
sub dword [ebp - 0x2c], 0x9f51291e
xor esi, edi
add dword [ebp - 0x34], edi
mov dword [ebx], esi
xor dword [ebp - 0x30], esi
add ebx, 0xf4f56414
add ebx, 0xb0a9bf0
add edx, 0x2007179a
add edx, 0xdff8e86a
loop 0x4179da
add eax, 0x29283860
sub eax, 0x2926fab1
xor ebx, ebx
add ebx, eax
add eax, 0xada14ef0
add eax, 0x525eb115
mov ecx, 0x400000
add ecx, dword [ebp - 0x40]
call ebx
leave
ret

Function at 0x43fcae
Capabilities:
Encrypt data using dpapi

Disassembly:
push esi
push edi
push 0x46b5d8
push str.AdvApi32.dll
call main
mov edi, dword [sym.imp.kernel32.dll_GetProcAddress]
mov esi, eax
test esi, esi
js 0x43fcf1
push str.SystemFunction040
push dword [0x46b5d8]
call edi
push str.SystemFunction041
push dword [0x46b5d8]
mov dword [0x46b5e0], eax
call edi
mov dword [0x46b5e4], eax
jmp 0x43fcf6
mov eax, dword [0x46b5e4]
cmp dword [0x46b5e0], 0
je 0x43fd07
test eax, eax
jne 0x43fdae
push 0x46b5dc
push str.Crypt32.dll
call main
mov esi, eax
test esi, esi
js 0x43fdb8
push str.CryptProtectMemory
push dword [0x46b5dc]
call edi
cmp dword [0x46b5e0], 0
mov dword [0x46b5e8], eax
jne 0x43fd6c
test eax, eax
jne 0x43fd6c
call dword [sym.imp.kernel32.dll_GetLastError]
mov esi, eax
test esi, esi
jle 0x43fd56
movzx esi, si
or esi, 0x80070000
test esi, esi
js 0x43fd5d
mov esi, 0x80004005
push esi
push 0x28
push str.cryputil.cpp
call fcn.00403821
jmp 0x43fdb8
push str.CryptUnprotectMemory
push dword [0x46b5dc]
call edi
cmp dword [0x46b5e4], 0
mov dword [0x46b5ec], eax
jne 0x43fdae
test eax, eax
jne 0x43fdae
call dword [sym.imp.kernel32.dll_GetLastError]
mov esi, eax
test esi, esi
jle 0x43fda2
movzx esi, si
or esi, 0x80070000
test esi, esi
js 0x43fda9
mov esi, 0x80004005
push esi
push 0x2d
jmp 0x43fd60
mov dword [0x46b5f0], 1
pop edi
mov eax, esi
pop esi
ret
Function at 0x402ec8
Capabilities:
Generate random numbers using the delphi lcg

Disassembly:
push ebx
xor ebx, ebx
imul edx, dword [ebx + 0x467008], 0x8088405
inc edx
mov dword [ebx + 0x467008], edx
mul edx
mov eax, edx
pop ebx
ret

Function at 0x403320
Capabilities:
Query or enumerate registry value

Disassembly:
push ebp
mov ebp, esp
add esp, 0xfffffff4
movzx eax, word [0x467024]
mov dword [ebp - 8], eax
lea eax, [ebp - 4]
push eax
push 1
push 0
push 0x4033b8
push 0x80000002
call sub.advapi32.dll_RegOpenKeyExA
test eax, eax
jne 0x403398
xor eax, eax
push ebp
push 0x403391
push dword fs:[eax]
mov dword fs:[eax], esp
mov dword [ebp - 0xc], 4
lea eax, [ebp - 0xc]
push eax
lea eax, [ebp - 8]
push eax
push 0
push 0
push 0x4033d4
mov eax, dword [ebp - 4]
push eax
call sub.advapi32.dll_RegQueryValueExA
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x403398
mov eax, dword [ebp - 4]
push eax
call sub.advapi32.dll_RegCloseKey
ret
mov ax, word [0x467024]
and ax, 0xffc0
mov dx, word [ebp - 8]
and dx, 0x3f
or ax, dx
mov word [0x467024], ax
mov esp, ebp
pop ebp
ret

Function at 0x4040b4
Capabilities:
Write file on windows

Disassembly:
push ecx
cmp byte [0x521048], 0
je 0x404115
cmp word [0x52121c], 0xd7b2
jne 0x4040dd
cmp dword [0x521224], 0
jbe 0x4040dd
mov eax, 0x521218
call dword [0x521234]
push 0
lea eax, [esp + 4]
push eax
push 0x1e
push 0x467070
push 0xfffffffffffffff5
call sub.kernel32.dll_GetStdHandle
push eax
call sub.kernel32.dll_WriteFile
push 0
lea eax, [esp + 4]
push eax
push 2
push 0x40413c
push 0xfffffffffffffff5
call sub.kernel32.dll_GetStdHandle
push eax
call sub.kernel32.dll_WriteFile
pop edx
ret
cmp byte [0x467034], 0
jne 0x404131
push 0
push 0x467068
push 0x467070
push 0
call sub.user32.dll_MessageBoxA
pop edx
ret
Function at 0x405e8c
Capabilities:
Get geographical location

Disassembly:
push ebp
mov ebp, esp
add esp, 0xfffffff0
push ebx
xor edx, edx
mov dword [ebp - 0x10], edx
xor edx, edx
push ebp
push 0x405ef2
push dword fs:[edx]
mov dword fs:[edx], esp
push 7
lea edx, [ebp - 0xb]
push edx
push 0x1004
push eax
call sub.kernel32.dll_GetLocaleInfoA
lea eax, [ebp - 0x10]
lea edx, [ebp - 0xb]
mov ecx, 7
call fcn.004044a8
mov eax, dword [ebp - 0x10]
lea edx, [ebp - 4]
call fcn.00402ee4
mov ebx, eax
cmp dword [ebp - 4], 0
je 0x405edc
xor ebx, ebx
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x405ef9
lea eax, [ebp - 0x10]
call fcn.00404238
ret

Function at 0x40b010
Capabilities:
Get geographical location

Disassembly:
push ebp
mov ebp, esp
add esp, 0xffffff00
push ebx
push esi
mov esi, ecx
mov ebx, dword [ebp + 8]
push pe_nt_image_headers32
lea ecx, [ebp - 0x100]
push ecx
push edx
push eax
call sub.kernel32.dll_GetLocaleInfoA_1
test eax, eax
jle 0x40b049
mov ecx, eax
dec ecx
lea edx, [ebp - 0x100]
mov eax, ebx
call fcn.00404328
jmp 0x40b052
mov eax, ebx
mov edx, esi
call fcn.0040428c
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4

Function at 0x40b05c
Capabilities:
Get geographical location

Disassembly:
push ebx
push esi
push edi
push ecx
mov ebx, ecx
mov esi, edx
mov edi, eax
push 2
lea eax, [esp + 4]
push eax
push esi
push edi
call sub.kernel32.dll_GetLocaleInfoA_1
test eax, eax
jle 0x40b07d
mov al, byte [esp]
jmp 0x40b07f
mov eax, ebx
pop edx
pop edi
pop esi
pop ebx
ret

Function at 0x40b714
Capabilities:
Write file on windows

Disassembly:
add esp, 0xfffffbbc
push 0x400
lea ecx, [esp + 0x48]
call 0x40b57c
mov eax, dword [0x5200bc]
cmp byte [eax], 0
je 0x40b790
mov eax, dword [0x51fec8]
call fcn.00402d34
call fcn.00402bb4
lea eax, [esp + 0x44]
push eax
lea eax, [esp + 0x48]
push eax
call sub.user32.dll_CharToOemA
push 0
lea eax, [esp + 4]
push eax
lea eax, [esp + 0x4c]
call fcn.00408800
push eax
lea eax, [esp + 0x50]
push eax
push 0xfffffffffffffff4
call sub.kernel32.dll_GetStdHandle_1
push eax
call sub.kernel32.dll_WriteFile_1
push 0
lea eax, [esp + 4]
push eax
push 2
push 0x40b7d8
push 0xfffffffffffffff4
call sub.kernel32.dll_GetStdHandle_1
push eax
call sub.kernel32.dll_WriteFile_1
jmp 0x40b7c6
push 0x40
lea eax, [esp + 8]
push eax
mov eax, dword [0x51fe78]
mov eax, dword [eax + 4]
push eax
mov eax, dword [0x521664]
call fcn.004052f8
push eax
call sub.user32.dll_LoadStringA_1
push 0x2010
lea eax, [esp + 8]
push eax
lea eax, [esp + 0x4c]
push eax
push 0
call sub.user32.dll_MessageBoxA_1
add esp, 0x444
ret
Function at 0x40c034
Capabilities:
Get file version info

Disassembly:
push ebp
mov ebp, esp
add esp, 0xffffffe8
push ebx
xor edx, edx
mov dword [ebp - 8], edx
mov ebx, eax
xor eax, eax
push ebp
push 0x40c10a
push dword fs:[eax]
mov dword fs:[eax], esp
mov dword [ebp - 4], 0xffffffff
lea eax, [ebp - 8]
mov edx, ebx
call fcn.004042d0
lea eax, [ebp - 8]
call fcn.00404748
lea eax, [ebp - 0xc]
push eax
mov eax, dword [ebp - 8]
call fcn.004046f8
push eax
call sub.version.dll_GetFileVersionInfoSizeA
mov ebx, eax
test ebx, ebx
je 0x40c0f4
mov eax, ebx
call fcn.00402a28
mov dword [ebp - 0x10], eax
xor eax, eax
push ebp
push 0x40c0ed
push dword fs:[eax]
mov dword fs:[eax], esp
mov eax, dword [ebp - 0x10]
push eax
push ebx
mov eax, dword [ebp - 0xc]
push eax
mov eax, dword [ebp - 8]
call fcn.004046f8
push eax
call sub.version.dll_GetFileVersionInfoA
test eax, eax
je 0x40c0d7
lea eax, [ebp - 0x18]
push eax
lea eax, [ebp - 0x14]
push eax
push 0x40c11c
mov eax, dword [ebp - 0x10]
push eax
call sub.version.dll_VerQueryValueA
test eax, eax
je 0x40c0d7
mov eax, dword [ebp - 0x14]
mov eax, dword [eax + 8]
mov dword [ebp - 4], eax
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x40c0f4
mov eax, dword [ebp - 0x10]
call fcn.00402a58
ret
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x40c111
lea eax, [ebp - 8]
call fcn.00404238
ret

Function at 0x40c670
Capabilities:
Get geographical location

Disassembly:
push ebp
mov ebp, esp
add esp, 0xfffffff4
push ebx
xor edx, edx
mov dword [ebp - 0xc], edx
xor edx, edx
push ebp
push 0x40c6d4
push dword fs:[edx]
mov dword fs:[edx], esp
push 7
lea edx, [ebp - 7]
push edx
push 0x1004
push eax
call sub.kernel32.dll_GetLocaleInfoA_1
lea eax, [ebp - 0xc]
lea edx, [ebp - 7]
mov ecx, 7
call fcn.004044a8
mov eax, dword [ebp - 0xc]
push eax
call sub.kernel32.dll_GetACP
mov edx, eax
pop eax
call fcn.00408334
mov ebx, eax
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x40c6db
lea eax, [ebp - 0xc]
call fcn.00404238
ret
Function at 0x41a950
Capabilities:
Allocate or change rwx memory

Disassembly:
push ebp
mov ebp, esp
add esp, 0xfffffff4
push ebx
push esi
lea ebx, [ebp - 0xc]
mov esi, 0x521884
cmp dword [esi], 0
jne 0x41a9f6
push 0x40
push 0x1000
push 0x1000
push 0
call sub.kernel32.dll_VirtualAlloc_1
mov dword [ebp - 8], eax
mov eax, dword [ebp - 8]
mov edx, dword [0x521880]
mov dword [eax], edx
mov eax, dword [ebp - 8]
lea edx, [eax + 4]
mov eax, 0x4673f0
mov ecx, 2
call fcn.00402c48
mov edx, 0x41a928
mov eax, dword [ebp - 8]
add eax, 5
call fcn.0041a948
mov edx, dword [ebp - 8]
mov dword [edx + 6], eax
mov eax, dword [ebp - 8]
add eax, 0xa
mov dword [ebx], eax
mov eax, dword [ebx]
mov byte [eax], 0xe8
mov eax, dword [ebp - 8]
lea edx, [eax + 4]
mov eax, dword [ebx]
call fcn.0041a948
mov edx, dword [ebx]
mov dword [edx + 1], eax
mov eax, dword [ebx]
mov edx, dword [esi]
mov dword [eax + 5], edx
mov eax, dword [ebx]
mov dword [esi], eax
add dword [ebx], 0xd
mov eax, dword [ebx]
sub eax, dword [ebp - 8]
cmp eax, 0xffc
jl 0x41a9bd
mov eax, dword [ebp - 8]
mov dword [0x521880], eax
mov eax, dword [esi]
mov dword [ebp - 4], eax
mov eax, dword [esi]
mov dword [ebx], eax
mov eax, dword [ebx]
mov eax, dword [eax + 5]
mov dword [esi], eax
mov eax, dword [ebx]
mov edx, dword [ebp + 8]
mov dword [eax + 5], edx
mov edx, dword [ebp + 0xc]
mov dword [eax + 9], edx
mov eax, dword [ebp - 4]
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 8

Function at 0x41beac
Capabilities:
Encode data using xor

Disassembly:
mov ecx, edx
mov edx, eax
xor eax, eax
rol ax, 5
xor al, byte [edx]
inc edx
dec ecx
jne 0x41beb2
ret

Function at 0x41e330
Capabilities:
Get system information on windows

Disassembly:
push ebp
mov ebp, esp
add esp, 0xffffffd4
mov dword [ebp - 8], edx
mov dword [ebp - 4], eax
lea eax, [ebp - 0x2c]
push eax
call sub.kernel32.dll_GetSystemInfo
mov edx, dword [ebp - 4]
mov ecx, dword [ebp - 8]
dec ecx
js 0x41e381
lea eax, [ebp - 0x2c]
cmp word [eax + 0x20], 3
je 0x41e368
mov eax, dword [edx + ecx*4]
bswap eax
shr eax, 8
mov dword [edx + ecx*4], eax
dec ecx
jns 0x41e358
jmp 0x41e381
push ebx
xor ebx, ebx
mov eax, dword [edx + ecx*4]
mov bh, al
mov bl, ah
shr eax, 0x10
shl ebx, 8
mov bl, al
mov dword [edx + ecx*4], ebx
dec ecx
jns 0x41e369
pop ebx
mov esp, ebp
pop ebp
ret
Function at 0x428c78
Capabilities:
Enumerate gui resources

Disassembly:
mov byte [eax + 0xc], 0
mov byte [eax + 0xd], 0
xor edx, edx
mov dword [eax + 4], edx
push eax
push 0x428bc4
call sub.user32.dll_EnumWindows
ret

Function at 0x428d98
Capabilities:
Check for time delay via gettickcount

Disassembly:
push ebp
mov ebp, esp
push 0
push ebx
push esi
mov esi, eax
xor eax, eax
push ebp
push 0x428e15
push dword fs:[eax]
mov dword fs:[eax], esp
mov eax, esi
call fcn.004287f8
call sub.kernel32.dll_GetTickCount
mov ebx, eax
push 0
call sub.kernel32.dll_Sleep
call sub.kernel32.dll_GetTickCount
sub eax, ebx
cmp eax, 0x3e8
jbe 0x428dbd
lea ecx, [ebp - 4]
xor edx, edx
mov eax, esi
call fcn.004283f8
cmp dword [ebp - 4], 0
je 0x428dff
push 0
push 9
mov eax, dword [ebp - 4]
call fcn.004046f8
push eax
mov eax, dword [esi + 0x1c]
mov edx, dword [eax]
call dword [edx + 0xc]
push eax
call sub.user32.dll_WinHelpA
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x428e1c
lea eax, [ebp - 4]
call fcn.00404238
ret

Function at 0x42bac0
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
add esp, 0xffffffd8
push ebx
push esi
push edi
mov esi, eax
lea edi, [ebp - 9]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
mov dword [ebp - 0x10], edx
xor eax, eax
mov dword [ebp - 0x18], eax
cmp dword [0x521ae8], 0
je 0x42bc0f
push 0x11
call sub.user32.dll_GetKeyState
test ax, 0x8000
setne al
mov edx, dword [0x52005c]
mov edx, dword [edx]
xor al, byte [edx + 0xb4]
je 0x42bc0f
mov eax, dword [0x521aec]
mov edx, dword [eax]
call dword [edx + 8]
mov eax, dword [0x521ae8]
mov ebx, dword [eax + 8]
dec ebx
test ebx, ebx
jl 0x42bbde
inc ebx
xor edi, edi
mov edx, edi
mov eax, dword [0x521ae8]
call fcn.00413e3c
mov dword [ebp - 0x14], eax
mov eax, dword [ebp - 0x14]
cmp eax, dword [ebp - 0x10]
je 0x42bbd6
mov eax, dword [ebp - 0x14]
cmp byte [eax + 0x1a6], 0
je 0x42bbd6
mov eax, dword [ebp - 0x14]
mov edx, dword [eax]
call dword [edx + 0x50]
test al, al
je 0x42bbd6
mov eax, dword [ebp - 0x14]
call fcn.00434658
push eax
call sub.user32.dll_IsWindowVisible
test eax, eax
je 0x42bbd6
push ebp
call fcn.0042ba7c
pop ecx
test al, al
jne 0x42bbd6
mov eax, dword [ebp - 0x10]
mov eax, dword [eax + 0xa0]
cmp eax, dword [ebp - 0x14]
jne 0x42bb92
mov eax, dword [ebp - 0x14]
call fcn.00433188
dec eax
jle 0x42bbd6
mov byte [ebp - 1], 1
lea eax, [ebp - 9]
push eax
lea eax, [ebp - 1]
push eax
lea ecx, [ebp - 0x28]
mov edx, dword [ebp - 0x10]
mov eax, dword [ebp - 0x14]
mov si, 0xffbd
call fcn.004036b4
cmp byte [ebp - 1], 0
je 0x42bbd6
push dword [ebp - 5]
push dword [ebp - 9]
lea eax, [ebp - 0x28]
push eax
call sub.user32.dll_PtInRect
test eax, eax
je 0x42bbd6
mov edx, dword [ebp - 0x14]
mov eax, dword [0x521aec]
call fcn.0042b248
inc edi
dec ebx
jne 0x42bb25
mov eax, dword [0x521aec]
cmp dword [eax + 8], 0
jle 0x42bbf6
mov eax, dword [0x521aec]
call fcn.0042b2d8
mov dword [ebp - 0x18], eax
cmp dword [ebp - 0x18], 0
je 0x42bc0f
push ebp
mov eax, dword [ebp - 0x18]
call fcn.0042b8e4
pop ecx
test al, al
jne 0x42bc0f
xor eax, eax
mov dword [ebp - 0x18], eax
mov eax, dword [ebp - 0x18]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret