joyce8/EMBER2024-capa huggingface dataset:
Function at 0x447051
Capabilities:
Query or enumerate registry value

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x3c
mov eax, dword [0x457048]
push ebx
push esi
push edi
mov edi, dword [sym.imp.KERNEL32.dll_GetModuleHandleA]
xor ebx, ebx
push str.kernel32.dll
mov dword [ebp - 4], eax
mov dword [ebp - 0x18], ebx
xor esi, esi
call edi
push str.GetUserDefaultUILanguage
push eax
mov dword [ebp - 0x20], eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
cmp eax, ebx
je 0x4470f3
call eax
mov esi, dword [sym.imp.KERNEL32.dll_ConvertDefaultLocale]
mov ebx, 0x3ff
mov edi, 0xfc00
mov dword [ebp - 0x18], eax
movzx eax, ax
mov ecx, eax
and ecx, ebx
movzx ecx, cx
and eax, edi
or eax, ecx
push eax
mov dword [ebp - 0x1c], ecx
call esi
push dword [ebp - 0x1c]
mov dword [ebp - 0x3c], eax
call esi
push str.GetSystemDefaultUILanguage
push dword [ebp - 0x20]
mov dword [ebp - 0x38], eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
call eax
mov dword [ebp - 0x18], eax
movzx eax, ax
mov ecx, eax
and ecx, ebx
movzx ebx, cx
and eax, edi
or eax, ebx
push eax
call esi
push ebx
mov dword [ebp - 0x34], eax
call esi
mov dword [ebp - 0x30], eax
push 4
xor ebx, ebx
jmp 0x4471f5
call dword [sym.imp.KERNEL32.dll_GetVersion]
test eax, eax
jns 0x4471a3
lea eax, [ebp - 0x1c]
push eax
push 0x20019
push ebx
push str.Control_PanelDesktopResourceLocale
push 0x80000001
mov dword [ebp - 0x1c], ebx
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExA]
test eax, eax
jne 0x4471f6
lea eax, [ebp - 0x20]
push eax
lea eax, [ebp - 0x14]
push eax
lea eax, [ebp - 0x24]
push eax
push ebx
push ebx
push dword [ebp - 0x1c]
mov dword [ebp - 0x20], 0x10
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
test eax, eax
jne 0x447198
cmp dword [ebp - 0x24], 1
jne 0x447198
lea eax, [ebp - 0x28]
push eax
lea eax, [ebp - 0x14]
push 0x44ea7c
push eax
call fcn.00433d66
add esp, 0xc
cmp eax, 1
jne 0x447198
mov eax, dword [ebp - 0x28]
mov esi, dword [sym.imp.KERNEL32.dll_ConvertDefaultLocale]
mov dword [ebp - 0x18], eax
movzx eax, ax
mov ecx, eax
and ecx, 0x3ff
movzx edi, cx
and eax, 0xfc00
or eax, edi
push eax
call esi
push edi
mov dword [ebp - 0x3c], eax
call esi
push 2
mov dword [ebp - 0x38], eax
pop esi
push dword [ebp - 0x1c]
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
jmp 0x4471f6
push str.ntdll.dll
call edi
cmp eax, ebx
je 0x4471f6
lea ecx, [ebp - 0x18]
push ecx
push 0x44703b
push 1
push 0x10
push eax
mov dword [ebp - 0x18], ebx
call dword [sym.imp.KERNEL32.dll_EnumResourceLanguagesA]
cmp word [ebp - 0x18], bx
je 0x4471f6
movzx eax, word [ebp - 0x18]
mov esi, dword [sym.imp.KERNEL32.dll_ConvertDefaultLocale]
mov ecx, eax
and ecx, 0x3ff
movzx edi, cx
and eax, 0xfc00
or eax, edi
push eax
call esi
push edi
mov dword [ebp - 0x3c], eax
call esi
mov dword [ebp - 0x38], eax
push 2
pop esi
mov dword [ebp + esi*4 - 0x3c], 0x800
inc esi
xor edi, edi
cmp esi, ebx
jle 0x44721c
push dword [ebp + edi*4 - 0x3c]
push dword [ebp + 8]
call fcn.00446fbc
cmp eax, ebx
pop ecx
pop ecx
jne 0x44721e
inc edi
cmp edi, esi
jl 0x447205
xor eax, eax
mov ecx, dword [ebp - 4]
pop edi
pop esi
pop ebx
call fcn.00433605
leave
ret 4
Function at 0x44722d
Capabilities:
Query or enumerate registry value

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x14
push ebx
push edi
xor edi, edi
mov dword [ecx + 0x9c], edi
cmp dword [str.SoftwareMicrosoftWindowsCurrentVersionPoliciesExplorer], edi
mov dword [ebp - 0x10], ecx
mov dword [ebp - 4], edi
mov dword [ebp - 8], edi
mov dword [ebp - 0x14], 4
mov dword [ebp - 0xc], edi
mov ebx, 0x456e40
je 0x4472e9
push esi
lea eax, [ebp - 4]
push eax
push 1
push edi
push dword [ebx]
push 0x80000001
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExA]
test eax, eax
jne 0x4472d1
mov esi, dword [ebx + 4]
jmp 0x4472cb
lea ecx, [ebp - 0x14]
push ecx
lea ecx, [ebp - 8]
push ecx
lea ecx, [ebp - 0xc]
push ecx
push edi
push eax
push dword [ebp - 4]
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
test eax, eax
jne 0x4472bb
cmp dword [ebp - 0xc], 4
jne 0x4472bb
cmp dword [ebp - 8], edi
mov eax, dword [ebp - 0x10]
mov ecx, dword [esi + 4]
je 0x4472b3
or dword [eax + 0x9c], ecx
jmp 0x4472bb
not ecx
and dword [eax + 0x9c], ecx
mov dword [ebp - 8], edi
mov dword [ebp - 0x14], 4
mov dword [ebp - 0xc], edi
add esi, 8
mov eax, dword [esi]
cmp eax, edi
jne 0x44727f
push dword [ebp - 4]
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
add ebx, 8
cmp dword [ebx], edi
mov dword [ebp - 4], edi
jne 0x447262
pop esi
push edi
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
xor eax, eax
pop edi
inc eax
pop ebx
leave
ret

