joyce8/EMBER2024-capa huggingface dataset:
Function at 0x10091620
Capabilities:
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x1009b710
mov eax, dword fs:[0]
push eax
sub esp, 0x60
mov eax, dword [0x100aa00c]
xor eax, ebp
mov dword [ebp - 0x10], eax
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov eax, dword [ebp + 8]
mov dword [ebp - 0x44], eax
cmp dword [ebp - 0x44], 0
jne 0x1009165b
xor eax, eax
jmp 0x10091771
mov ecx, dword [ebp - 0x44]
mov dword [ebp - 0x58], ecx
cmp dword [ebp - 0x58], 0
jne 0x1009166e
xor eax, eax
jmp 0x10091771
mov edx, dword [ebp - 0x58]
mov eax, dword [ebp - 0x44]
add eax, dword [edx + 0x3c]
mov dword [ebp - 0x5c], eax
jne 0x10091683
xor eax, eax
jmp 0x10091771
mov ecx, 8
imul edx, ecx, 0
mov eax, dword [ebp - 0x5c]
mov ecx, dword [ebp - 0x44]
add ecx, dword [eax + edx + 0x78]
mov dword [ebp - 0x50], ecx
mov edx, dword [ebp - 0x50]
mov eax, dword [ebp - 0x44]
add eax, dword [edx + 0x24]
mov dword [ebp - 0x68], eax
mov ecx, dword [ebp - 0x50]
mov edx, dword [ebp - 0x44]
add edx, dword [ecx + 0x1c]
mov dword [ebp - 0x6c], edx
mov eax, dword [ebp - 0x50]
mov ecx, dword [ebp - 0x44]
add ecx, dword [eax + 0x20]
mov dword [ebp - 0x60], ecx
mov dword [ebp - 0x4c], 0
jmp 0x100916ce
mov edx, dword [ebp - 0x4c]
add edx, 1
mov dword [ebp - 0x4c], edx
mov eax, dword [ebp - 0x50]
mov ecx, dword [ebp - 0x4c]
cmp ecx, dword [eax + 0x18]
jae 0x10091745
mov edx, dword [ebp - 0x4c]
mov eax, dword [ebp - 0x60]
mov ecx, dword [ebp - 0x44]
add ecx, dword [eax + edx*4]
mov dword [ebp - 0x64], ecx
mov edx, dword [ebp + 0xc]
push edx
lea ecx, [ebp - 0x40]
call fcn.10012df0
mov dword [ebp - 4], 0
mov eax, dword [ebp - 0x64]
push eax
lea ecx, [ebp - 0x28]
call fcn.10012df0
mov byte [ebp - 4], 1
lea ecx, [ebp - 0x40]
push ecx
lea edx, [ebp - 0x28]
push edx
call fcn.10091360
add esp, 8
mov byte [ebp - 0x45], al
mov byte [ebp - 4], 0
lea ecx, [ebp - 0x28]
call fcn.10012c20
mov dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x40]
call fcn.10012c20
movzx eax, byte [ebp - 0x45]
test eax, eax
je 0x10091743
jmp 0x10091745
jmp 0x100916c5
mov ecx, dword [ebp - 0x50]
mov edx, dword [ebp - 0x4c]
cmp edx, dword [ecx + 0x18]
jb 0x10091754
xor eax, eax
jmp 0x10091771
mov eax, dword [ebp - 0x4c]
mov ecx, dword [ebp - 0x68]
mov dx, word [ecx + eax*2]
mov word [ebp - 0x54], dx
movzx eax, word [ebp - 0x54]
mov ecx, dword [ebp - 0x6c]
mov edx, dword [ebp + 8]
add edx, dword [ecx + eax*4]
mov eax, edx
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.100972e3
mov esp, ebp
pop ebp
ret
Function at 0x1008d473
Capabilities:
Get number of processors

