joyce8/EMBER2024-capa huggingface dataset:
Function at 0x1000549d
Capabilities:
Query environment variable

Disassembly:
push ebp
mov ebp, esp
push ecx
push esi
mov esi, edx
xor edx, edx
push edi
mov edi, ecx
mov eax, esi
mov dword [esi + 0x10], edx
cmp dword [esi + 0x14], 8
jb 0x100054b6
mov eax, dword [esi]
push edx
push edx
xor ecx, ecx
push edi
mov word [eax], cx
call dword [sym.imp.KERNEL32.dll_GetEnvironmentVariableW]
mov dword [ebp - 4], eax
test eax, eax
jne 0x100054ff
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0xcb
je 0x100054fb
call dword [sym.imp.KERNEL32.dll_GetLastError]
movzx ecx, ax
or ecx, 0x80070000
test eax, eax
cmovle ecx, eax
push ecx
push edi
push str.Failed_to_read_environment_variable___s___HRESULT:_0x_X
call fcn.10004b4e
add esp, 0xc
xor al, al
jmp 0x1000555f
push ebx
xor ecx, ecx
push 2
pop edx
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.10039c6f
pop ecx
push dword [ebp - 4]
mov ebx, eax
push ebx
push edi
call dword [sym.imp.KERNEL32.dll_GetEnvironmentVariableW]
test eax, eax
jne 0x1000554d
call dword [sym.imp.KERNEL32.dll_GetLastError]
movzx ecx, ax
or ecx, 0x80070000
test eax, eax
cmovle ecx, eax
push ecx
push edi
push str.Failed_to_read_environment_variable___s___HRESULT:_0x_X
call fcn.10004b4e
add esp, 0xc
xor al, al
jmp 0x1000555e
push ebx
mov ecx, esi
call fcn.1000161a
push ebx
call fcn.100395bc
pop ecx
mov al, 1
pop ebx
pop edi
pop esi
leave
ret
Function at 0x10005878
Capabilities:
Enumerate files on windows