Function at 0x4476a2
Capabilities:
Query or enumerate registry key

Disassembly:
mov eax, 0x44957d
call fcn.00433680
sub esp, 0x11c
mov eax, dword [0x457048]
push ebx
push esi
push edi
mov dword [ebp - 0x14], eax
mov eax, dword [ebp + 0xc]
mov eax, dword [eax]
mov dword [ebp - 0x10], esp
lea ecx, [ebp - 0x124]
push ecx
push eax
push dword [ebp + 8]
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyA]
mov esi, eax
test esi, esi
jne 0x44779b
push 0x104
lea eax, [ebp - 0x11c]
push eax
push 0
push dword [ebp - 0x124]
call dword [sym.imp.ADVAPI32.dll_RegEnumKeyA]
mov esi, eax
test esi, esi
jne 0x44776f
and dword [ebp - 4], eax
lea eax, [ebp - 0x11c]
push eax
lea ecx, [ebp - 0x120]
call fcn.00401780
lea eax, [ebp - 0x120]
push eax
push dword [ebp - 0x124]
mov byte [ebp - 4], 1
call fcn.004476a2
mov ecx, dword [ebp - 0x120]
mov esi, eax
test esi, esi
setne bl
add ecx, 0xfffffff0
mov byte [ebp - 4], 0
call fcn.004011e0
test bl, bl
jne 0x44776f
or dword [ebp - 4], 0xffffffff
jmp 0x4476e0
cmp esi, 0x103
je 0x44777f
cmp esi, 0x3f2
jne 0x44778f
mov eax, dword [ebp + 0xc]
push dword [eax]
push dword [ebp + 8]
call dword [sym.imp.ADVAPI32.dll_RegDeleteKeyA]
mov esi, eax
push dword [ebp - 0x124]
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
mov ecx, dword [ebp - 0x14]
mov eax, esi
call fcn.00433605
pop edi
pop esi
pop ebx
leave
ret 8
Function at 0x447bed
Capabilities:
Get thread local storage value

Disassembly:
push ebx
push esi
mov esi, ecx
push edi
lea ebx, [esi + 0x1c]
push ebx
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
mov edi, dword [esp + 0x10]
test edi, edi
jle 0x447c22
cmp edi, dword [esi + 0xc]
jge 0x447c22
push dword [esi]
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
test eax, eax
je 0x447c22
cmp edi, dword [eax + 8]
jge 0x447c22
mov eax, dword [eax + 0xc]
mov edi, dword [eax + edi*4]
jmp 0x447c24
xor edi, edi
push ebx
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov eax, edi
pop edi
pop esi
pop ebx
ret 4

