joyce8/EMBER2024-capa huggingface dataset:
Function at 0x101afdf
Capabilities:
Get common file path

Disassembly:
push ebp
mov ebp, esp
push ecx
push ecx
mov eax, dword [ebp + 8]
push ebx
mov ebx, dword [eax]
test ebx, ebx
push esi
mov esi, dword [sym.imp.KERNEL32.dll_HeapAlloc]
push edi
jne 0x101afce
push reloc.WS2_32.dll_ntohl
push 0
push dword [0x1024f78]
call esi
mov ebx, eax
test ebx, ebx
je 0x101b071
push 0x10
pop ecx
xor eax, eax
mov edi, ebx
rep stosd dword es:[edi], eax
mov byte [ebx + 2], 7
mov byte [ebx + 3], 1
mov word [ebx], 4
jmp 0x101afee
movzx eax, word [ebx]
add eax, ebx
lea ecx, [ebx + 4]
cmp ecx, eax
jae 0x101afee
mov edx, dword [ebp + 0xc]
mov edx, dword [edx]
cmp dword [ecx], edx
je 0x101b071
add ecx, 4
cmp ecx, eax
jb 0x101afdf
movzx ecx, word [ebx]
push reloc.WS2_32.dll_ntohl
mov dword [ebp - 4], ecx
pop eax
cmp eax, ecx
jge 0x101b004
shl eax, 1
cmp eax, 0x10000
jl 0x101aff7
add ecx, 4
cmp ecx, eax
jle 0x101b05d
lea edi, [eax + eax]
push edi
push 0
push dword [0x1024f78]
call esi
mov edx, eax
test edx, edx
mov dword [ebp - 8], edx
je 0x101b071
mov ecx, edi
mov esi, ecx
shr ecx, 2
xor eax, eax
mov edi, edx
rep stosd dword es:[edi], eax
mov ecx, esi
and ecx, 3
rep stosb byte es:[edi], al
mov ecx, dword [ebp - 4]
mov eax, ecx
shr ecx, 2
mov edi, edx
mov esi, ebx
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
push ebx
and ecx, 3
push 0
rep movsb byte es:[edi], byte [esi]
push dword [0x1024f78]
call dword [sym.imp.KERNEL32.dll_HeapFree]
mov ebx, dword [ebp - 8]
movzx eax, word [ebx]
mov ecx, dword [ebp + 0xc]
mov ecx, dword [ecx]
mov dword [eax + ebx], ecx
mov eax, dword [ebp + 8]
add word [ebx], 4
mov dword [eax], ebx
pop edi
pop esi
pop ebx
leave
ret 8
Function at 0x101c700
Capabilities:
Create thread