Disassembly:
push 0x29c
mov eax, 0x1005b2f4
call fcn.10039cce
mov esi, edx
mov edi, dword [ebp + 0xc]
push ecx
lea ecx, [ebp - 0x40]
call fcn.100031ab
xor ebx, ebx
lea ecx, [ebp - 0x40]
mov dword [ebp - 4], ebx
call fcn.100082cb
test al, al
jne 0x100058cd
lea ecx, [ebp - 0x40]
call fcn.10008320
test al, al
jne 0x100058bb
cmp dword [ebp - 0x30], 0x104
jb 0x100058cd
xor dl, dl
lea ecx, [ebp - 0x40]
call fcn.10005563
test al, al
je 0x100059ae
lea eax, [ebp - 0x40]
push eax
lea ecx, [ebp - 0x58]
call fcn.100031ab
mov byte [ebp - 4], 1
cmp dword [esi + 0x14], 8
jb 0x100058e5
mov esi, dword [esi]
mov edx, esi
lea ecx, [ebp - 0x58]
call fcn.100022c0
push 0x250
lea eax, [ebp - 0x2a8]
push ebx
push eax
call fcn.1003aeb0
add esp, 0xc
lea ecx, [ebp - 0x2a8]
cmp dword [ebp - 0x44], 8
lea eax, [ebp - 0x58]
cmovae eax, dword [ebp - 0x58]
push ebx
push ebx
push ebx
push ecx
push ebx
push eax
call dword [sym.imp.KERNEL32.dll_FindFirstFileExW]
mov esi, eax
cmp esi, 0xffffffff
je 0x100059a6
test byte [ebp - 0x2a8], 0x10
je 0x1000598d
xor eax, eax
mov dword [ebp - 0x18], ebx
mov word [ebp - 0x28], ax
lea ecx, [ebp - 0x28]
lea eax, [ebp - 0x27c]
mov dword [ebp - 0x14], 7
push eax
call fcn.1000161a
mov edx, 0x10069f50
mov byte [ebp - 4], 2
lea ecx, [ebp - 0x28]
call fcn.10005be7
test al, al
je 0x10005981
mov edx, 0x1006ae70
lea ecx, [ebp - 0x28]
call fcn.10005be7
test al, al
je 0x10005981
lea eax, [ebp - 0x28]
mov ecx, edi
push eax
call fcn.1000275d
lea ecx, [ebp - 0x28]
mov byte [ebp - 4], 1
call fcn.100015ef
lea eax, [ebp - 0x2a8]
push eax
push esi
call dword [sym.imp.KERNEL32.dll_FindNextFileW]
test eax, eax
jne 0x10005928
push esi
call dword [sym.imp.KERNEL32.dll_FindClose]
lea ecx, [ebp - 0x58]
call fcn.100015ef
lea ecx, [ebp - 0x40]
call fcn.100015ef
call fcn.10039c8c
ret 8
Function at 0x1000a250
Capabilities:
Delete directory
Delete file
Enumerate files on windows

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x1005bea7
mov eax, dword fs:[0]
push eax
sub esp, 0x29c
mov eax, dword [0x10097048]
xor eax, ebp
mov dword [ebp - 0x10], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov esi, dword [ebp + 8]
lea ecx, [ebp - 0x278]
push 1
push 0x1006ae78
mov dword [ebp - 0x278], 0
mov dword [ebp - 0x268], 0
mov dword [ebp - 0x264], 0
call fcn.10008770
mov dword [ebp - 4], 0
lea eax, [ebp - 0x278]
push eax
lea eax, [ebp - 0x2a8]
push esi
push eax
call fcn.1000c030
add esp, 0xc
mov byte [ebp - 4], 1
cmp dword [eax + 0x14], 8
jb 0x1000a2db
mov eax, dword [eax]
lea ecx, [ebp - 0x260]
push ecx
push eax
call dword [sym.imp.KERNEL32.dll_FindFirstFileW]
mov edi, eax
mov byte [ebp - 4], 0
lea ecx, [ebp - 0x2a8]
call fcn.100015ef
mov dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x278]
call fcn.100015ef
cmp edi, 0xffffffff
je 0x1000a3e1
mov ebx, dword [sym.imp.KERNEL32.dll_FindNextFileW]
nop dword [eax + eax]
test byte [ebp - 0x260], 0x10
jne 0x1000a3c8
lea eax, [ebp - 0x234]
mov dword [ebp - 0x278], 0
mov dword [ebp - 0x268], 0
lea edx, [eax + 2]
mov dword [ebp - 0x264], 0
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x1000a354
sub eax, edx
lea ecx, [ebp - 0x278]
sar eax, 1
push eax
lea eax, [ebp - 0x234]
push eax
call fcn.10008770
mov dword [ebp - 4], 2
lea eax, [ebp - 0x278]
push eax
lea eax, [ebp - 0x290]
push esi
push eax
call fcn.1000c030
add esp, 0xc
mov byte [ebp - 4], 3
cmp dword [eax + 0x14], 8
jb 0x1000a3a0
mov eax, dword [eax]
push eax
call dword [sym.imp.KERNEL32.dll_DeleteFileW]
mov byte [ebp - 4], 2
lea ecx, [ebp - 0x290]
call fcn.100015ef
mov dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x278]
call fcn.100015ef
lea eax, [ebp - 0x260]
push eax
push edi
call ebx
test eax, eax
jne 0x1000a320
push edi
call dword [sym.imp.KERNEL32.dll_FindClose]
cmp dword [esi + 0x14], 8
mov eax, esi
jb 0x1000a3eb
mov eax, dword [esi]
push eax
call dword [sym.imp.KERNEL32.dll_RemoveDirectoryW]
test eax, eax
jne 0x1000a490
push 0xe
push str.pending_delete
lea ecx, [ebp - 0x278]
mov dword [ebp - 0x278], eax
mov dword [ebp - 0x268], eax
mov dword [ebp - 0x264], eax
call fcn.10008770
mov dword [ebp - 4], 4
lea eax, [ebp - 0x278]
push eax
lea eax, [ebp - 0x290]
push esi
push eax
call fcn.1000c030
add esp, 0xc
mov byte [ebp - 4], 5
cmp dword [eax + 0x14], 8
jb 0x1000a448
mov eax, dword [eax]
push 0
push 0x80
push 1
push 0
push 0
push 0x40000000
push eax
call dword [sym.imp.KERNEL32.dll_CreateFileW]
mov esi, eax
mov byte [ebp - 4], 4
lea ecx, [ebp - 0x290]
call fcn.100015ef
mov dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x278]
call fcn.100015ef
cmp esi, 0xffffffff
je 0x1000a490
push esi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.100398db
mov esp, ebp
pop ebp
ret 4
Function at 0x1000c720
Capabilities:
Write file on windows

