joyce8/EMBER2024-capa huggingface dataset:
Function at 0x404a60
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 0x404ac6
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.0040401c
mov eax, dword [ebp - 0x10]
lea edx, [ebp - 4]
call fcn.00402dcc
mov ebx, eax
cmp dword [ebp - 4], 0
je 0x404ab0
xor ebx, ebx
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x404acd
lea eax, [ebp - 0x10]
call fcn.00403dd4
ret

Function at 0x4068f8
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 0x406931
mov ecx, eax
dec ecx
lea edx, [ebp - 0x100]
mov eax, ebx
call fcn.00403ec4
jmp 0x40693a
mov eax, ebx
mov edx, esi
call fcn.00403e28
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4

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

Function at 0x406ffc
Capabilities:
Write file on windows

Disassembly:
add esp, 0xfffffbbc
push 0x400
lea ecx, [esp + 0x48]
call 0x406e64
mov eax, dword [0x4093ac]
cmp byte [eax], 0
je 0x407078
mov eax, dword [0x409304]
call fcn.00402d3c
call fcn.004029a8
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.00405dcc
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 0x4070c0
push 0xfffffffffffffff4
call sub.kernel32.dll_GetStdHandle_1
push eax
call sub.kernel32.dll_WriteFile_1
jmp 0x4070ae
push 0x40
lea eax, [esp + 8]
push eax
mov eax, dword [0x4092e4]
mov eax, dword [eax + 4]
push eax
mov eax, dword [0x40a660]
call fcn.00404430
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 0x407a9c
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 0x407b00
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.0040401c
mov eax, dword [ebp - 0xc]
push eax
call sub.kernel32.dll_GetACP
mov edx, eax
pop eax
call fcn.00405c94
mov ebx, eax
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x407b07
lea eax, [ebp - 0xc]
call fcn.00403dd4
ret
Function at 0x403ff0
Capabilities:
Hash data with md5

Disassembly:
push ebp
mov ebp, esp
mov eax, dword [ebp + 8]
mov dword [eax], 0
mov ecx, dword [ebp + 8]
mov dword [ecx + 4], 0
mov edx, dword [ebp + 8]
mov dword [edx + 8], 0x67452301
mov eax, dword [ebp + 8]
mov dword [eax + 0xc], 0xefcdab89
mov ecx, dword [ebp + 8]
mov dword [ecx + 0x10], 0x98badcfe
mov edx, dword [ebp + 8]
mov dword [edx + 0x14], 0x10325476
pop ebp
ret