Disassembly:
push ebp
mov ebp, esp
push ecx
push ebx
push esi
mov esi, eax
lea eax, [esi + 0x18]
test eax, eax
push edi
je 0x101c704
movzx eax, word [eax]
jmp 0x101c706
xor eax, eax
lea ecx, [esi + 0x24]
add eax, 4
test ecx, ecx
je 0x101c715
movzx ecx, word [ecx]
jmp 0x101c717
xor ecx, ecx
add eax, ecx
lea ecx, [esi + 0x30]
test ecx, ecx
je 0x101c725
movzx ecx, word [ecx]
jmp 0x101c727
xor ecx, ecx
add eax, ecx
lea ecx, [esi + 0x38]
test ecx, ecx
je 0x101c735
movzx ecx, word [ecx]
jmp 0x101c737
xor ecx, ecx
lea ebx, [esi + 0x40]
add eax, ecx
test ebx, ebx
je 0x101c745
movzx ecx, word [ebx]
jmp 0x101c747
xor ecx, ecx
add eax, ecx
mov ecx, dword [esi + 4]
test ecx, ecx
je 0x101c755
movzx ecx, word [ecx]
jmp 0x101c757
xor ecx, ecx
add eax, ecx
mov ecx, dword [esi + 8]
test ecx, ecx
je 0x101c765
movzx ecx, word [ecx]
jmp 0x101c767
xor ecx, ecx
lea edi, [esi + 0xc]
add eax, ecx
test edi, edi
je 0x101c775
movzx ecx, word [edi]
jmp 0x101c777
xor ecx, ecx
add eax, ecx
mov ecx, dword [esi + 0x50]
test ecx, ecx
je 0x101c785
movzx ecx, word [ecx]
jmp 0x101c787
xor ecx, ecx
lea ecx, [eax + ecx + 9]
mov eax, dword [esi + 0x7c]
test eax, eax
je 0x101c797
movzx eax, word [eax]
jmp 0x101c799
xor eax, eax
mov edx, dword [reloc.msvcrt.dll___p__commode]
add eax, edx
add eax, ecx
cmp eax, 0x8000
jbe 0x101c7b1
xor eax, eax
jmp 0x101c8b3
push 4
pop ecx
call fcn.0101c131
mov dword [ebp - 4], eax
lea eax, [esi + 0x18]
test eax, eax
je 0x101c7c8
movzx edx, word [eax]
jmp 0x101c7ca
xor edx, edx
push eax
call fcn.0101c14a
lea eax, [esi + 0x24]
test eax, eax
je 0x101c7dc
movzx edx, word [eax]
jmp 0x101c7de
xor edx, edx
push eax
call fcn.0101c14a
lea eax, [esi + 0x30]
test eax, eax
je 0x101c7f0
movzx edx, word [eax]
jmp 0x101c7f2
xor edx, edx
push eax
call fcn.0101c14a
lea eax, [esi + 0x38]
test eax, eax
je 0x101c804
movzx edx, word [eax]
jmp 0x101c806
xor edx, edx
push eax
call fcn.0101c14a
test ebx, ebx
je 0x101c815
movzx edx, word [ebx]
jmp 0x101c817
xor edx, edx
push ebx
call fcn.0101c14a
mov eax, dword [esi + 4]
test eax, eax
je 0x101c829
movzx edx, word [eax]
jmp 0x101c82b
xor edx, edx
push eax
call fcn.0101c14a
mov eax, dword [esi + 8]
test eax, eax
je 0x101c83d
movzx edx, word [eax]
jmp 0x101c83f
xor edx, edx
push eax
call fcn.0101c14a
test edi, edi
je 0x101c84e
movzx edx, word [edi]
jmp 0x101c850
xor edx, edx
push edi
call fcn.0101c14a
mov eax, dword [esi + 0x50]
test eax, eax
je 0x101c862
movzx edx, word [eax]
jmp 0x101c864
xor edx, edx
push eax
call fcn.0101c14a
lea eax, [esi + 0x58]
xor edx, edx
push eax
inc edx
call fcn.0101c14a
lea eax, [esi + 0x5c]
push eax
push 4
pop edx
call fcn.0101c14a
lea eax, [esi + 0x6c]
push eax
call fcn.0101c14a
mov esi, dword [esi + 0x7c]
test esi, esi
je 0x101c897
movzx edx, word [esi]
jmp 0x101c899
xor edx, edx
push esi
call fcn.0101c14a
mov eax, dword [reloc.msvcrt.dll___p__commode]
mov ecx, dword [reloc.msvcrt.dll___p__commode]
mov edx, dword [ebp - 4]
mov dword [ecx + edx], eax
xor eax, eax
inc eax
pop edi
pop esi
pop ebx
leave
ret
Function at 0x100017c0
Capabilities:
Create thread

Disassembly:
push 0
push 0
push 0
push 0
call dword [sym.imp.KERNEL32.dll_CreateEventA]
test eax, eax
mov dword [0x10034f48], eax
jne 0x100017e7
push str.Create_NetTransEvent_Failed_
call fcn.10002c40
add esp, 4
xor eax, eax
ret
push 0
push 0
push 0x10002ca0
call dword [sym.imp.MSVCRT.dll__beginthread]
add esp, 0xc
mov dword [0x1004c3e4], eax
test eax, eax
jne 0x10001812
push str.Create_NetTransThread_Failed_
call fcn.10002c40
add esp, 4
xor eax, eax
ret
mov dword [0x1004c3e4], 0
mov eax, 1
ret