Disassembly:
jmp 0x10081794
call fcn.1008177f
salc
arpl word [ebp - 0x79], cx
loop 0x1008178a
adc eax, 0x24748b56
add al, 0x8d
mov dh, 0xd4
adc byte [edx], al
add byte [ecx + 0x5e042474], cl
push edx
mov dword [esp], ebp
push esp
pop ebp
push ebp
mov ebp, esp
add ebp, 4
sub ebp, 0x80
xchg dword [esp], ebp
pop esp
sub esp, 4
mov dword [esp], ebx
push edi
mov dword [esp], esi
push 0x188b
mov dword [esp], edi
jmp 0x100a73b3
push ebx
mov ebx, 8
add ebx, ebp
mov eax, dword [ebx]
pop ebx
sub esp, 4
mov dword [esp], eax
jmp 0x100a01dd
jmp 0x1008c476
push 0
push 0x41797261
push 0x7262694c
push 0x64616f4c
lea ecx, [ebp - 0x2c]
sub esp, 4
mov dword [esp], ecx
jmp 0x1009b856
push ecx
mov ecx, dword [esp + 4]
lea ecx, [ecx + 0x1983f]
mov dword [esp + 4], ecx
pop ecx
jmp 0x100a3e32
jmp 0x1009b86d
call fcn.1009b858
adc byte [eax - 0x77], dl
loopne 0x1009b87c
add al, 0
add byte [eax], al
add eax, 4
xchg dword [esp], eax
pop esp
rol byte [edi + eax*4], 4
and al, 0x5c
push eax
pop dword [ebp - 4]
push ecx
mov ecx, 0xc
add ecx, ebp
mov eax, dword [ecx]
pop ecx
push esi
mov dword [esp], eax
push dword [ebp - 4]
sub dword [esp], 0x3f8325ed
pop ecx
add ecx, 0x3f8325ed
push esi
mov dword [esp], ecx
push eax
mov eax, 8
add eax, ebp
mov edx, dword [eax]
pop eax
push eax
mov eax, 0x64
add edx, eax
pop eax
push ebx
mov dword [esp], edx
jmp 0x1008177d
jmp 0x100a01f4
call fcn.100a01df
or eax, dword [ebp + 0x68]
mov byte [eax], 0
jmp 0x10081bce
push esi
mov esi, 0x6114390f
xor esi, 0x61143917
mov eax, esi
pop esi
mov eax, dword fs:[eax]
push eax
pop dword [ebp - 4]
push dword [ebp - 4]
pop eax
push dword [eax + 0x30]
sub dword [esp], 0x63f80c4b
pop ecx
add ecx, 0x63f80c4b
push eax
mov eax, 0xfffffff8
add eax, ebp
mov dword [eax], ecx
pop eax
push dword [ebp - 8]
pop edx
push ecx
mov ecx, 8
add ecx, edx
mov eax, dword [ecx]
pop ecx
push edx
mov edx, 0xffffffec
add edx, ebp
mov dword [edx], eax
pop edx
push ebx
mov ebx, 0
mov dword [ebp - 0x10], ebx
pop ebx
cmp dword [ebp - 0x10], 0
je 0x10082698
jmp 0x10083265

Function at 0x100ac6f2
Capabilities:
Access peb ldr_data

Disassembly:
push eax
mov eax, dword [esp + 4]
lea eax, [eax - 0x4e23]
mov dword [esp + 4], eax
pop eax
jmp 0x1009ba70

Function at 0x10305a6b
Capabilities:
Encode data using xor