Function at 0x405dc0
Capabilities:
Query or enumerate registry key
Query or enumerate registry value

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x438
mov dword [ebp - 0x438], 0
lea eax, [ebp - 0x118]
push eax
push 0x20019
push 0
push str.SOFTWAREMicrosoftPowerShell
push reloc.OLEAUT32.dll_SysReAllocString
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExA]
mov dword [ebp - 0x114], eax
cmp dword [ebp - 0x114], 0
je 0x405e16
push 0x411224
mov ecx, dword [ebp + 8]
push ecx
call fcn.0040f690
add esp, 8
jmp 0x405fb2
mov edx, 1
test edx, edx
je 0x405e90
mov dword [ebp - 0x434], 0x104
lea eax, [ebp - 0x110]
push eax
push 0
push 0
push 0
lea ecx, [ebp - 0x434]
push ecx
lea edx, [ebp - 0x430]
push edx
mov eax, dword [ebp - 0x438]
push eax
mov ecx, dword [ebp - 0x118]
push ecx
call dword [sym.imp.ADVAPI32.dll_RegEnumKeyExA]
mov dword [ebp - 0x114], eax
cmp dword [ebp - 0x114], 0
je 0x405e69
jmp 0x405e90
lea edx, [ebp - 0x430]
push edx
lea eax, [ebp - 0x220]
push eax
call fcn.0040f690
add esp, 8
mov ecx, dword [ebp - 0x438]
add ecx, 1
mov dword [ebp - 0x438], ecx
jmp 0x405e16
mov edx, dword [ebp - 0x118]
push edx
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
push str.SOFTWAREMicrosoftPowerShell_
lea eax, [ebp - 0x108]
push eax
call fcn.0040f690
add esp, 8
lea ecx, [ebp - 0x220]
push ecx
lea edx, [ebp - 0x108]
push edx
call fcn.0040f9d0
add esp, 8
push str.ShellIdsMicrosoft.PowerShell
lea eax, [ebp - 0x108]
push eax
call fcn.0040f9d0
add esp, 8
lea ecx, [ebp - 0x118]
push ecx
push 0x20019
push 0
lea edx, [ebp - 0x108]
push edx
push reloc.OLEAUT32.dll_SysReAllocString
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExA]
mov dword [ebp - 0x114], eax
cmp dword [ebp - 0x114], 0
je 0x405f20
push 0x411274
mov eax, dword [ebp + 8]
push eax
call fcn.0040f690
add esp, 8
jmp 0x405fb2
mov dword [ebp - 0x224], 0x208
lea ecx, [ebp - 0x224]
push ecx
lea edx, [ebp - 0x430]
push edx
push 0
push 0
push str.Path
mov eax, dword [ebp - 0x118]
push eax
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
mov dword [ebp - 0x114], eax
mov ecx, dword [ebp - 0x118]
push ecx
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
cmp dword [ebp - 0x114], 0
je 0x405f7d
push str.powershell.exe
mov edx, dword [ebp + 8]
push edx
call fcn.0040f690
add esp, 8
jmp 0x405fb2
push 0x41129c
mov eax, dword [ebp + 8]
push eax
call fcn.0040f690
add esp, 8
lea ecx, [ebp - 0x430]
push ecx
mov edx, dword [ebp + 8]
push edx
call fcn.0040f9d0
add esp, 8
push 0x4112a0
mov eax, dword [ebp + 8]
push eax
call fcn.0040f9d0
add esp, 8
mov esp, ebp
pop ebp
ret
Function at 0x40bcc0
Capabilities:
Query or enumerate registry value

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x214
lea eax, [ebp - 0x210]
push eax
push 0x20019
push 0
mov ecx, dword [ebp + 8]
push ecx
push SysReAllocString
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExA]
mov dword [ebp - 0x20c], eax
cmp dword [ebp - 0x20c], 0
je 0x40bcfc
xor eax, eax
jmp 0x40bddf
mov dword [ebp - 0x214], 0x200
lea edx, [ebp - 0x214]
push edx
lea eax, [ebp - 0x208]
push eax
lea ecx, [ebp - 4]
push ecx
push 0
push 0
mov edx, dword [ebp - 0x210]
push edx
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
mov dword [ebp - 0x20c], eax
mov eax, dword [ebp - 0x210]
push eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
cmp dword [ebp - 0x20c], 0
je 0x40bd4c
xor eax, eax
jmp 0x40bddf
push str.ScriptEngine
lea ecx, [ebp - 0x208]
push ecx
call dword [sym.imp.KERNEL32.dll_lstrcatA]
lea edx, [ebp - 0x210]
push edx
push 0x20019
push 0
lea eax, [ebp - 0x208]
push eax
push SysReAllocString
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExA]
mov dword [ebp - 0x20c], eax
cmp dword [ebp - 0x20c], 0
je 0x40bd91
xor eax, eax
jmp 0x40bddf
mov ecx, dword [ebp + 0x10]
mov dword [ebp - 0x214], ecx
lea edx, [ebp - 0x214]
push edx
mov eax, dword [ebp + 0xc]
push eax
lea ecx, [ebp - 4]
push ecx
push 0
push 0
mov edx, dword [ebp - 0x210]
push edx
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
mov dword [ebp - 0x20c], eax
mov eax, dword [ebp - 0x210]
push eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
cmp dword [ebp - 0x20c], 0
jne 0x40bddd
mov eax, 1
jmp 0x40bddf
xor eax, eax
mov esp, ebp
pop ebp
ret
Function at 0x40f3a0
Capabilities:
Delete directory
Delete file

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x210
mov dword [ebp - 4], 0
jmp 0x40f3bb
mov eax, dword [ebp - 4]
add eax, 1
mov dword [ebp - 4], eax
mov ecx, dword [ebp + 8]
mov edx, dword [ecx + 0xc]
mov eax, dword [ebp - 4]
cmp eax, dword [edx + 8]
jge 0x40f401
mov ecx, dword [ebp - 4]
push ecx
mov edx, dword [ebp + 8]
mov ecx, dword [edx + 0xc]
call fcn.00405410
push eax
mov eax, dword [ebp + 0xc]
push eax
push 0x4116f0
lea ecx, [ebp - 0x210]
push ecx
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0x10
lea edx, [ebp - 0x210]
push edx
call dword [sym.imp.KERNEL32.dll_DeleteFileA]
jmp 0x40f3b2
mov eax, dword [ebp + 8]
mov ecx, dword [eax + 0x10]
mov edx, dword [ecx + 8]
sub edx, 1
mov dword [ebp - 4], edx
jmp 0x40f41b
mov eax, dword [ebp - 4]
sub eax, 1
mov dword [ebp - 4], eax
cmp dword [ebp - 4], 0
jl 0x40f459
mov ecx, dword [ebp - 4]
push ecx
mov edx, dword [ebp + 8]
mov ecx, dword [edx + 0x10]
call fcn.00405410
push eax
mov eax, dword [ebp + 0xc]
push eax
push str._s_s
lea ecx, [ebp - 0x210]
push ecx
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0x10
lea edx, [ebp - 0x210]
push edx
call dword [sym.imp.KERNEL32.dll_RemoveDirectoryA]
jmp 0x40f412
mov esp, ebp
pop ebp
ret