Disassembly:
push ebp
mov ebp, esp
sub esp, 8
mov eax, dword [0x10097048]
xor eax, ebp
mov dword [ebp - 4], eax
mov eax, dword [ebp + 8]
push esi
mov esi, dword [ebp + 0xc]
push edi
cmp dword [eax + 0x14], 8
jb 0x1000c740
mov eax, dword [eax]
push 0
push 0x80
push 2
push 0
push 0
push 0x40000000
push eax
call dword [sym.imp.KERNEL32.dll_CreateFileW]
mov edi, eax
cmp edi, 0xffffffff
jne 0x1000c782
call dword [sym.imp.KERNEL32.dll_GetLastError]
test eax, eax
jle 0x1000c7d2
movzx eax, ax
pop edi
or eax, 0x80070000
pop esi
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.100398db
mov esp, ebp
pop ebp
ret
push 0
lea eax, [ebp - 8]
push eax
push dword [ebp + 0x10]
push esi
push edi
call dword [sym.imp.KERNEL32.dll_WriteFile]
test eax, eax
jne 0x1000c7c5
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov esi, eax
test esi, esi
jle 0x1000c7ac
movzx esi, si
or esi, 0x80070000
push edi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
pop edi
mov eax, esi
pop esi
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.100398db
mov esp, ebp
pop ebp
ret
push edi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
test eax, eax
je 0x1000c760
xor eax, eax
mov ecx, dword [ebp - 4]
pop edi
xor ecx, ebp
pop esi
call fcn.100398db
mov esp, ebp
pop ebp
ret

Function at 0x1000c7f0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 8
mov eax, dword [0x10097048]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
push edi
mov edi, dword [ebp + 8]
lea eax, [ebp - 8]
push eax
push dword [edi]
call dword [sym.imp.OLEAUT32.dll_SafeArrayUnaccessData]
mov eax, dword [edi]
xor ecx, ecx
mov ebx, dword [eax + 0x10]
test ebx, ebx
jle 0x1000c83d
push esi
nop dword [eax]
mov eax, ecx
mov esi, dword [ebp - 8]
cdq
idiv dword [0x10097004]
mov eax, dword [section..data]
mov al, byte [edx + eax]
xor byte [esi + ecx], al
inc ecx
cmp ecx, ebx
jl 0x1000c820
pop esi
push dword [edi]
call dword [sym.imp.OLEAUT32.dll_SafeArrayGetElement]
mov ecx, dword [ebp - 4]
pop edi
xor ecx, ebp
pop ebx
call fcn.100398db
mov esp, ebp
pop ebp
ret
Function at 0x10036f99
Capabilities:
Get geographical location

Disassembly:
push ebp
mov ebp, esp
push ecx
push esi
push 2
lea eax, [ebp - 4]
push eax
push 0x20000001
push str._x_sys_default_locale
call dword [sym.imp.KERNEL32.dll_GetLocaleInfoEx]
mov esi, dword [ebp + 0xc]
neg eax
sbb eax, eax
xor ecx, ecx
and eax, dword [ebp - 4]
push ecx
push ecx
push esi
push eax
push dword [ebp + 8]
mov dword [ebp - 4], eax
push ecx
push 0x1300
call dword [sym.imp.KERNEL32.dll_FormatMessageA]
push eax
push dword [esi]
call fcn.10036f75
pop esi
leave
ret 8

Function at 0x100389db
Capabilities:
Read file on windows