Disassembly:
sub esp, 4
mov dword [esp], ecx
cmp eax, 0x1000
lea ecx, [esp + 8]
jb 0x10305ac9
jmp 0x10305a88
push ebx
mov ebx, 0x1000
sub ecx, ebx
pop ebx
push esi
mov esi, 0x42603735
add esi, 0x62b848ad
not esi
xor esi, 0xa3b2af6
xor esi, 0x5731f4a
shr esi, 4
xor esi, 0x55aeb5a
sub eax, esi
pop esi
test dword [ecx], eax
cmp eax, 0x1000
jae 0x10305a88
jmp 0x10305ac9
sub ecx, 0x42861a21
sub ecx, eax
add ecx, 0x42861a21
push esp
pop eax
test dword [ecx], eax
mov esp, ecx
push dword [eax]
pop ecx
push dword [eax + 4]
xor dword [esp], 0x1d9f7243
pop eax
xor eax, 0x1d9f7243
push ecx
mov dword [esp], eax
ret
Function at 0x51002b34
Capabilities:
Query or enumerate registry value

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

Function at 0x51003478
Capabilities:
Write file on windows

Disassembly:
push ecx
cmp byte [0x5100a044], 0
je 0x510034d9
cmp word [0x5100a218], 0xd7b2
jne 0x510034a1
cmp dword [0x5100a220], 0
jbe 0x510034a1
mov eax, 0x5100a214
call dword [0x5100a230]
push 0
lea eax, [esp + 4]
push eax
push 0x1e
push 0x5100904c
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 0x51003500
push 0xfffffffffffffff5
call sub.kernel32.dll_GetStdHandle
push eax
call sub.kernel32.dll_WriteFile
pop edx
ret
cmp byte [0x51009018], 0
jne 0x510034f5
push 0
push 0x5100906c
push 0x5100904c
push 0
call sub.user32.dll_MessageBoxA
pop edx
ret
Function at 0x51003f5c
Capabilities:
Get geographical location
Query or enumerate registry value

Disassembly:
push ebp
mov ebp, esp
add esp, 0xfffffee0
push ebx
push esi
mov dword [ebp - 4], eax
push 0x105
lea eax, [ebp - 0x11d]
push eax
push 0
call sub.kernel32.dll_GetModuleFileNameA
mov byte [ebp - 0x12], 0
lea eax, [ebp - 8]
push eax
push 0xf0019
push 0
push 0x5100418c
push 0x80000001
call sub.advapi32.dll_RegOpenKeyExA
test eax, eax
je 0x51003fdf
lea eax, [ebp - 8]
push eax
push 0xf0019
push 0
push 0x5100418c
push 0x80000002
call sub.advapi32.dll_RegOpenKeyExA
test eax, eax
je 0x51003fdf
lea eax, [ebp - 8]
push eax
push 0xf0019
push 0
push 0x510041a8
push 0x80000001
call sub.advapi32.dll_RegOpenKeyExA
test eax, eax
jne 0x51004068
xor eax, eax
push ebp
push 0x51004061
push dword fs:[eax]
mov dword fs:[eax], esp
mov dword [ebp - 0x18], 5
lea eax, [ebp - 0x11d]
mov edx, 0x105
call fcn.51003da4
lea eax, [ebp - 0x18]
push eax
lea eax, [ebp - 0x12]
push eax
push 0
push 0
lea eax, [ebp - 0x11d]
push eax
mov eax, dword [ebp - 8]
push eax
call sub.advapi32.dll_RegQueryValueExA
test eax, eax
je 0x51004046
lea eax, [ebp - 0x18]
push eax
lea eax, [ebp - 0x12]
push eax
push 0
push 0
push 0x510041c8
mov eax, dword [ebp - 8]
push eax
call sub.advapi32.dll_RegQueryValueExA
test eax, eax
je 0x51004046
mov byte [ebp - 0x12], 0
mov byte [ebp - 0xe], 0
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x51004068
mov eax, dword [ebp - 8]
push eax
call sub.advapi32.dll_RegCloseKey
ret
push 0x105
mov eax, dword [ebp - 4]
push eax
lea eax, [ebp - 0x11d]
push eax
call sub.kernel32.dll_lstrcpynA
push 5
lea eax, [ebp - 0xd]
push eax
push 3
call sub.kernel32.dll_GetThreadLocale
push eax
call sub.kernel32.dll_GetLocaleInfoA
xor esi, esi
cmp byte [ebp - 0x11d], 0
je 0x51004182
cmp byte [ebp - 0xd], 0
jne 0x510040af
cmp byte [ebp - 0x12], 0
je 0x51004182
lea eax, [ebp - 0x11d]
push eax
call sub.kernel32.dll_lstrlenA
mov ebx, eax
lea eax, [ebp - 0x11d]
add ebx, eax
jmp 0x510040c8
dec ebx
cmp byte [ebx], 0x2e
je 0x510040d7
lea eax, [ebp - 0x11d]
cmp ebx, eax
jne 0x510040c7
lea eax, [ebp - 0x11d]
cmp ebx, eax
je 0x51004182
inc ebx
cmp byte [ebp - 0x12], 0
je 0x51004114
mov edx, ebx
sub edx, eax
mov eax, 0x105
sub eax, edx
push eax
lea eax, [ebp - 0x12]
push eax
push ebx
call sub.kernel32.dll_lstrcpynA
push 2
push 0
lea eax, [ebp - 0x11d]
push eax
call sub.kernel32.dll_LoadLibraryExA
mov esi, eax
test esi, esi
jne 0x51004182
cmp byte [ebp - 0xd], 0
je 0x51004182
lea eax, [ebp - 0x11d]
mov edx, ebx
sub edx, eax
mov eax, 0x105
sub eax, edx
push eax
lea eax, [ebp - 0xd]
push eax
push ebx
call sub.kernel32.dll_lstrcpynA
push 2
push 0
lea eax, [ebp - 0x11d]
push eax
call sub.kernel32.dll_LoadLibraryExA
mov esi, eax
test esi, esi
jne 0x51004182
mov byte [ebp - 0xb], 0
lea eax, [ebp - 0x11d]
mov edx, ebx
sub edx, eax
mov eax, 0x105
sub eax, edx
push eax
lea eax, [ebp - 0xd]
push eax
push ebx
call sub.kernel32.dll_lstrcpynA
push 2
push 0
lea eax, [ebp - 0x11d]
push eax
call sub.kernel32.dll_LoadLibraryExA
mov esi, eax
mov eax, esi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
Function at 0x51004068
Capabilities:
Get geographical location