Function at 0x40f460
Capabilities:
Accept command line arguments

Disassembly:
push ebp
mov ebp, esp
sub esp, 8
call dword [sym.imp.KERNEL32.dll_GetCommandLineA]
mov dword [ebp - 4], eax
mov eax, dword [ebp - 4]
mov dword [ebp - 8], eax
mov ecx, dword [ebp - 4]
movsx edx, byte [ecx]
cmp edx, 0x22
jne 0x40f4cd
mov eax, dword [ebp - 4]
add eax, 1
mov dword [ebp - 4], eax
mov ecx, dword [ebp - 4]
movsx edx, byte [ecx]
test edx, edx
je 0x40f4b4
mov eax, dword [ebp - 4]
movsx ecx, byte [eax]
cmp ecx, 0x22
jne 0x40f4a9
mov edx, dword [ebp - 4]
add edx, 1
mov dword [ebp - 8], edx
jmp 0x40f4b4
mov eax, dword [ebp - 4]
add eax, 1
mov dword [ebp - 4], eax
jmp 0x40f489
mov ecx, dword [ebp - 8]
movsx edx, byte [ecx]
cmp edx, 0x20
jne 0x40f4c8
mov eax, dword [ebp - 8]
add eax, 1
mov dword [ebp - 8], eax
mov eax, dword [ebp - 8]
jmp 0x40f4f8
mov ecx, dword [ebp - 4]
movsx edx, byte [ecx]
test edx, edx
je 0x40f4f5
mov eax, dword [ebp - 4]
movsx ecx, byte [eax]
cmp ecx, 0x20
jne 0x40f4ea
mov eax, dword [ebp - 4]
add eax, 1
jmp 0x40f4f8
mov edx, dword [ebp - 4]
add edx, 1
mov dword [ebp - 4], edx
jmp 0x40f4cd
mov eax, dword [ebp - 4]
mov esp, ebp
pop ebp
ret
Function at 0x401000
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
mov eax, dword [ebp + 8]
push ebx
push esi
mov bl, byte [eax]
cmp bl, 0xd8
je 0x40102e
cmp bl, 0xd7
je 0x40102e
mov esi, dword [ebp + 0x10]
lea ecx, [eax + 1]
test esi, esi
jle 0x40104f
mov eax, dword [ebp + 0xc]
sub ecx, eax
mov dl, byte [ecx + eax]
mov byte [eax], dl
inc eax
dec esi
jne 0x401023
jmp 0x40104f
mov esi, dword [ebp + 0xc]
inc eax
push esi
push eax
call fcn.00401ac0
cmp bl, 0xd8
jne 0x40104f
xor eax, eax
cmp dword [ebp + 0x10], eax
jle 0x40104f
xor byte [eax + esi], 0xf0
inc eax
cmp eax, dword [ebp + 0x10]
jl 0x401045
pop esi
pop ebx
pop ebp
ret

Function at 0x4010c1
Capabilities:
Allocate or change rwx memory