Disassembly:
push ebp
mov ebp, esp
push ecx
mov eax, dword [ebp + 0x10]
push ebx
mov ebx, ecx
push edi
mov edi, dword [ebp + 0xc]
test eax, eax
jg 0x100389fc
jl 0x100389f3
test edi, edi
jne 0x100389fc
xor eax, eax
xor edx, edx
jmp 0x10038abd
cmp dword [ebx + 0x38], 0
je 0x10038a11
push eax
push edi
push dword [ebp + 8]
call fcn.10038ac3
jmp 0x10038abd
mov eax, dword [ebx + 0x1c]
push esi
mov esi, edi
mov ecx, dword [eax]
test ecx, ecx
je 0x10038a58
mov eax, dword [ebx + 0x2c]
mov eax, dword [eax]
mov dword [ebp - 4], eax
test eax, eax
je 0x10038a58
cmp eax, edi
jb 0x10038a32
mov eax, edi
mov dword [ebp - 4], edi
push eax
push ecx
push dword [ebp + 8]
call fcn.1003a930
mov ecx, dword [ebp - 4]
add esp, 0xc
mov eax, dword [ebp + 8]
sub esi, ecx
add eax, ecx
mov dword [ebp - 4], eax
mov eax, dword [ebx + 0x2c]
sub dword [eax], ecx
mov eax, dword [ebx + 0x1c]
add dword [eax], ecx
jmp 0x10038a5e
mov eax, dword [ebp + 8]
mov dword [ebp - 4], eax
cmp dword [ebx + 0x4c], 0
je 0x10038ab2
mov ecx, ebx
call fcn.1003824b
mov ecx, dword [ebp - 4]
mov edx, esi
mov eax, 0xfff
cmp esi, eax
jbe 0x10038a9d
push dword [ebx + 0x4c]
push eax
push 1
push ecx
call fcn.10045a41
mov ecx, dword [ebp - 4]
sub esi, eax
add ecx, eax
add esp, 0x10
mov dword [ebp - 4], ecx
mov edx, esi
cmp eax, 0xfff
jne 0x10038ab2
jmp 0x10038a70
test edx, edx
je 0x10038ab2
push dword [ebx + 0x4c]
push esi
push 1
push ecx
call fcn.10045a41
add esp, 0x10
sub esi, eax
mov edx, dword [ebp + 0x10]
sub edi, esi
mov eax, edi
sbb edx, 0
pop esi
pop edi
pop ebx
leave
ret 0xc
Function at 0x10038bb2
Capabilities:
Write file on windows

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x18
push ebx
mov ebx, ecx
cmp dword [ebx + 0x38], 0
je 0x10038bd4
push dword [ebp + 0x10]
push dword [ebp + 0xc]
push dword [ebp + 8]
call fcn.10038c97
jmp 0x10038c92
mov eax, dword [ebx + 0x20]
push esi
mov esi, dword [ebp + 0xc]
push edi
mov ecx, dword [eax]
lea eax, [ebx + 0x30]
mov edi, dword [ebp + 0x10]
mov dword [ebp - 0x14], esi
mov dword [ebp - 0x18], edi
mov dword [ebp - 0x10], ecx
mov dword [ebp - 0xc], eax
test ecx, ecx
je 0x10038bfa
mov eax, dword [eax]
mov ecx, dword [eax]
jmp 0x10038bff
xor ecx, ecx
mov dword [ebp - 0xc], eax
mov eax, ecx
cdq
mov dword [ebp - 4], eax
mov ecx, edx
mov dword [ebp - 8], ecx
test edi, edi
jl 0x10038c5f
jg 0x10038c14
test esi, esi
je 0x10038c5f
test ecx, ecx
jl 0x10038c5a
jg 0x10038c1e
test eax, eax
je 0x10038c5a
cmp edi, ecx
jg 0x10038c30
jl 0x10038c28
cmp esi, eax
jae 0x10038c30
mov eax, esi
mov dword [ebp - 4], esi
mov dword [ebp - 8], edi
push eax
push dword [ebp + 8]
push dword [ebp - 0x10]
call fcn.1003a930
mov eax, dword [ebp - 0xc]
add esp, 0xc
mov edx, dword [ebp - 4]
mov ecx, dword [ebp + 8]
add ecx, edx
sub esi, edx
mov eax, dword [eax]
sbb edi, dword [ebp - 8]
sub dword [eax], edx
mov eax, dword [ebx + 0x20]
add dword [eax], edx
jmp 0x10038c62
mov ecx, dword [ebp + 8]
jmp 0x10038c6c
mov ecx, dword [ebp + 8]
test edi, edi
jl 0x10038c86
jg 0x10038c6c
test esi, esi
je 0x10038c86
cmp dword [ebx + 0x4c], 0
je 0x10038c86
push dword [ebx + 0x4c]
push esi
push 1
push ecx
call fcn.1004602c
add esp, 0x10
sub esi, eax
sbb edi, 0
mov eax, dword [ebp - 0x14]
mov edx, dword [ebp - 0x18]
sub eax, esi
sbb edx, edi
pop edi
pop esi
pop ebx
leave
ret 0xc