Disassembly:
push ebp
mov ebp, esp
add esp, 0xfffffee0
push ebx
push esi
mov dword [ebp - 4], eax
push 0x105
lea eax, [ebp - 0x11d]
push eax
push 0
call sub.kernel32.dll_GetModuleFileNameA
mov byte [ebp - 0x12], 0
lea eax, [ebp - 8]
push eax
push 0xf0019
push 0
push 0x5100418c
push 0x80000001
call sub.advapi32.dll_RegOpenKeyExA
test eax, eax
je 0x51003fdf
lea eax, [ebp - 8]
push eax
push 0xf0019
push 0
push 0x5100418c
push 0x80000002
call sub.advapi32.dll_RegOpenKeyExA
test eax, eax
je 0x51003fdf
lea eax, [ebp - 8]
push eax
push 0xf0019
push 0
push 0x510041a8
push 0x80000001
call sub.advapi32.dll_RegOpenKeyExA
test eax, eax
jne 0x51004068
xor eax, eax
push ebp
push 0x51004061
push dword fs:[eax]
mov dword fs:[eax], esp
mov dword [ebp - 0x18], 5
lea eax, [ebp - 0x11d]
mov edx, 0x105
call fcn.51003da4
lea eax, [ebp - 0x18]
push eax
lea eax, [ebp - 0x12]
push eax
push 0
push 0
lea eax, [ebp - 0x11d]
push eax
mov eax, dword [ebp - 8]
push eax
call sub.advapi32.dll_RegQueryValueExA
test eax, eax
je 0x51004046
lea eax, [ebp - 0x18]
push eax
lea eax, [ebp - 0x12]
push eax
push 0
push 0
push 0x510041c8
mov eax, dword [ebp - 8]
push eax
call sub.advapi32.dll_RegQueryValueExA
test eax, eax
je 0x51004046
mov byte [ebp - 0x12], 0
mov byte [ebp - 0xe], 0
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x51004068
mov eax, dword [ebp - 8]
push eax
call sub.advapi32.dll_RegCloseKey
ret
push 0x105
mov eax, dword [ebp - 4]
push eax
lea eax, [ebp - 0x11d]
push eax
call sub.kernel32.dll_lstrcpynA
push 5
lea eax, [ebp - 0xd]
push eax
push 3
call sub.kernel32.dll_GetThreadLocale
push eax
call sub.kernel32.dll_GetLocaleInfoA
xor esi, esi
cmp byte [ebp - 0x11d], 0
je 0x51004182
cmp byte [ebp - 0xd], 0
jne 0x510040af
cmp byte [ebp - 0x12], 0
je 0x51004182
lea eax, [ebp - 0x11d]
push eax
call sub.kernel32.dll_lstrlenA
mov ebx, eax
lea eax, [ebp - 0x11d]
add ebx, eax
jmp 0x510040c8
dec ebx
cmp byte [ebx], 0x2e
je 0x510040d7
lea eax, [ebp - 0x11d]
cmp ebx, eax
jne 0x510040c7
lea eax, [ebp - 0x11d]
cmp ebx, eax
je 0x51004182
inc ebx
cmp byte [ebp - 0x12], 0
je 0x51004114
mov edx, ebx
sub edx, eax
mov eax, 0x105
sub eax, edx
push eax
lea eax, [ebp - 0x12]
push eax
push ebx
call sub.kernel32.dll_lstrcpynA
push 2
push 0
lea eax, [ebp - 0x11d]
push eax
call sub.kernel32.dll_LoadLibraryExA
mov esi, eax
test esi, esi
jne 0x51004182
cmp byte [ebp - 0xd], 0
je 0x51004182
lea eax, [ebp - 0x11d]
mov edx, ebx
sub edx, eax
mov eax, 0x105
sub eax, edx
push eax
lea eax, [ebp - 0xd]
push eax
push ebx
call sub.kernel32.dll_lstrcpynA
push 2
push 0
lea eax, [ebp - 0x11d]
push eax
call sub.kernel32.dll_LoadLibraryExA
mov esi, eax
test esi, esi
jne 0x51004182
mov byte [ebp - 0xb], 0
lea eax, [ebp - 0x11d]
mov edx, ebx
sub edx, eax
mov eax, 0x105
sub eax, edx
push eax
lea eax, [ebp - 0xd]
push eax
push ebx
call sub.kernel32.dll_lstrcpynA
push 2
push 0
lea eax, [ebp - 0x11d]
push eax
call sub.kernel32.dll_LoadLibraryExA
mov esi, eax
mov eax, esi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
Function at 0x51006040
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 0x51006079
mov ecx, eax
dec ecx
lea edx, [ebp - 0x100]
mov eax, ebx
call fcn.510036e4
jmp 0x51006082
mov eax, ebx
mov edx, esi
call fcn.51003648
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4

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