Disassembly:
push ebx
push esi
xor esi, esi
push edi
push esi
push dword [esp + 0x14]
push esi
push 0x8000040
push esi
push 0xffffffffffffffff
call dword [sym.imp.KERNEL32.dll_CreateFileMappingA]
mov ebx, eax
cmp ebx, esi
je 0x4010fc
push esi
push esi
push esi
push 0xf001f
push ebx
call dword [sym.imp.KERNEL32.dll_MapViewOfFile]
push ebx
mov edi, eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
cmp edi, esi
jne 0x40112a
push 0x40
push 0x101000
push dword [esp + 0x18]
push esi
call dword [sym.imp.KERNEL32.dll_VirtualAlloc]
mov edi, eax
cmp edi, esi
jne 0x40112a
push esi
mov eax, 0x401130
push esi
push eax
push eax
push 0x80030008
call fcn.00401057
add esp, 0x14
mov eax, edi
pop edi
pop esi
pop ebx
ret
Function at 0x9ff26a
Capabilities:
Parse pe header

Disassembly:
call fcn.009fe043
mov eax, dword [eax + 0xc]
mov eax, dword [eax + 0x1c]
jmp 0x9ff278
mov eax, dword fs:[0x30]
jmp 0x9ff237
lea esp, [esp + 3]
mov dword [esp + 0x28], edi
lea esp, [esp + 0x28]
jmp 0x9ff251
mov eax, dword [eax]
mov eax, dword [eax + 8]
push eax
jmp 0x9fe03e
Function at 0x403640
Capabilities:
Listen for remote procedure calls

Disassembly:
push ecx
push ebx
push esi
push edi
mov edi, dword [sym.imp.RPCRT4.dll_RpcServerUseProtseqW]
mov dword [esp + 0xc], 0
xor ebx, ebx
mov esi, 0x40e09c
push 0xbb8
push 0
push 2
call fcn.00404500
add esp, 0xc
test eax, eax
je 0x4037a8
mov eax, dword [0x40e0ac]
mov ecx, dword [esi]
push 0
push eax
push ecx
call edi
test eax, eax
jne 0x403688
mov ebx, 1
add esi, 4
cmp esi, 0x40e0ac
jb 0x403659
test ebx, ebx
jne 0x4036a9
push str.RpcServerUseProtseq___failed_n
call fcn.00404590
add esp, 4
pop edi
pop esi
pop ebx
pop ecx
ret
push 0xbb8
push 0
push 2
call fcn.00404500
add esp, 0xc
test eax, eax
je 0x4037a8
mov edx, dword [0x40e030]
push 0
push 0
push edx
call dword [sym.imp.RPCRT4.dll_RpcServerRegisterIf]
test eax, eax
jne 0x4037a8
push 0xbb8
push eax
push 2
call fcn.00404500
add esp, 0xc
test eax, eax
je 0x4037a8
lea eax, [esp + 0xc]
push eax
call dword [sym.imp.RPCRT4.dll_RpcServerInqBindings]
test eax, eax
jne 0x4037a8
mov ecx, dword [esp + 0xc]
mov edx, dword [0x40e030]
push eax
push eax
push ecx
push edx
call dword [sym.imp.RPCRT4.dll_RpcEpRegisterW]
test eax, eax
jne 0x4037a8
push 0xbb8
push eax
push 2
call fcn.00404500
add esp, 0xc
test eax, eax
je 0x4037a8
push 0
push 0
push 0xa
push 0
call dword [sym.imp.RPCRT4.dll_RpcServerRegisterAuthInfoW]
test eax, eax
jne 0x4037a8
push 0xbb8
push eax
push 2
call fcn.00404500
add esp, 0xc
test eax, eax
je 0x4037a8
mov eax, dword [0x40e0b0]
push 1
push 0x4d2
push eax
call dword [sym.imp.RPCRT4.dll_RpcServerListen]
test eax, eax
jne 0x4037a8
push eax
push eax
push 4
call fcn.00404500
add esp, 0xc
test eax, eax
je 0x4037a8
call dword [sym.imp.RPCRT4.dll_RpcMgmtWaitServerListen]
mov ecx, dword [esp + 0xc]
mov edx, dword [0x40e030]
push 0
push ecx
push edx
call dword [sym.imp.RPCRT4.dll_RpcEpUnregister]
lea eax, [esp + 0xc]
push eax
call dword [sym.imp.RPCRT4.dll_RpcBindingVectorFree]
pop edi
pop esi
pop ebx
pop ecx
ret
Function at 0x4037d0
Capabilities:
Create process on windows
Get common file path