Function at 0x10002c40
Capabilities:
Print debug messages

Disassembly:
mov eax, dword [0x1004e01c]
sub esp, 0x400
test eax, eax
je 0x10002c94
push edi
mov ecx, 0xff
xor eax, eax
lea edi, [esp + 5]
mov byte [esp + 4], 0
lea edx, [esp + 4]
rep stosd dword es:[edi], eax
mov ecx, dword [esp + 0x408]
stosw word es:[edi], ax
stosb byte es:[edi], al
lea eax, [esp + 0x40c]
push eax
push ecx
push 0x400
push edx
call dword [sym.imp.MSVCRT.dll__vsnprintf]
add esp, 0x10
lea eax, [esp + 4]
push eax
call dword [sym.imp.KERNEL32.dll_OutputDebugStringA]
pop edi
add esp, 0x400
ret
Function at 0x10005000
Capabilities:
Find taskbar

Disassembly:
sub esp, 0xb0
push ebx
push ebp
push esi
push edi
push 0
push str.Shell_TrayWnd
call dword [sym.imp.USER32.dll_FindWindowA]
push eax
call sub.MFC42.DLL_CWnd::FromHandle
test eax, eax
jne 0x1000502b
push str.No_Find_Shell_TrayWnd_Window
jmp 0x10005204
mov eax, dword [eax + 0x20]
mov edi, dword [sym.imp.USER32.dll_FindWindowExA]
push 0
push str.TrayNotifyWnd
push 0
push eax
call edi
mov esi, eax
test esi, esi
jne 0x10005050
push str.No_Find_TrayNotifyWnd_Window
jmp 0x10005204
push 0
push str.SysPager
push 0
push esi
call edi
test eax, eax
jne 0x1000506f
push str.No_Find_Syspager_Window
call fcn.10002c40
add esp, 4
mov eax, esi
push 0
push str.ToolbarWindow32
push 0
push eax
call edi
mov ebx, eax
test ebx, ebx
je 0x100051ff
xor eax, eax
mov ecx, 0x20
push eax
lea edi, [esp + 0x41]
push eax
mov byte [esp + 0x44], 0
push 0x418
push ebx
rep stosd dword es:[edi], eax
mov dword [esp + 0x20], eax
call dword [sym.imp.USER32.dll_SendMessageA]
lea ecx, [esp + 0x24]
mov ebp, eax
push ecx
push ebx
mov dword [esp + 0x28], ebp
call dword [sym.imp.USER32.dll_GetWindowThreadProcessId]
mov edx, dword [esp + 0x24]
push edx
push 0
push 0x1f0fff
call dword [sym.imp.KERNEL32.dll_OpenProcess]
push 4
push 0x1000
mov edi, eax
push 0x80
push 0
push edi
call dword [sym.imp.KERNEL32.dll_VirtualAllocEx]
mov esi, eax
test esi, esi
jne 0x1000510b
push 0x1000e1b0
call fcn.10002c40
add esp, 4
push edi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0xb0
ret
test ebp, ebp
mov dword [esp + 0x14], 0
jle 0x100051d9
mov ebp, dword [sym.imp.KERNEL32.dll_ReadProcessMemory]
xor eax, eax
push esi
mov dword [esp + 0x20], eax
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x18]
push eax
push 0x417
push ebx
call dword [sym.imp.USER32.dll_SendMessageA]
lea ecx, [esp + 0x10]
lea edx, [esp + 0x28]
push ecx
push 0x14
push edx
push esi
push edi
call ebp
mov edx, dword [esp + 0x34]
lea eax, [esp + 0x10]
push eax
lea ecx, [esp + 0x20]
push 4
push ecx
push edx
push edi
call ebp
mov ecx, dword [esp + 0x1c]
lea eax, [esp + 0x18]
push eax
push ecx
call dword [sym.imp.USER32.dll_GetWindowThreadProcessId]
mov edx, dword [esp + 0x18]
mov eax, dword [0x1004c3f0]
cmp edx, eax
jne 0x100051c4
mov eax, dword [esp + 0x2c]
push esi
push eax
push 0x42d
push ebx
call dword [sym.imp.USER32.dll_SendMessageA]
lea ecx, [esp + 0x10]
lea edx, [esp + 0x3c]
push ecx
push 0x80
push edx
push esi
push edi
call ebp
mov eax, dword [0x1004c3f8]
sub eax, 3
je 0x100051b7
dec eax
jne 0x100051c4
lea eax, [esp + 0x3c]
push eax
jmp 0x100051bc
lea ecx, [esp + 0x3c]
push ecx
call fcn.10005220
add esp, 4
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x20]
inc eax
cmp eax, ecx
mov dword [esp + 0x14], eax
jl 0x10005121
push 0x8000
push 0
push esi
push edi
call dword [sym.imp.KERNEL32.dll_VirtualFreeEx]
push edi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
add esp, 0xb0
ret
push str.No_find_ToolbarWindow32_window
call fcn.10002c40
add esp, 4
xor eax, eax
pop edi
pop esi
pop ebp
pop ebx
add esp, 0xb0
ret
Function at 0x10009af0
Capabilities:
Get graphical window text