Function at 0x447d28
Capabilities:
Allocate thread local storage

Disassembly:
xor eax, eax
push esi
mov esi, ecx
mov dword [esi + 0x14], eax
mov dword [esi + 0x18], eax
mov dword [esi + 0x18], 4
mov dword [esi + 4], eax
mov dword [esi + 8], 1
mov dword [esi + 0xc], eax
mov dword [esi + 0x10], eax
call dword [sym.imp.KERNEL32.dll_TlsAlloc]
cmp eax, 0xffffffff
mov dword [esi], eax
jne 0x447d5c
jmp fcn.0043d0ec
lea eax, [esi + 0x1c]
push eax
call dword [sym.imp.KERNEL32.dll_InitializeCriticalSection]
mov eax, esi
pop esi
ret

Function at 0x447dcd
Capabilities:
Get thread local storage value
Set thread local storage value

Disassembly:
push ebp
mov ebp, esp
push ecx
push ebx
push esi
push edi
mov edi, ecx
lea esi, [edi + 0x1c]
push esi
mov dword [ebp - 4], esi
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
mov eax, dword [ebp + 8]
xor ebx, ebx
cmp eax, ebx
jle 0x447ec6
cmp eax, dword [edi + 0xc]
jge 0x447ec6
push dword [edi]
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
mov esi, eax
cmp esi, ebx
je 0x447e1e
mov ecx, dword [ebp + 8]
cmp ecx, dword [esi + 8]
jl 0x447eaf
cmp dword [ebp + 0xc], ebx
je 0x447eaf
jmp 0x447e48
push 0x10
call fcn.00447ab9
cmp eax, ebx
je 0x447e34
mov ecx, eax
call fcn.00447d1f
mov esi, eax
jmp 0x447e36
xor esi, esi
mov dword [esi + 8], ebx
mov dword [esi + 0xc], ebx
mov ecx, dword [edi + 0x14]
mov eax, dword [edi + 0x18]
mov dword [esi + eax], ecx
mov dword [edi + 0x14], esi
mov eax, dword [esi + 0xc]
cmp eax, ebx
jne 0x447e5f
mov eax, dword [edi + 0xc]
shl eax, 2
push eax
push ebx
call dword [sym.imp.KERNEL32.dll_LocalAlloc]
jmp 0x447e6f
mov ecx, dword [edi + 0xc]
push 2
shl ecx, 2
push ecx
push eax
call dword [sym.imp.KERNEL32.dll_LocalReAlloc]
cmp eax, ebx
jne 0x447e81
push dword [ebp - 4]
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
call fcn.0043d0ec
mov ecx, dword [esi + 8]
mov dword [esi + 0xc], eax
mov edx, dword [edi + 0xc]
sub edx, ecx
shl edx, 2
push edx
lea eax, [eax + ecx*4]
push ebx
push eax
call fcn.00433620
mov eax, dword [edi + 0xc]
add esp, 0xc
push esi
mov dword [esi + 8], eax
push dword [edi]
call dword [sym.imp.KERNEL32.dll_TlsSetValue]
mov ecx, dword [ebp + 8]
mov eax, dword [esi + 0xc]
cmp eax, ebx
je 0x447ec1
cmp ecx, dword [esi + 8]
jge 0x447ec1
mov edx, dword [ebp + 0xc]
mov dword [eax + ecx*4], edx
push dword [ebp - 4]
jmp 0x447ec7
push esi
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
pop edi
pop esi
pop ebx
leave
ret 8
Function at 0x447f86
Capabilities:
Get thread local storage value