Disassembly:
sub esp, 0x628
mov eax, dword [esp + 0x638]
mov edx, dword [esp + 0x63c]
push ebx
push ebp
mov ecx, dword [eax]
mov ebp, dword [esp + 0x650]
xor eax, eax
push esi
mov esi, dword [edx]
mov dword [esp + 0xc], eax
mov dword [esp + 0x10], eax
mov dword [esp + 0x18], ecx
mov ecx, dword [esp + 0x658]
mov dword [esp + 0x14], eax
mov dword [esp + 0xc], 0xc
mov dword [esp + 0x10], eax
mov dword [esp + 0x14], 1
lea edx, [esp + 0x1c]
mov dword [esi + 8], 0x40e178
push 0x103
mov dword [ebp], 0xffffffff
push edx
mov dword [ecx], 0xffffffff
call dword [sym.imp.KERNEL32.dll_GetWindowsDirectoryW]
test eax, eax
je 0x403924
lea eax, [esp + 0x1c]
push eax
call dword [sym.imp.KERNEL32.dll_lstrlenW]
cmp word [esp + eax*2 + 0x1c], 0x5c
je 0x40386e
lea ecx, [esp + 0x1c]
push 0x40e174
push ecx
call dword [sym.imp.KERNEL32.dll_lstrcatW]
mov ebx, dword [sym.imp.USER32.dll_wsprintfW]
push edi
mov edi, dword [esp + 0x654]
lea edx, [esp + 0x20]
push edi
push edx
lea eax, [esp + 0x230]
push str._s_s.out
push eax
call ebx
lea ecx, [esp + 0x30]
push edi
push ecx
lea edx, [esp + 0x448]
push str._s_s.err
push edx
call ebx
add esp, 0x20
mov edi, dword [sym.imp.KERNEL32.dll_CreateFileW]
lea eax, [esp + 0x10]
lea ecx, [esp + 0x228]
push 0
push 0x80
push 4
push eax
push 3
push 0xc0000000
push ecx
call edi
cmp eax, 0xffffffff
mov dword [ebp], eax
mov ebx, 0x100
je 0x4038e9
mov eax, dword [esi + 0x2c]
or eax, ebx
mov dword [esi + 0x2c], eax
mov edx, dword [ebp]
mov dword [esi + 0x3c], edx
push 0
push 0x80
lea eax, [esp + 0x18]
push 4
push eax
push 3
lea ecx, [esp + 0x444]
push 0xc0000000
push ecx
call edi
mov ecx, dword [esp + 0x65c]
cmp eax, 0xffffffff
pop edi
mov dword [ecx], eax
je 0x403924
mov eax, dword [esi + 0x2c]
or eax, ebx
mov dword [esi + 0x2c], eax
mov edx, dword [ecx]
mov dword [esi + 0x40], edx
mov eax, dword [esp + 0x18]
lea ecx, [esp + 0xc]
push eax
mov eax, dword [esp + 0x644]
push esi
push 0
push 0
push 0x10
push 1
lea edx, [esp + 0x24]
push ecx
push edx
push eax
push 0
call dword [sym.imp.KERNEL32.dll_CreateProcessW]
pop esi
pop ebp
test eax, eax
pop ebx
je 0x403969
mov ecx, dword [esp + 0x650]
xor eax, eax
mov dword [ecx], 0
add esp, 0x628
ret
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov edx, dword [esp + 0x650]
mov dword [edx], eax
xor eax, eax
add esp, 0x628
ret
Function at 0x403990
Capabilities:
Create process on windows

Disassembly:
sub esp, 0xc
mov eax, dword [esp + 0x1c]
mov edx, dword [esp + 0x20]
mov ecx, dword [eax]
mov eax, dword [edx]
xor edx, edx
push ecx
mov dword [esp + 4], edx
push eax
mov dword [esp + 0xc], edx
mov dword [esp + 8], 0xc
mov dword [esp + 0x10], edx
mov dword [esp + 0xc], edx
mov dword [esp + 0x10], 1
push edx
mov dword [eax + 8], 0x40e178
push edx
mov edx, dword [esp + 0x28]
push 0x10
lea eax, [esp + 0x14]
push 1
lea ecx, [esp + 0x18]
push eax
push ecx
push edx
push 0
call dword [sym.imp.KERNEL32.dll_CreateProcessW]
test eax, eax
je 0x4039fb
mov eax, dword [esp + 0x24]
mov dword [eax], 0
xor eax, eax
add esp, 0xc
ret
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov ecx, dword [esp + 0x24]
mov dword [ecx], eax
xor eax, eax
add esp, 0xc
ret