Disassembly:
sub esp, 8
push ebx
mov ebx, dword [sym.imp.USER32.dll_GetWindowTextA]
push ebp
push esi
push edi
mov dword [esp + 0x10], 0
mov dword [esp + 0x14], 0
xor esi, esi
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x1c]
mov edi, dword [sym.imp.USER32.dll_FindWindowExA]
push 0
push str.32770
push eax
push ecx
call edi
test eax, eax
mov dword [esp + 0x10], eax
je 0x10009bdf
push eax
call dword [sym.imp.USER32.dll_IsWindowVisible]
test eax, eax
je 0x10009b0f
mov edx, dword [esp + 0x14]
mov eax, dword [esp + 0x10]
push 0
push str.32770
push edx
push eax
call edi
test eax, eax
mov dword [esp + 0x14], eax
je 0x10009b0f
push eax
call dword [sym.imp.USER32.dll_IsWindowVisible]
test eax, eax
je 0x10009b3f
xor ebp, ebp
mov ecx, dword [esp + 0x14]
push 0
push str.Static
push esi
push ecx
call edi
mov esi, eax
test esi, esi
je 0x10009b3f
push esi
call dword [sym.imp.USER32.dll_IsWindowVisible]
test eax, eax
je 0x10009b67
test ebp, ebp
jne 0x10009b9e
mov edx, dword [esp + 0x20]
push 0x20
push edx
push esi
call ebx
mov edi, dword [sym.imp.USER32.dll_FindWindowExA]
inc ebp
jmp 0x10009b67
cmp ebp, 1
jne 0x10009bb6
mov eax, dword [esp + 0x24]
push 0x20
push eax
push esi
call ebx
mov edi, dword [sym.imp.USER32.dll_FindWindowExA]
inc ebp
jmp 0x10009b67
cmp ebp, 2
jne 0x10009bd6
mov edi, dword [esp + 0x28]
push 0x20
push edi
push esi
call ebx
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
jne 0x10009bd6
mov ebp, 1
mov edi, dword [sym.imp.USER32.dll_FindWindowExA]
inc ebp
jmp 0x10009b67
pop edi
pop esi
pop ebp
pop ebx
add esp, 8
ret
Function at 0x1000aac0
Capabilities:
Get graphical window text