Disassembly:
push ebx
push esi
mov esi, ecx
lea ebx, [esi + 0x1c]
push ebx
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
cmp dword [esp + 0x10], 0
jne 0x447fb4
push dword [esi]
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
test eax, eax
je 0x447fd2
push dword [esp + 0xc]
mov ecx, esi
push eax
call fcn.00447ef0
jmp 0x447fd2
mov eax, dword [esi + 0x14]
test eax, eax
je 0x447fd2
push edi
push dword [esp + 0x10]
mov edi, dword [eax + 4]
push eax
mov ecx, esi
call fcn.00447ef0
test edi, edi
mov eax, edi
jne 0x447fbc
pop edi
push ebx
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
pop esi
pop ebx
ret 8
mov ecx, dword [0x459d34]
test ecx, ecx
je 0x448085
jmp 0x447f85
ret 8
Function at 0x10001c62
Capabilities:
Set socket configuration

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x18
mov eax, dword [0x100353bc]
xor eax, ebp
mov dword [ebp - 4], eax
push edi
xor eax, eax
xor edi, edi
cmp dword [esi + 0x538], edi
push 4
setne al
mov dword [ebp - 0x14], eax
lea eax, [ebp - 0x14]
push eax
push 8
push 0xffff
push ebx
call dword [sym.imp.WS2_32.dll_setsockopt]
test eax, eax
jns 0x10001cac
push ebx
push 0x10035554
push esi
call fcn.1001e3ce
add esp, 0xc
jmp 0x10001d17
push dword [esi + 0x53c]
mov dword [ebp - 0x10], 1
call fcn.1002ecc6
imul eax, eax, 0x3e8
push dword [esi + 0x540]
mov dword [ebp - 0x14], eax
mov dword [ebp - 0xc], eax
call fcn.1002ecc6
imul eax, eax, 0x3e8
pop ecx
pop ecx
push edi
push edi
mov dword [ebp - 0x14], eax
mov dword [ebp - 8], eax
lea eax, [ebp - 0x18]
push eax
push edi
push edi
push 0xc
lea eax, [ebp - 0x10]
push eax
push 0x98000004
push ebx
call dword [sym.imp.WS2_32.dll_WSAIoctl]
test eax, eax
je 0x10001d17
call dword [sym.imp.WS2_32.dll_WSAGetLastError]
push eax
push ebx
push 0x10035524
push esi
call fcn.1001e3ce
add esp, 0x10
mov ecx, dword [ebp - 4]
xor ecx, ebp
pop edi
call fcn.10033b66
leave
ret
Function at 0x100022ff
Capabilities:
Get local ipv4 addresses
Get socket information

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x110
mov eax, dword [0x100353bc]
xor eax, ebp
mov dword [ebp - 4], eax
push esi
mov esi, dword [ebp + 8]
cmp dword [esi + 0x8c], 2
mov eax, dword [esi]
mov dword [ebp - 0x108], esi
mov dword [ebp - 0x10c], eax
je 0x1000247a
push ebx
xor ebx, ebx
push edi
cmp dword [esi + 0x3a0], ebx
jne 0x10002471
cmp dword [esi + 0x410], ebx
jne 0x10002471
lea eax, [ebp - 0x110]
push eax
lea eax, [ebp - 0x104]
push eax
push dword [ebp + 0xc]
mov edi, 0x80
mov dword [ebp - 0x110], edi
call dword [sym.imp.WS2_32.dll_getpeername]
test eax, eax
je 0x1000238e
call dword [sym.imp.WS2_32.dll_WSAGetLastError]
mov edi, eax
push edi
push esi
call fcn.1002396e
push eax
push edi
push 0x100356fc
jmp 0x1000245b
push edi
lea eax, [ebp - 0x84]
push ebx
push eax
mov dword [ebp - 0x110], edi
call sub.MSVCR100.dll_memset
add esp, 0xc
lea eax, [ebp - 0x110]
push eax
lea eax, [ebp - 0x84]
push eax
push dword [ebp + 0xc]
call dword [sym.imp.WS2_32.dll_getsockname]
test eax, eax
je 0x100023db
call dword [sym.imp.WS2_32.dll_WSAGetLastError]
mov edi, eax
push edi
push esi
call fcn.1002396e
push eax
push edi
push 0x100355b0
jmp 0x1000245b
lea ebx, [esi + 0x102]
lea edi, [esi + 0x130]
lea esi, [ebp - 0x104]
call fcn.100022c6
test eax, eax
jne 0x10002413
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov esi, eax
push esi
push dword [ebp - 0x108]
call fcn.1002396e
push eax
push esi
push 0x100356d0
jmp 0x1000245b
mov eax, dword [ebp - 0x108]
push 0xb
lea edi, [eax + 0x58]
pop ecx
mov esi, ebx
rep movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
lea edi, [eax + 0x164]
lea ebx, [eax + 0x134]
lea esi, [ebp - 0x84]
call fcn.100022c6
test eax, eax
jne 0x1000246b
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov esi, eax
push esi
push dword [ebp - 0x108]
call fcn.1002396e
push eax
push esi
push 0x100356a4
push dword [ebp - 0x10c]
call fcn.1001e441
add esp, 0x18
jmp 0x10002478
mov esi, dword [ebp - 0x108]
push esi
call fcn.10002253
pop ecx
pop edi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
pop esi
call fcn.10033b66
leave
ret