Function at 0x1004bf75
Capabilities:
Print debug messages

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
pop ebp
jmp fcn.1004bef7

Function at 0x1004f9cc
Capabilities:
Read file on windows

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
pop ebp
jmp fcn.1004f842

Function at 0x100534a6
Capabilities:
Set environment variable

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
pop ebp
jmp fcn.10053123

Function at 0x1005a5d0
Capabilities:
Parse pe header

Disassembly:
push ebp
mov ebp, esp
mov eax, dword [ebp + 8]
mov ecx, 0x5a4d
cmp word [eax], cx
jne 0x1005a5fd
mov ecx, dword [eax + 0x3c]
add ecx, eax
cmp dword [ecx], 0x4550
jne 0x1005a5fd
mov edx, 0x10b
xor eax, eax
cmp word [ecx + 0x18], dx
sete al
pop ebp
ret
xor eax, eax
pop ebp
ret
Function at 0x402e74
Capabilities:
Accept command line arguments

Disassembly:
push ebp
mov ebp, esp
add esp, 0xfffffff8
push ebx
xor eax, eax
mov dword [ebp - 8], eax
xor eax, eax
push ebp
push 0x402ecd
push dword fs:[eax]
mov dword fs:[eax], esp
xor ebx, ebx
call sub.kernel32.dll_GetCommandLineA
lea edx, [ebp - 8]
call fcn.00402d10
mov dword [ebp - 4], eax
lea edx, [ebp - 8]
mov eax, dword [ebp - 4]
call fcn.00402d10
mov dword [ebp - 4], eax
cmp dword [ebp - 8], 0
je 0x402eb7
inc ebx
jmp 0x402ea0
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x402ed4
lea eax, [ebp - 8]
call fcn.004044c4
ret

Function at 0x402edc
Capabilities:
Accept command line arguments

Disassembly:
push ebx
push esi
add esp, 0xfffffef4
mov ebx, edx
mov esi, eax
mov eax, ebx
call fcn.004044c4
test esi, esi
jne 0x402f13
push 0x105
lea eax, [esp + 8]
push eax
push 0
call sub.kernel32.dll_GetModuleFileNameA
mov ecx, eax
lea edx, [esp + 4]
mov eax, ebx
call fcn.004045b4
jmp 0x402f34
call sub.kernel32.dll_GetCommandLineA
mov dword [esp], eax
mov edx, ebx
mov eax, dword [esp]
call fcn.00402d10
mov dword [esp], eax
test esi, esi
je 0x402f34
cmp dword [ebx], 0
je 0x402f34
dec esi
jmp 0x402f1b
add esp, 0x10c
pop esi
pop ebx
ret

Function at 0x4035a4
Capabilities:
Query or enumerate registry value

Disassembly:
push ebp
mov ebp, esp
add esp, 0xfffffff4
movzx eax, word [0x468020]
mov dword [ebp - 8], eax
lea eax, [ebp - 4]
push eax
push 1
push 0
push 0x40363c
push 0x80000002
call sub.advapi32.dll_RegOpenKeyExA
test eax, eax
jne 0x40361c
xor eax, eax
push ebp
push 0x403615
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 0x403658
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 0x40361c
mov eax, dword [ebp - 4]
push eax
call sub.advapi32.dll_RegCloseKey
ret
mov ax, word [0x468020]
and ax, 0xffc0
mov dx, word [ebp - 8]
and dx, 0x3f
or ax, dx
mov word [0x468020], ax
mov esp, ebp
pop ebp
ret

Function at 0x404340
Capabilities:
Write file on windows

Disassembly:
push ecx
cmp byte [0x46a04c], 0
je 0x4043a1
cmp word [0x46a220], 0xd7b2
jne 0x404369
cmp dword [0x46a228], 0
jbe 0x404369
mov eax, 0x46a21c
call dword [0x46a238]
push 0
lea eax, [esp + 4]
push eax
push 0x1e
push 0x46806c
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 0x4043c8
push 0xfffffffffffffff5
call sub.kernel32.dll_GetStdHandle
push eax
call sub.kernel32.dll_WriteFile
pop edx
ret
cmp byte [0x468030], 0
jne 0x4043bd
push 0
push 0x468064
push 0x46806c
push 0
call sub.user32.dll_MessageBoxA
pop edx
ret
Function at 0x406544
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 0x4065aa
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.00404734
mov eax, dword [ebp - 0x10]
lea edx, [ebp - 4]
call fcn.00403168
mov ebx, eax
cmp dword [ebp - 4], 0
je 0x406594
xor ebx, ebx
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x4065b1
lea eax, [ebp - 0x10]
call fcn.004044c4
ret