Disassembly:
sub esp, 0x80
push esi
push edi
mov ecx, 0x1f
xor eax, eax
lea edi, [esp + 9]
mov byte [esp + 8], 0
rep stosd dword es:[edi], eax
mov esi, dword [sym.imp.USER32.dll_FindWindowA]
push 0
stosw word es:[edi], ax
push str.tSkMainForm.UnicodeClass
stosb byte es:[edi], al
call esi
test eax, eax
jne 0x1000ab00
push eax
push str.TZapMainForm.UnicodeClass
call esi
test eax, eax
je 0x1000aba2
lea ecx, [esp + 8]
push 0x80
push ecx
push eax
call dword [sym.imp.USER32.dll_GetWindowTextA]
lea edx, [esp + 8]
push edx
call fcn.10002c40
lea eax, [esp + 0xc]
push 0x2d
push eax
call dword [sym.imp.MSVCRT.dll_strrchr]
mov edx, eax
add esp, 0xc
test edx, edx
je 0x1000aba2
mov al, byte [edx + 1]
inc edx
cmp al, 0x20
jne 0x1000aba2
inc edx
or ecx, 0xffffffff
mov edi, edx
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
mov esi, ecx
cmp esi, 0x3c
jle 0x1000ab52
mov esi, 0x3c
mov ecx, 0x21
xor eax, eax
mov edi, 0x1004c360
push esi
push edx
push 0x1004c3a4
rep stosd dword es:[edi], eax
mov dword [0x1004c360], 1
call dword [sym.imp.MSVCRT.dll_strncpy]
add esp, 0xc
push 0x1000f1ac
call fcn.10002c40
add esp, 4
push 0x1004c3a4
call fcn.10002c40
add esp, 4
mov eax, 1
pop edi
pop esi
add esp, 0x80
ret
push 0x1000f194
call fcn.10002c40
add esp, 4
xor eax, eax
pop edi
pop esi
add esp, 0x80
ret
Function at 0x4015d0
Capabilities:
Extract resource via kernel32 functions

Disassembly:
push ebx
mov ebx, dword [esp + 8]
push edi
mov edi, dword [esp + 0x10]
push edi
push ebx
call dword [sym.imp.KERNEL32.dll_LoadResource]
test eax, eax
jne 0x4015e9
pop edi
pop ebx
ret
push esi
push eax
call dword [sym.imp.KERNEL32.dll_LockResource]
mov esi, eax
test esi, esi
je 0x401624
push edi
push ebx
call dword [sym.imp.KERNEL32.dll_SizeofResource]
mov ecx, dword [esp + 0x18]
add eax, esi
and ecx, 0xf
jbe 0x401620
lea ebx, [ebx]
cmp esi, eax
jae 0x401624
sub ecx, 1
movzx edx, word [esi]
lea esi, [esi + edx*2 + 2]
jne 0x401610
cmp esi, eax
jb 0x40162a
pop esi
pop edi
xor eax, eax
pop ebx
ret
mov ax, word [esi]
neg ax
sbb eax, eax
and eax, esi
pop esi
pop edi
pop ebx
ret

Function at 0x4019c0
Capabilities:
Set registry value

Disassembly:
mov edx, dword [esp + 4]
push 4
lea eax, [esp + 0xc]
push eax
mov eax, dword [ecx]
push 4
push 0
push edx
push eax
call dword [sym.imp.ADVAPI32.dll_RegSetValueExW]
ret 8

Function at 0x4019e0
Capabilities:
Set registry value

Disassembly:
push esi
mov esi, dword [esp + 0xc]
test esi, esi
push edi
mov edi, ecx
jne 0x4019f6
push 0x80004005
call fcn.00401000
push esi
call dword [sym.imp.KERNEL32.dll_lstrlenW]
mov ecx, dword [esp + 0x14]
mov edx, dword [esp + 0xc]
lea eax, [eax + eax + 2]
push eax
mov eax, dword [edi]
push esi
push ecx
push 0
push edx
push eax
call dword [sym.imp.ADVAPI32.dll_RegSetValueExW]
pop edi
pop esi
ret 0xc

Function at 0x401a20
Capabilities:
Set registry value