Function at 0x10002487
Capabilities:
Set socket configuration

Disassembly:
push ebp
mov ebp, esp
push esi
push edi
mov edi, dword [ebp + 8]
mov esi, dword [edi]
push 4
xor eax, eax
lea ecx, [ebp + 8]
push ecx
inc eax
push eax
push 6
push dword [ebp + 0xc]
mov dword [ebp + 8], eax
call dword [sym.imp.WS2_32.dll_setsockopt]
test eax, eax
jns 0x100024cb
call dword [sym.imp.WS2_32.dll_WSAGetLastError]
push eax
push edi
call fcn.1002396e
push eax
push 0x10035738
push esi
call fcn.1001e3ce
add esp, 0x14
jmp 0x100024d8
push 0x10035724
push esi
call fcn.1001e3ce
pop ecx
pop ecx
pop edi
pop esi
pop ebp
ret
Function at 0x100024dc
Capabilities:
Set socket configuration

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xc
push esi
xor eax, eax
push 2
mov dword [ebp - 8], 0x4020
mov dword [ebp - 4], eax
mov dword [ebp - 0xc], 4
pop esi
cmp dword [0x1003fef0], eax
jne 0x10002525
push 3
push esi
push eax
push 6
call fcn.10024112
add esp, 0x10
test eax, eax
je 0x1000251b
mov dword [0x1003fef0], esi
jmp 0x10002569
mov dword [0x1003fef0], 1
cmp dword [0x1003fef0], esi
je 0x10002569
push edi
lea eax, [ebp - 0xc]
push eax
lea eax, [ebp - 4]
push eax
mov edi, 0x1001
push edi
mov esi, 0xffff
push esi
push dword [ebp + 8]
call dword [sym.imp.WS2_32.dll_getsockopt]
test eax, eax
jne 0x10002557
mov eax, dword [ebp - 4]
cmp eax, dword [ebp - 8]
jg 0x10002568
push 4
lea eax, [ebp - 8]
push eax
push edi
push esi
push dword [ebp + 8]
call dword [sym.imp.WS2_32.dll_setsockopt]
pop edi
pop esi
leave
ret

Function at 0x100025ed
Capabilities:
Receive data
Receive data on socket

Disassembly:
push ebp
mov ebp, esp
mov eax, dword [ebp + 8]
cmp dword [eax + 0x1d8], 0
je 0x1000260b
push eax
call fcn.100339d0
pop ecx
test eax, eax
jne 0x10002627
xor eax, eax
pop ebp
ret
mov eax, dword [eax + 0x190]
cmp eax, 0xffffffff
je 0x10002607
push 2
push 1
lea ecx, [ebp + 0xb]
push ecx
push eax
call dword [sym.imp.WS2_32.dll_recv]
jmp 0x10002603
xor eax, eax
inc eax
pop ebp
ret
Function at 0x100050b1
Capabilities:
Create new key via cryptacquirecontext
Encrypt data using des via winapi
Encrypt or decrypt via wincrypt

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x28
mov eax, dword [0x100353bc]
xor eax, ebp
mov dword [ebp - 4], eax
mov eax, dword [ebp + 0xc]
push esi
push 8
pop esi
push 0xf0000000
push 1
push 0
mov dword [ebp - 0x28], eax
push 0
lea eax, [ebp - 0x24]
push eax
mov dword [ebp - 0x20], esi
call dword [sym.imp.ADVAPI32.dll_CryptAcquireContextA]
test eax, eax
jne 0x100050f4
mov ecx, dword [ebp - 4]
xor ecx, ebp
pop esi
call fcn.10033b66
leave
ret
push edi
xor eax, eax
lea edi, [ebp - 0x18]
stosd dword es:[edi], eax
stosd dword es:[edi], eax
stosd dword es:[edi], eax
stosd dword es:[edi], eax
stosd dword es:[edi], eax
mov eax, dword [ebp - 0x28]
mov dword [ebp - 0x10], esi
lea esi, [ebp - 0xc]
mov word [ebp - 0x18], 0x208
mov dword [ebp - 0x14], 0x6601
call fcn.10005040
mov eax, esi
push 8
push eax
call fcn.10004868
pop ecx
pop ecx
lea eax, [ebp - 0x1c]
push eax
xor esi, esi
push esi
push esi
push 0x14
lea eax, [ebp - 0x18]
push eax
push dword [ebp - 0x24]
call dword [sym.imp.ADVAPI32.dll_CryptImportKey]
test eax, eax
jne 0x10005152
xor edi, edi
push esi
push dword [ebp - 0x24]
call dword [sym.imp.ADVAPI32.dll_CryptReleaseContext]
mov eax, edi
pop edi
jmp 0x100050e7
mov eax, dword [ebp + 8]
mov ecx, dword [eax]
push dword [ebp - 0x20]
mov dword [ebx], ecx
mov eax, dword [eax + 4]
mov dword [ebx + 4], eax
lea eax, [ebp - 0x20]
push eax
push ebx
push esi
push esi
push esi
push dword [ebp - 0x1c]
call dword [sym.imp.ADVAPI32.dll_CryptEncrypt]
push dword [ebp - 0x1c]
call dword [sym.imp.ADVAPI32.dll_CryptDestroyKey]
xor edi, edi
inc edi
jmp 0x10005143