Function at 0x403a10
Capabilities:
Terminate process

Disassembly:
mov eax, dword [esp + 0xc]
mov ecx, dword [esp + 8]
push eax
push ecx
call dword [sym.imp.KERNEL32.dll_TerminateProcess]
xor eax, eax
ret

Function at 0x403a30
Capabilities:
Resume thread

Disassembly:
mov eax, dword [esp + 8]
cmp eax, 0xffffffff
je 0x403a49
push eax
call dword [sym.imp.KERNEL32.dll_ResumeThread]
mov ecx, dword [esp + 0xc]
mov dword [ecx], eax
xor eax, eax
ret
mov edx, dword [esp + 0xc]
xor eax, eax
mov dword [edx], 0xffffffff
ret

Function at 0x403a60
Capabilities:
Suspend thread

Disassembly:
mov eax, dword [esp + 8]
cmp eax, 0xffffffff
je 0x403a79
push eax
call dword [sym.imp.KERNEL32.dll_SuspendThread]
mov ecx, dword [esp + 0xc]
mov dword [ecx], eax
xor eax, eax
ret
mov edx, dword [esp + 0xc]
xor eax, eax
mov dword [edx], 0xffffffff
ret

Function at 0x403a90
Capabilities:
Get system information on windows

Disassembly:
sub esp, 0x24
lea eax, [esp]
push eax
call dword [sym.imp.KERNEL32.dll_GetSystemInfo]
mov ecx, dword [esp + 0x2c]
mov edx, dword [esp + 0x14]
xor eax, eax
mov dword [ecx], edx
add esp, 0x24
ret

Function at 0x403ab0
Capabilities:
Query or enumerate registry value

Disassembly:
sub esp, 0x21c
lea eax, [esp]
push esi
mov esi, dword [esp + 0x228]
push eax
push str.SoftwareMicrosoftMSSQLServerMSSQLServerCurrentVersion
push 0x80000002
mov dword [esi], 0xffffffff
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyW]
test eax, eax
jne 0x403b4f
lea ecx, [esp + 0x14]
lea edx, [esp + 0x18]
push ecx
mov ecx, dword [esp + 8]
lea eax, [esp + 0x14]
push edx
push eax
push 0
push str.CurrentVersion
push ecx
mov dword [esp + 0x2c], 0x104
mov dword [esp + 0x28], 2
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
test eax, eax
jne 0x403b4f
mov edx, dword [esp + 0x1c]
mov word [esp + 8], ax
mov dword [esp + 0xa], eax
mov eax, dword [esp + 0x18]
and edx, 0xffff
and eax, 0xffff
push edx
push eax
lea ecx, [esp + 0x10]
push str._c_c
push ecx
call dword [sym.imp.USER32.dll_wsprintfW]
lea edx, [esp + 0x18]
push edx
call fcn.00404df1
add esp, 0x14
mov dword [esi], eax
mov eax, dword [esp + 4]
pop esi
test eax, eax
je 0x403b5f
push eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
xor eax, eax
add esp, 0x21c
ret
Function at 0x403b70
Capabilities:
Get common file path