Disassembly:
push ecx
push ebp
mov ebp, dword [esp + 0x10]
test ebp, ebp
mov dword [esp + 4], ecx
jne 0x401a38
push 0x80004005
call fcn.00401000
push ebx
mov ebx, dword [sym.imp.KERNEL32.dll_lstrlenW]
push esi
push edi
xor edi, edi
mov esi, ebp
push esi
call ebx
add eax, 1
lea ecx, [eax + eax]
add esi, ecx
add edi, ecx
cmp eax, 1
jne 0x401a45
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x10]
mov edx, dword [ecx]
push edi
push ebp
push 7
push 0
push eax
push edx
call dword [sym.imp.ADVAPI32.dll_RegSetValueExW]
pop edi
pop esi
pop ebx
pop ebp
pop ecx
ret 8
Function at 0x402880
Capabilities:
Delete registry key
Query or enumerate registry key

Disassembly:
sub esp, 0x21c
mov eax, dword [0x4398b0]
xor eax, esp
mov dword [esp + 0x218], eax
push ebp
push esi
push edi
mov edi, dword [esp + 0x22c]
mov ebp, ecx
mov eax, dword [ebp]
lea ecx, [esp + 0x14]
push ecx
push 0x2001f
push 0
push edi
push eax
mov dword [esp + 0x2c], edi
mov dword [esp + 0x20], 0
mov dword [esp + 0x28], 0
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
mov ecx, dword [esp + 0xc]
mov esi, eax
test esi, esi
jne 0x4028ee
test ecx, ecx
je 0x4028e0
push ecx
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
test eax, eax
mov ecx, dword [esp + 0x14]
mov esi, eax
mov dword [esp + 0xc], ecx
je 0x4028fc
test ecx, ecx
je 0x4029a1
push ecx
jmp 0x40299b
mov esi, dword [sym.imp.ADVAPI32.dll_RegEnumKeyExW]
lea edx, [esp + 0x1c]
push edx
push 0
push 0
push 0
lea eax, [esp + 0x20]
push eax
lea edx, [esp + 0x38]
push edx
push 0
push ecx
mov dword [esp + 0x30], 0x100
call esi
test eax, eax
jne 0x40296e
jmp 0x402930
lea eax, [esp + 0x24]
push eax
lea ecx, [esp + 0x10]
call fcn.00402880
mov edi, eax
test edi, edi
jne 0x4029bd
lea ecx, [esp + 0x1c]
push ecx
mov ecx, dword [esp + 0x10]
push eax
push eax
push eax
lea edx, [esp + 0x20]
push edx
lea eax, [esp + 0x38]
push eax
push edi
push ecx
mov dword [esp + 0x30], 0x100
call esi
test eax, eax
je 0x402930
mov edi, dword [esp + 0x18]
mov eax, dword [esp + 0xc]
test eax, eax
je 0x402985
push eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov dword [esp + 0xc], 0
mov edx, dword [ebp]
push edi
push edx
call dword [sym.imp.ADVAPI32.dll_RegDeleteKeyW]
mov esi, eax
mov eax, dword [esp + 0xc]
test eax, eax
je 0x4029a1
push eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov eax, esi
mov ecx, dword [esp + 0x224]
pop edi
pop esi
pop ebp
xor ecx, esp
call fcn.00419e61
add esp, 0x21c
ret 4
mov eax, dword [esp + 0xc]
test eax, eax
je 0x4029cc
push eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov eax, edi
jmp 0x4029a3
Function at 0x406180
Capabilities:
Extract resource via kernel32 functions