Function at 0x10005272
Capabilities:
Hash data using md4
Hash data via wincrypt
Initialize hashing via wincrypt

Disassembly:
push ebp
mov ebp, esp
mov eax, dword [ebp + 0xc]
sub esp, 0xc
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x1000527e
push ebx
push esi
sub eax, edx
mov esi, eax
push edi
lea edi, [esi + esi]
push edi
call dword [0x10035328]
mov ebx, eax
pop ecx
test ebx, ebx
jne 0x100052a5
push 0x1b
pop eax
jmp 0x10005331
push esi
push dword [ebp + 0xc]
mov ecx, ebx
call fcn.10005252
add esp, 8
push 0xf0000000
push 1
xor esi, esi
push esi
push esi
lea eax, [ebp - 8]
push eax
call dword [sym.imp.ADVAPI32.dll_CryptAcquireContextA]
test eax, eax
je 0x1000531d
lea eax, [ebp - 4]
push eax
push esi
push esi
push 0x8002
push dword [ebp - 8]
call dword [sym.imp.ADVAPI32.dll_CryptCreateHash]
test eax, eax
je 0x10005313
push esi
push edi
push ebx
push dword [ebp - 4]
mov dword [ebp - 0xc], 0x10
call dword [sym.imp.ADVAPI32.dll_CryptHashData]
push esi
lea eax, [ebp - 0xc]
push eax
push dword [ebp + 0x10]
push 2
push dword [ebp - 4]
call dword [sym.imp.ADVAPI32.dll_CryptGetHashParam]
push dword [ebp - 4]
call dword [sym.imp.ADVAPI32.dll_CryptDestroyHash]
push esi
push dword [ebp - 8]
call dword [sym.imp.ADVAPI32.dll_CryptReleaseContext]
mov edi, dword [ebp + 0x10]
xor eax, eax
add edi, 0x10
stosd dword es:[edi], eax
push ebx
stosb byte es:[edi], al
call dword [0x1003532c]
pop ecx
xor eax, eax
pop edi
pop esi
pop ebx
leave
ret
Function at 0x10005f43
Capabilities:
Create thread

Disassembly:
push ebp
mov ebp, esp
push 0
push 0
push dword [ebp + 0xc]
push dword [ebp + 8]
push 0
push 0
call dword [sym.imp.MSVCR100.dll__beginthreadex]
add esp, 0x18
test eax, eax
je 0x10005f66
cmp eax, 0xffffffff
jne 0x10005f68
xor eax, eax
pop ebp
ret

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

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x1c
push ebx
push esi
mov esi, dword [sym.imp.KERNEL32.dll_GetTickCount]
call esi
mov ebx, eax
push 0
push 0
push 0
lea eax, [ebp - 0x1c]
push eax
call dword [sym.imp.USER32.dll_GetMessageA]
lea eax, [ebp - 0x1c]
push eax
call dword [sym.imp.USER32.dll_TranslateMessage]
lea eax, [ebp - 0x1c]
push eax
call dword [sym.imp.USER32.dll_DispatchMessageA]
call esi
sub eax, ebx
cmp eax, 0x32
jb 0x10006497
pop esi
pop ebx
leave
ret