Function at 0x51006734
Capabilities:
Write file on windows

Disassembly:
add esp, 0xfffffbbc
push 0x400
lea ecx, [esp + 0x48]
call 0x510065ac
mov eax, dword [0x51009398]
cmp byte [eax], 0
je 0x510067a1
mov eax, dword [0x510092f0]
call fcn.510026b0
call fcn.510025d8
push 0
lea eax, [esp + 4]
push eax
lea eax, [esp + 0x4c]
call fcn.51005484
push eax
lea eax, [esp + 0x50]
push eax
push 0xfffffffffffffff5
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 0x510067e8
push 0xfffffffffffffff5
call sub.kernel32.dll_GetStdHandle_1
push eax
call sub.kernel32.dll_WriteFile_1
jmp 0x510067d7
push 0x40
lea eax, [esp + 8]
push eax
mov eax, dword [0x510092d4]
mov eax, dword [eax + 4]
push eax
mov eax, dword [0x5100a710]
call fcn.51003d68
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 0x51007168
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 0x510071cc
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.51003838
mov eax, dword [ebp - 0xc]
push eax
call sub.kernel32.dll_GetACP
mov edx, eax
pop eax
call fcn.51005358
mov ebx, eax
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x510071d3
lea eax, [ebp - 0xc]
call fcn.510035f4
ret
Function at 0x51007e64
Capabilities:
Extract resource via kernel32 functions
Write file on windows