Disassembly:
push ebp
lea ebp, [esp - 0x408]
sub esp, 0x408
push 0xffffffffffffffff
push 0x427a30
mov eax, dword fs:[0]
push eax
sub esp, 0x1c
mov eax, dword [0x4398b0]
xor eax, ebp
mov dword [ebp + 0x404], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov dword [ebp - 0x10], esp
mov esi, ecx
mov eax, dword [ebp + 0x418]
mov edi, dword [ebp + 0x410]
mov ebx, dword [ebp + 0x414]
mov dword [ebp - 0x14], eax
call dword [0x43a860]
xor eax, eax
mov dword [ebp - 0x1c], eax
mov dword [ebp - 4], eax
mov dword [ebp - 0x24], esi
mov dword [ebp - 0x28], eax
mov dword [ebp], eax
push 2
push eax
push edi
mov byte [ebp - 4], 1
call dword [sym.imp.KERNEL32.dll_LoadLibraryExW]
mov edi, eax
test edi, edi
mov dword [ebp - 0x18], edi
jne 0x40620d
call fcn.00401700
mov esi, eax
jmp 0x4062f5
mov ecx, dword [ebp - 0x14]
push ecx
push ebx
push edi
call dword [sym.imp.KERNEL32.dll_FindResourceW]
mov esi, eax
test esi, esi
jne 0x406229
call fcn.00401700
jmp 0x4062ec
push esi
push edi
call dword [sym.imp.KERNEL32.dll_LoadResource]
test eax, eax
mov dword [ebp - 0x20], eax
jne 0x406242
call fcn.00401700
jmp 0x4062ec
push esi
push edi
call dword [sym.imp.KERNEL32.dll_SizeofResource]
mov esi, eax
lea eax, [esi + 1]
cmp eax, esi
mov dword [ebp - 0x14], esi
jae 0x406278
lea edx, [ebp + 4]
cmp dword [ebp], edx
je 0x406266
lea ecx, [ebp]
call fcn.00402180
lea ecx, [ebp - 0x1c]
call fcn.00402110
mov eax, 0x8007000e
jmp 0x406312
push eax
lea ecx, [ebp]
mov byte [ebp - 4], 2
call fcn.00403380
mov dword [ebp - 4], 1
jmp 0x4062a1
mov ebx, dword [ebp]
test ebx, ebx
jne 0x4062af
mov esi, 0x8007000e
jmp 0x4062ee
call dword [0x43a860]
mov ecx, dword [ebp - 0x20]
push esi
push ebx
push esi
push ecx
push 0
push eax
call dword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
test eax, eax
jne 0x4062d0
call fcn.00401700
jmp 0x4062ec
mov edx, dword [ebp]
mov word [edx + eax*2], 0
mov eax, dword [ebp + 0x41c]
mov ecx, dword [ebp]
push eax
push ecx
lea ecx, [ebp - 0x28]
call fcn.004050f0
mov esi, eax
push edi
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
lea edx, [ebp + 4]
cmp dword [ebp], edx
je 0x406310
lea ecx, [ebp]
call fcn.00402180
jmp 0x406310
mov eax, esi
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp + 0x404]
xor ecx, ebp
call fcn.00419e61
add ebp, 0x408
mov esp, ebp
pop ebp
ret 0x10
Function at 0x408090
Capabilities:
Access the windows event log

Disassembly:
sub esp, 0x208
mov eax, dword [0x4398b0]
xor eax, esp
mov dword [esp + 0x204], eax
mov ecx, dword [esp + 0x210]
push esi
mov esi, dword [esp + 0x210]
lea eax, [esp + 0x218]
push eax
push ecx
push 0xff
lea edx, [esp + 0x14]
push 0x100
push edx
call fcn.0041ad41
add esp, 0x14
cmp dword [esi + 0x260], 0
lea eax, [esp + 8]
mov word [esp + 0x206], 0
mov dword [esp + 4], eax
jne 0x4080f9
mov ecx, eax
push ecx
call fcn.0041a9bb
add esp, 4
add esi, 0x40
push esi
push 0
call dword [sym.imp.ADVAPI32.dll_RegisterEventSourceW]
mov esi, eax
test esi, esi
je 0x40812c
push 0
lea edx, [esp + 8]
push edx
push 0
push 1
push 0
push 0
push 0
push 4
push esi
call dword [sym.imp.ADVAPI32.dll_ReportEventW]
push esi
call dword [sym.imp.ADVAPI32.dll_DeregisterEventSource]
mov ecx, dword [esp + 0x208]
pop esi
xor ecx, esp
call fcn.00419e61
add esp, 0x208
ret

Function at 0x408150
Capabilities:
Query or enumerate registry value