Function at 0x100064c8
Capabilities:
Initialize winsock library

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x194
mov eax, dword [0x100353bc]
xor eax, ebp
mov dword [ebp - 4], eax
lea eax, [ebp - 0x194]
push eax
push 0x202
call dword [sym.imp.WS2_32.dll_WSAStartup]
test eax, eax
jne 0x1000652a
cmp byte [ebp - 0x194], 2
jne 0x10006524
mov eax, dword [ebp - 0x194]
shr eax, 8
cmp al, 2
jne 0x10006524
call fcn.10005dac
test eax, eax
jne 0x1000652d
push 0x10035d94
call fcn.1001ea90
pop ecx
call fcn.10006485
xor eax, eax
jmp 0x1000652d
call dword [sym.imp.WS2_32.dll_WSACleanup]
push 2
pop eax
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.10033b66
leave
ret

Function at 0x10008363
Capabilities:
Read file on windows

Disassembly:
push ebp
mov ebp, esp
mov eax, dword [esi]
cmp dword [eax + 4], 3
push edi
jne 0x10008389
mov ecx, dword [esi + 0xc]
test ecx, ecx
jne 0x1000837a
xor eax, eax
jmp 0x100083df
push dword [eax + 8]
push dword [ebp + 0xc]
push 1
push dword [ebp + 8]
call ecx
jmp 0x100083bc
cmp dword [esi + 8], 0
jne 0x100083ab
push 0x1003601c
push dword [eax + 8]
call dword [sym.imp.MSVCR100.dll_fopen]
pop ecx
pop ecx
mov dword [esi + 8], eax
test eax, eax
jne 0x100083ab
or eax, 0xffffffff
jmp 0x100083df
push dword [esi + 8]
push dword [ebp + 0xc]
push 1
push dword [ebp + 8]
call dword [sym.imp.MSVCR100.dll_fread]
mov edi, eax
add esp, 0x10
test edi, edi
jne 0x100083dd
mov eax, dword [esi + 8]
test eax, eax
je 0x100083d7
push eax
call dword [sym.imp.MSVCR100.dll_fclose]
and dword [esi + 8], edi
pop ecx
mov eax, dword [esi]
mov eax, dword [eax]
mov dword [esi], eax
mov eax, edi
pop edi
pop ebp
ret
Function at 0x10008cad
Capabilities:
Get local ipv4 addresses
Get socket information

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x1c
mov eax, dword [0x100353bc]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
push esi
push edi
mov edi, ecx
mov eax, dword [edi + 0x194]
mov esi, dword [edi]
lea ecx, [ebp - 0x18]
push ecx
lea ecx, [ebp - 0x14]
push ecx
push eax
mov dword [ebp - 0x1c], eax
or ebx, 0xffffffff
mov dword [ebp - 0x18], 0x10
call dword [sym.imp.WS2_32.dll_getsockname]
test eax, eax
jne 0x10008d04
lea eax, [ebp - 0x18]
push eax
lea eax, [ebp - 0x14]
push eax
push dword [ebp - 0x1c]
mov dword [ebp - 0x18], 0x10
call dword [sym.imp.WS2_32.dll_accept]
mov ebx, eax
push dword [ebp - 0x1c]
push edi
call fcn.1000262c
pop ecx
pop ecx
cmp ebx, 0xffffffff
jne 0x10008d26
push 0x100362cc
push esi
call fcn.1001e441
pop ecx
pop ecx
push 0x1e
pop eax
jmp 0x10008d78
push 0x100362a8
push esi
call fcn.1001e3ce
and dword [edi + 0x3c8], 0
push 1
push ebx
mov dword [edi + 0x194], ebx
call fcn.10019e63
xor ecx, ecx
inc ecx
mov dword [edi + 0x1a4], ecx
mov eax, dword [esi + 0x1b0]
add esp, 0x10
test eax, eax
je 0x10008d76
push ecx
push ebx
push dword [esi + 0x1b4]
call eax
add esp, 0xc
test eax, eax
je 0x10008d76
call fcn.10008bf7
push 0x2a
jmp 0x10008d23
xor eax, eax
mov ecx, dword [ebp - 4]
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.10033b66
leave
ret