Function at 0x40b984
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 0x40b9bd
mov ecx, eax
dec ecx
lea edx, [ebp - 0x100]
mov eax, ebx
call fcn.004045b4
jmp 0x40b9c6
mov eax, ebx
mov edx, esi
call fcn.00404518
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4

Function at 0x40b9d0
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 0x40b9f1
mov al, byte [esp]
jmp 0x40b9f3
mov eax, ebx
pop edx
pop edi
pop esi
pop ebx
ret

Function at 0x40c088
Capabilities:
Write file on windows

Disassembly:
add esp, 0xfffffbbc
push 0x400
lea ecx, [esp + 0x48]
call 0x40bef0
mov eax, dword [0x469288]
cmp byte [eax], 0
je 0x40c104
mov eax, dword [0x469080]
call fcn.00402fd4
call fcn.00402c3c
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.00409140
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 0x40c14c
push 0xfffffffffffffff4
call sub.kernel32.dll_GetStdHandle_1
push eax
call sub.kernel32.dll_WriteFile_1
jmp 0x40c13a
push 0x40
lea eax, [esp + 8]
push eax
mov eax, dword [0x46902c]
mov eax, dword [eax + 4]
push eax
mov eax, dword [0x46a668]
call fcn.00405994
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 0x40c9fc
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 0x40cad2
push dword fs:[eax]
mov dword fs:[eax], esp
mov dword [ebp - 4], 0xffffffff
lea eax, [ebp - 8]
mov edx, ebx
call fcn.0040455c
lea eax, [ebp - 8]
call fcn.004049d4
lea eax, [ebp - 0xc]
push eax
mov eax, dword [ebp - 8]
call fcn.00404984
push eax
call sub.version.dll_GetFileVersionInfoSizeA
mov ebx, eax
test ebx, ebx
je 0x40cabc
mov eax, ebx
call fcn.00402ab0
mov dword [ebp - 0x10], eax
xor eax, eax
push ebp
push 0x40cab5
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.00404984
push eax
call sub.version.dll_GetFileVersionInfoA
test eax, eax
je 0x40ca9f
lea eax, [ebp - 0x18]
push eax
lea eax, [ebp - 0x14]
push eax
push 0x40cae4
mov eax, dword [ebp - 0x10]
push eax
call sub.version.dll_VerQueryValueA
test eax, eax
je 0x40ca9f
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 0x40cabc
mov eax, dword [ebp - 0x10]
call fcn.00402ae0
ret
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x40cad9
lea eax, [ebp - 8]
call fcn.004044c4
ret

Function at 0x40d038
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 0x40d09c
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.00404734
mov eax, dword [ebp - 0xc]
push eax
call sub.kernel32.dll_GetACP
mov edx, eax
pop eax
call fcn.00408ba8
mov ebx, eax
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x40d0a3
lea eax, [ebp - 0xc]
call fcn.004044c4
ret
Function at 0x41fb7c
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, 0x46a888
cmp dword [esi], 0
jne 0x41fc22
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 [0x46a884]
mov dword [eax], edx
mov eax, dword [ebp - 8]
lea edx, [eax + 4]
mov eax, 0x468494
mov ecx, 2
call fcn.00402cd0
mov edx, 0x41fb54
mov eax, dword [ebp - 8]
add eax, 5
call fcn.0041fb74
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.0041fb74
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 0x41fbe9
mov eax, dword [ebp - 8]
mov dword [0x46a884], 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 0x421180
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 0x421186
ret

Function at 0x423640
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 0x423691
lea eax, [ebp - 0x2c]
cmp word [eax + 0x20], 3
je 0x423678
mov eax, dword [edx + ecx*4]
bswap eax
shr eax, 8
mov dword [edx + ecx*4], eax
dec ecx
jns 0x423668
jmp 0x423691
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 0x423679
pop ebx
mov esp, ebp
pop ebp
ret