Disassembly:
push esi
mov esi, dword [esp + 0xc]
push edi
mov edi, dword [esp + 0x14]
mov eax, dword [edi]
add eax, eax
lea edx, [esp + 0x14]
push edx
mov edx, dword [esp + 0x10]
push esi
mov dword [esp + 0x1c], eax
lea eax, [esp + 0x18]
push eax
push 0
mov dword [edi], 0
mov eax, dword [ecx]
push edx
push eax
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
test eax, eax
jne 0x4081c6
mov eax, dword [esp + 0x10]
cmp eax, 1
je 0x408195
cmp eax, 2
jne 0x4081b1
test esi, esi
mov eax, dword [esp + 0x14]
je 0x4081c0
test eax, eax
je 0x4081bb
test al, 1
jne 0x4081b1
mov ecx, eax
shr ecx, 1
cmp word [esi + ecx*2 - 2], 0
je 0x4081c0
pop edi
mov eax, 0xd
pop esi
ret 0xc
mov word [esi], 0
shr eax, 1
mov dword [edi], eax
xor eax, eax
pop edi
pop esi
ret 0xc
Function at 0x408550
Capabilities:
Create service

Disassembly:
sub esp, 0xa10
mov eax, dword [0x4398b0]
xor eax, esp
mov dword [esp + 0xa0c], eax
push ebx
push ebp
push esi
push edi
push 0xf003f
xor edi, edi
push edi
push edi
mov ebx, ecx
call dword [sym.imp.ADVAPI32.dll_OpenSCManagerW]
mov ebp, dword [sym.imp.ADVAPI32.dll_CloseServiceHandle]
mov esi, eax
test esi, esi
je 0x4085a9
push 1
lea eax, [ebx + 0x40]
push eax
push esi
call dword [sym.imp.ADVAPI32.dll_OpenServiceW]
test eax, eax
je 0x40859e
push eax
mov edi, 1
call ebp
push esi
call ebp
test edi, edi
jne 0x4086dc
push 0x104
lea ecx, [esp + 0x16]
push ecx
push 0
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameW]
test eax, eax
je 0x408643
cmp eax, 0x104
je 0x408643
push 0xf003f
mov ecx, 0x22
push 0
mov word [esp + 0x18], cx
push 0
mov word [esp + eax*2 + 0x1e], cx
mov word [esp + eax*2 + 0x20], 0
call dword [sym.imp.ADVAPI32.dll_OpenSCManagerW]
mov esi, eax
test esi, esi
jne 0x40865e
push 0x400
lea edx, [esp + 0x220]
push edx
push 0xd80a
call fcn.00407a50
add esp, 0xc
test eax, eax
jne 0x40862d
push str.Could_not_open_Service_Manager
lea eax, [esp + 0x220]
push 0x400
push eax
call fcn.00407a10
add esp, 0xc
push 0
add ebx, 0x40
push ebx
lea ecx, [esp + 0x224]
push ecx
push 0
call dword [sym.imp.USER32.dll_MessageBoxW]
xor eax, eax
mov ecx, dword [esp + 0xa1c]
pop edi
pop esi
pop ebp
pop ebx
xor ecx, esp
call fcn.00419e61
add esp, 0xa10
ret
push 0
push 0
push str.RPCSS
push 0
push 0
lea edx, [esp + 0x24]
push edx
push 1
push 3
push 0x10
push 0xf01ff
lea edi, [ebx + 0x40]
push edi
push edi
push esi
call dword [sym.imp.ADVAPI32.dll_CreateServiceW]
test eax, eax
jne 0x4086d6
push esi
call ebp
push 0x400
lea eax, [esp + 0x220]
push eax
push 0xd80b
call fcn.00407a50
add esp, 0xc
test eax, eax
jne 0x4086c6
push str.Could_not_start_service
lea ecx, [esp + 0x220]
push 0x400
push ecx
call fcn.00407a10
add esp, 0xc
push 0
push edi
lea edx, [esp + 0x224]
push edx
jmp 0x40863b
push eax
call ebp
push esi
call ebp
mov eax, 1
jmp 0x408645