Disassembly:
push ebp
mov ebp, esp
push 0
xor eax, eax
push ebp
push 0x51007f91
push dword fs:[eax]
mov dword fs:[eax], esp
push 0xa
push 0x51007f9c
push 0
call sub.kernel32.dll_FindResourceA
mov dword [0x5100a848], eax
cmp dword [0x5100a848], 0
jne 0x51007e9d
mov eax, 0xa5
call fcn.510035e8
mov eax, dword [0x5100a848]
push eax
push 0
call sub.kernel32.dll_LoadResource
mov dword [0x5100a84c], eax
cmp dword [0x5100a84c], 0
jne 0x51007ec2
mov eax, 0xa7
call fcn.510035e8
mov eax, dword [0x5100a848]
push eax
push 0
call sub.kernel32.dll_SizeofResource
mov dword [0x5100a850], eax
mov eax, dword [0x5100a84c]
push eax
call sub.kernel32.dll_LockResource
mov dword [0x5100a858], eax
push 0
push 0x80
push 2
push 0
push 0
push 0x40000000
lea eax, [ebp - 4]
mov edx, 0x5100a860
mov ecx, 0x104
call fcn.51003838
lea eax, [ebp - 4]
mov edx, 0x51007fb0
call fcn.5100386c
mov eax, dword [ebp - 4]
call fcn.510039b8
push eax
call sub.kernel32.dll_CreateFileA
mov dword [0x5100a85c], eax
cmp dword [0x5100a85c], 0xffffffff
jne 0x51007f3b
mov eax, 0xa8
call fcn.510035e8
push 0
push 0x5100a854
mov eax, dword [0x5100a850]
push eax
mov eax, dword [0x5100a858]
push eax
mov eax, dword [0x5100a85c]
push eax
call sub.kernel32.dll_WriteFile_1
mov eax, dword [0x5100a850]
cmp eax, dword [0x5100a854]
je 0x51007f70
mov eax, 0xa9
call fcn.510035e8
mov eax, dword [0x5100a85c]
push eax
call sub.kernel32.dll_CloseHandle
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x51007f98
lea eax, [ebp - 4]
call fcn.510035f4
ret

Function at 0x51007fbc
Capabilities:
Extract resource via kernel32 functions

Disassembly:
push ebp
mov ebp, esp
push 0
push ebx
push esi
push edi
mov esi, eax
xor eax, eax
push ebp
push 0x51008097
push dword fs:[eax]
mov dword fs:[eax], esp
push 0xa
push 0x510080a4
push 0
call sub.kernel32.dll_FindResourceA
mov dword [0x5100a848], eax
cmp dword [0x5100a848], 0
jne 0x51007ffa
mov eax, 0xaa
call fcn.510035e8
mov eax, dword [0x5100a848]
push eax
push 0
call sub.kernel32.dll_LoadResource
mov dword [0x5100a84c], eax
cmp dword [0x5100a84c], 0
jne 0x5100801f
mov eax, 0xab
call fcn.510035e8
mov eax, dword [0x5100a848]
push eax
push 0
call sub.kernel32.dll_SizeofResource
mov dword [0x5100a850], eax
mov eax, dword [0x5100a84c]
push eax
call sub.kernel32.dll_LockResource
mov dword [0x5100a858], eax
mov eax, esi
call fcn.510035f4
mov ebx, dword [0x5100a850]
dec ebx
test ebx, ebx
jl 0x51008076
inc ebx
xor edi, edi
lea eax, [ebp - 4]
mov edx, dword [0x5100a858]
add edx, edi
mov dl, byte [edx]
call fcn.510037bc
mov edx, dword [ebp - 4]
mov eax, esi
call fcn.5100386c
inc edi
dec ebx
jne 0x51008056
mov eax, dword [0x5100a85c]
push eax
call sub.kernel32.dll_CloseHandle
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x5100809e
lea eax, [ebp - 4]
call fcn.510035f4
ret
Function at 0x51008160
Capabilities:
Copy file
Create process on windows
Get common file path