Disassembly:
sub esp, 0x824
mov ecx, dword [esp + 0x838]
mov edx, dword [esp + 0x830]
lea eax, [esp]
push edi
push eax
push 2
push ecx
push edx
mov dword [esp + 0x14], 0
call sub.NETAPI32.dll_NetShareGetInfo
mov edi, dword [esp + 0x848]
test eax, eax
mov dword [edi], 0xffffffff
jne 0x403bcb
mov eax, dword [esp + 4]
lea edx, [esp + 8]
mov ecx, dword [eax + 0x18]
push ecx
push edx
call dword [sym.imp.KERNEL32.dll_lstrcpyW]
lea eax, [esp + 4]
push eax
call sub.NETAPI32.dll_NetApiBufferFree
jmp 0x403bdb
lea ecx, [esp + 8]
push 0x104
push ecx
call dword [sym.imp.KERNEL32.dll_GetWindowsDirectoryW]
lea edx, [esp + 8]
push edx
call dword [sym.imp.KERNEL32.dll_lstrlenW]
cmp word [esp + eax*2 + 8], 0x5c
je 0x403bfe
lea eax, [esp + 8]
push 0x40e174
push eax
call dword [sym.imp.KERNEL32.dll_lstrcatW]
mov ecx, dword [esp + 0x844]
lea edx, [esp + 8]
push ecx
push edx
lea eax, [esp + 0x420]
push str._s_s
push eax
call dword [sym.imp.USER32.dll_wsprintfW]
add esp, 0x10
push 0
call dword [sym.imp.ole32.dll_OleInitialize]
test eax, eax
jge 0x403c37
xor eax, eax
pop edi
add esp, 0x824
ret
push esi
push 1
call dword [sym.imp.KERNEL32.dll_SetErrorMode]
lea ecx, [esp + 0x41c]
push ecx
call dword [sym.imp.KERNEL32.dll_LoadLibraryW]
mov esi, eax
cmp esi, 0x20
jb 0x403c78
push str.DllRegisterServer
push esi
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
test eax, eax
je 0x403c71
call eax
test eax, eax
jl 0x403c71
mov dword [edi], 0
push esi
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
call dword [sym.imp.ole32.dll_OleUninitialize]
pop esi
xor eax, eax
pop edi
add esp, 0x824
ret

Function at 0x403cb0
Capabilities:
Get file size

Disassembly:
push esi
mov esi, dword [esp + 0xc]
cmp esi, 0xffffffff
je 0x403cde
push esi
call dword [sym.imp.KERNEL32.dll_FlushFileBuffers]
push 0
push esi
call dword [sym.imp.KERNEL32.dll_GetFileSize]
mov ecx, dword [esp + 0x10]
cmp eax, 1
sbb eax, eax
push esi
neg eax
mov dword [ecx], eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
xor eax, eax
pop esi
ret
Function at 0x403f50
Capabilities:
Get file version info

Disassembly:
sub esp, 0x218
mov eax, dword [esp + 0x21c]
mov dword [esp], 0
test eax, eax
jne 0x403f86
lea eax, [esp + 0x10]
push 0x208
push eax
push 0
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameW]
test eax, eax
jne 0x403f94
add esp, 0x218
ret
lea ecx, [esp + 0x10]
push eax
push ecx
call fcn.00404e6d
add esp, 8
mov eax, dword [esp + 0x220]
test eax, eax
je 0x403fa5
mov dword [eax], 0
push ebx
push ebp
mov ebp, dword [esp + 0x22c]
push esi
test ebp, ebp
push edi
je 0x403fbb
mov dword [ebp], 0
lea edx, [esp + 0x18]
lea eax, [esp + 0x20]
push edx
push eax
call sub.VERSION.dll_GetFileVersionInfoSizeW
mov edi, eax
test edi, edi
je 0x40404e
push edi
push 0x42
call dword [sym.imp.KERNEL32.dll_GlobalAlloc]
mov ebx, eax
test ebx, ebx
je 0x40404e
push ebx
call dword [sym.imp.KERNEL32.dll_GlobalLock]
mov esi, eax
test esi, esi
je 0x40404e
mov ecx, dword [esp + 0x22c]
push esi
push edi
push 0
push ecx
call sub.VERSION.dll_GetFileVersionInfoW
test eax, eax
je 0x404040
lea edx, [esp + 0x1c]
lea eax, [esp + 0x14]
push edx
push eax
push 0x40e174
push esi
call sub.VERSION.dll_VerQueryValueW
test eax, eax
je 0x404040
mov ecx, dword [esp + 0x230]
test ecx, ecx
je 0x404038
test ebp, ebp
je 0x404038
mov eax, dword [esp + 0x14]
mov edx, dword [eax + 8]
mov dword [ecx], edx
mov eax, dword [eax + 0xc]
mov dword [ebp], eax
mov dword [esp + 0x10], 1
push ebx
call dword [sym.imp.KERNEL32.dll_GlobalUnlock]
push ebx
call dword [sym.imp.KERNEL32.dll_GlobalFree]
mov eax, dword [esp + 0x10]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x218
ret