Disassembly:
push ebp
mov ebp, esp
mov ecx, 9
push 0
push 0
dec ecx
jne 0x51008168
mov eax, 0x51008120
call fcn.510044b8
xor eax, eax
push ebp
push 0x51008348
push dword fs:[eax]
mov dword fs:[eax], esp
push 0x5100a860
push 0x104
call sub.kernel32.dll_GetTempPathA
test eax, eax
jne 0x510081a4
mov eax, 0x64
call fcn.510035e8
call fcn.51007e64
call fcn.510080ac
test al, al
je 0x510082cc
push 0
lea edx, [ebp - 0x14]
mov eax, 0x5100a860
call fcn.51005544
lea eax, [ebp - 0x14]
mov edx, 0x5100835c
call fcn.5100386c
mov eax, dword [ebp - 0x14]
call fcn.510039b8
push eax
lea eax, [ebp - 0x1c]
mov edx, 0x5100a860
mov ecx, 0x104
call fcn.51003838
mov eax, dword [ebp - 0x1c]
lea ecx, [ebp - 0x18]
mov edx, 0x51008374
call fcn.51007d78
mov eax, dword [ebp - 0x18]
call fcn.510039b8
push eax
call sub.kernel32.dll_CopyFileA
test eax, eax
je 0x51008269
push 5
lea edx, [ebp - 0x24]
mov eax, 0x5100a860
call fcn.51005544
push dword [ebp - 0x24]
push 0x5100835c
push 0x51008388
lea eax, [ebp - 0x28]
call fcn.51007fbc
push dword [ebp - 0x28]
lea eax, [ebp - 0x20]
mov edx, 4
call fcn.51003924
mov eax, dword [ebp - 0x20]
call fcn.510039b8
push eax
call sub.kernel32.dll_WinExec
cmp eax, 0x1f
ja 0x5100832d
mov eax, 0x6d
call fcn.510035e8
jmp 0x5100832d
push 5
lea eax, [ebp - 0x34]
mov edx, 0x5100a860
mov ecx, 0x104
call fcn.51003838
mov eax, dword [ebp - 0x34]
lea ecx, [ebp - 0x30]
mov edx, 0x51008374
call fcn.51007d78
push dword [ebp - 0x30]
push 0x51008388
lea eax, [ebp - 0x38]
call fcn.51007fbc
push dword [ebp - 0x38]
lea eax, [ebp - 0x2c]
mov edx, 3
call fcn.51003924
mov eax, dword [ebp - 0x2c]
call fcn.510039b8
push eax
call sub.kernel32.dll_WinExec
cmp eax, 0x1f
ja 0x5100832d
mov eax, 0x6d
call fcn.510035e8
jmp 0x5100832d
push 5
lea eax, [ebp - 0x44]
mov edx, 0x5100a860
mov ecx, 0x104
call fcn.51003838
mov eax, dword [ebp - 0x44]
lea ecx, [ebp - 0x40]
mov edx, 0x51008374
call fcn.51007d78
push dword [ebp - 0x40]
push 0x51008388
lea eax, [ebp - 0x48]
call fcn.51007fbc
push dword [ebp - 0x48]
lea eax, [ebp - 0x3c]
mov edx, 3
call fcn.51003924
mov eax, dword [ebp - 0x3c]
call fcn.510039b8
push eax
call sub.kernel32.dll_WinExec
cmp eax, 0x1f
ja 0x5100832d
mov eax, 0x6e
call fcn.510035e8
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x5100834f
lea eax, [ebp - 0x48]
mov edx, 0xe
call fcn.51003618
ret
Function at 0x40f5e0
Capabilities:
Read file on windows

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x1a8
push ebx
push esi
mov ebx, 0x4848e8
call fcn.0040f580
mov esi, eax
lea eax, [esp + 0xa8]
push esi
push eax
call fcn.00413990
push esi
call fcn.004112ef
add esp, 0xc
lea esi, [esp + 0x18]
call fcn.0040f6a0
lea eax, [esp + 0xa8]
mov ecx, esi
call fcn.0040f6d0
xor ebx, ebx
mov dword [edi + 8], ebx
xor ecx, ecx
mov eax, ebx
movzx edx, byte [esp + ecx + 0x18]
add eax, edx
movzx edx, byte [esp + ecx + 0x19]
add eax, edx
movzx edx, byte [esp + ecx + 0x1a]
add eax, edx
movzx edx, byte [esp + ecx + 0x1b]
add ecx, 4
add eax, edx
cmp ecx, 0x10
jl 0x40f631
mov dword [edi + 8], eax
mov eax, dword [ebp + 8]
push 0x4876c8
push eax
call fcn.00414e06
add esp, 8
mov dword [edi], eax
cmp eax, ebx
je 0x42b2ee
push edi
call fcn.0040f450
cmp eax, ebx
je 0x42b2f8
mov ecx, dword [edi]
push ecx
mov esi, eax
call fcn.00414e94
add esp, 4
mov eax, esi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
mov eax, 1
jmp 0x40f690
mov edx, dword [edi]
push edx
push 0x10
lea eax, [esp + 0x10]
push 1
push eax
call fcn.004151b0
add esp, 0x10
push 0x99f2
push 0x10
lea ecx, [esp + 0x10]
push ecx
call fcn.0044afdc
xor eax, eax
mov dword [edi + 8], ebx
xor ecx, ecx
movzx edx, byte [esp + eax + 8]
inc eax
imul ecx, edx
cmp eax, 0x10
jl 0x42b324
mov eax, dword [edi]
push eax
mov dword [edi + 8], ecx
call fcn.00415484
add esp, 4
mov dword [edi + 4], eax
xor eax, eax
jmp 0x40f690

Function at 0x40f6a0
Capabilities:
Hash data with md5

Disassembly:
push 8
lea eax, [esi + 0x44]
push 0
push eax
call fcn.004131f0
add esp, 0xc
mov dword [esi + 0x34], 0x67452301
mov dword [esi + 0x38], 0xefcdab89
mov dword [esi + 0x3c], 0x98badcfe
mov dword [esi + 0x40], 0x10325476
ret

Function at 0x439699
Capabilities:
Resolve function by parsing pe exports

Disassembly:
sub esp, 0x128
push ebx
push ebp
push esi
push edi
mov edi, dword [esp + 0x14c]
mov ecx, dword [edi]
mov eax, dword [edi + 0x44]
mov dword [esp + 0x30], eax
cmp ecx, dword [edi + 4]
jae 0x43dc7d
mov ebx, dword [esp + 0x154]
mov ebp, dword [esp + 0x140]
mov esi, dword [esp + 0x13c]
mov edx, dword [esp + 0x15c]
inc dword [edi]
cmp edx, dword [edi + 8]
jae 0x43dc8f
test byte [esp + 0x158], 2
mov eax, dword [esp + 0x150]
mov dword [esp + 0x38], eax
je 0x43970b
lea ecx, [esp + 0x58]
mov dword [esp + 0x5c], esi
mov dword [esp + 0x58], ebx
mov dword [esp + 0x154], ecx