joyce8/EMBER2024-capa huggingface dataset:
Function at 0x439c2c
Capabilities:
Enumerate gui resources

Disassembly:
push ebx
push esi
add esp, 0xfffffff8
mov ebx, eax
mov eax, dword [ebx + 0x30]
test eax, eax
je 0x439ccb
cmp dword [ebx + 0x94], 0
jne 0x439cc5
mov dword [esp], eax
mov byte [esp + 4], dl
mov eax, esp
push eax
push 0x439bb4
call sub.user32.dll_EnumWindows
mov eax, dword [ebx + 0x90]
cmp dword [eax + 8], 0
je 0x439cc5
push 3
mov eax, dword [esp + 4]
push eax
call sub.user32.dll_GetWindow
mov esi, eax
mov dword [esp], esi
push 0xffffffffffffffec
push esi
call sub.user32.dll_GetWindowLongA
test al, 8
je 0x439c8b
mov dword [esp], 0xfffffffe
mov eax, dword [ebx + 0x90]
mov esi, dword [eax + 8]
dec esi
cmp esi, 0
jl 0x439cc5
push 0x213
push 0
push 0
push 0
push 0
mov eax, dword [esp + 0x14]
push eax
mov edx, esi
mov eax, dword [ebx + 0x90]
call fcn.0041656c
push eax
call sub.user32.dll_SetWindowPos
dec esi
cmp esi, 0xffffffff
jne 0x439c9a
inc dword [ebx + 0x94]
pop ecx
pop edx
pop esi
pop ebx
ret

Function at 0x439ee4
Capabilities:
Enumerate gui resources
Hide graphical window

Disassembly:
push ebx
push esi
push edi
mov ebx, edx
mov esi, eax
mov eax, dword [0x492be8]
cmp dword [eax + 0x30], 0
je 0x43a041
test bl, bl
jne 0x439f92
cmp dword [esi + 0x9c], 0
jne 0x439f87
mov eax, esi
call fcn.0043c714
push eax
push 0x439e10
call sub.user32.dll_EnumWindows
cmp dword [esi + 0x44], 0
je 0x439f58
mov eax, dword [0x492be8]
call fcn.0043cdf4
test al, al
je 0x439f58
mov eax, dword [0x492c0c]
call fcn.00406210
mov edi, eax
cmp edi, 0
jl 0x439f58
push 0
mov eax, dword [0x492c0c]
mov eax, dword [eax + edi*4]
push eax
call sub.user32.dll_ShowWindow
dec edi
cmp edi, 0xffffffff
jne 0x439f42
mov eax, dword [esi + 0x98]
mov edi, dword [eax + 8]
dec edi
cmp edi, 0
jl 0x439f87
cmp bl, 1
cmc
sbb eax, eax
push eax
mov edx, edi
mov eax, dword [esi + 0x98]
call fcn.0041656c
push eax
call sub.user32.dll_ShowOwnedPopups
dec edi
cmp edi, 0xffffffff
jne 0x439f67
inc dword [esi + 0x9c]
jmp 0x43a041
cmp dword [esi + 0x9c], 0
jle 0x43a041
dec dword [esi + 0x9c]
cmp dword [esi + 0x9c], 0
jne 0x43a041
cmp dword [esi + 0x44], 0
je 0x439fed
mov eax, dword [0x492be8]
call fcn.0043cdf4
test al, al
je 0x439fed
mov eax, dword [0x492c0c]
call fcn.00406210
mov edi, eax
cmp edi, 0
jl 0x439fed
push 5
mov eax, dword [0x492c0c]
mov eax, dword [eax + edi*4]
push eax
call sub.user32.dll_ShowWindow
dec edi
cmp edi, 0xffffffff
jne 0x439fd7
mov eax, dword [esi + 0x98]
mov edi, dword [eax + 8]
dec edi
cmp edi, 0
jl 0x43a01c
cmp bl, 1
cmc
sbb eax, eax
push eax
mov edx, edi
mov eax, dword [esi + 0x98]
call fcn.0041656c
push eax
call sub.user32.dll_ShowOwnedPopups
dec edi
cmp edi, 0xffffffff
jne 0x439ffc
mov eax, dword [esi + 0x98]
mov edx, dword [eax]
call dword [edx + 8]
push 0
mov eax, 0x492c0c
mov ecx, 1
mov edx, dword [0x439df0]
call fcn.004063c4
add esp, 4
pop edi
pop esi
pop ebx
ret
Function at 0x43ab28
Capabilities:
Get graphical window text

Disassembly:
push ebx
push esi
add esp, 0xfffffefc
mov esi, edx
mov ebx, eax
cmp byte [ebx + 0xac], 0
je 0x43ab92
mov eax, ebx
call fcn.0043cdf4
test al, al
jne 0x43ab92
push pe_nt_image_headers32
lea eax, [esp + 4]
push eax
mov eax, dword [ebx + 0x30]
push eax
call sub.user32.dll_GetWindowTextA
mov ecx, eax
mov edx, esp
mov eax, esi
call fcn.00405194
mov eax, dword [esi]
mov dword [esp + 0x100], eax
mov eax, dword [esp + 0x100]
test eax, eax
je 0x43ab7f
sub eax, 4
mov eax, dword [eax]
test eax, eax
jne 0x43ab9f
mov eax, esi
mov edx, dword [ebx + 0x8c]
call fcn.004050f8
jmp 0x43ab9f
mov eax, esi
mov edx, dword [ebx + 0x8c]
call fcn.004050f8
add esp, 0x104
pop esi
pop ebx
ret

Function at 0x43bf18
Capabilities:
Hide graphical window

Disassembly:
push ebx
push esi
mov ebx, eax
mov esi, dword [ebx + 0x84]
test esi, esi
je 0x43bf86
mov eax, esi
call fcn.00452b04
test al, al
je 0x43bf86
mov eax, dword [ebx + 0x84]
call fcn.00452790
push eax
call sub.user32.dll_IsWindowVisible
test eax, eax
je 0x43bf86
mov eax, dword [ebx + 0x84]
mov edx, dword [eax]
call dword [edx + 0xf0]
test al, al
je 0x43bf7a
push 0
mov eax, dword [ebx + 0x84]
call fcn.00452790
push eax
call sub.user32.dll_ShowWindow
xor edx, edx
mov eax, dword [ebx + 0x84]
call fcn.0044a60c
jmp 0x43bf86
mov cl, 1
mov edx, dword [ebx + 0x74]
mov eax, ebx
call fcn.0043bd54
pop esi
pop ebx
ret

Function at 0x43deb0
Capabilities:
Log keystrokes
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
add esp, 0xfffffefc
push ebx
mov ebx, edx
mov word [ebp - 2], ax
mov eax, ebx
call fcn.004050a4
push 0
movzx eax, byte [ebp - 2]
push eax
call sub.user32.dll_MapVirtualKeyA
shl eax, 0x10
test eax, eax
je 0x43defe
push pe_nt_image_headers32
lea edx, [ebp - 0x102]
push edx
push eax
call sub.user32.dll_GetKeyNameTextA
mov eax, ebx
lea edx, [ebp - 0x102]
mov ecx, pe_nt_image_headers32
call fcn.00405314
pop ebx
mov esp, ebp
pop ebp
ret
Function at 0x442fe0
Capabilities:
Get keyboard layout

Disassembly:
push ebp
mov ebp, esp
add esp, 0xffffffe0
push ebx
xor eax, eax
mov dword [ebp - 0x1c], eax
mov dword [ebp - 0x20], eax
mov dword [ebp - 4], eax
xor eax, eax
push ebp
push 0x443113
push dword fs:[eax]
mov dword fs:[eax], esp
mov byte [ebp - 0x16], 0
lea eax, [ebp - 0x16]
push eax
call sub.user32.dll_GetKeyboardLayoutNameA
mov dl, 1
mov eax, dword [0x41f6c4]
call fcn.0041f800
mov dword [ebp - 0xc], eax
xor edx, edx
push ebp
push 0x4430e9
push dword fs:[edx]
mov dword fs:[edx], esp
mov edx, 0x80000002
mov eax, dword [ebp - 0xc]
call fcn.0041f8dc
lea eax, [ebp - 0x20]
lea edx, [ebp - 0x16]
mov ecx, 0xa
call fcn.00405314
mov ecx, dword [ebp - 0x20]
lea eax, [ebp - 0x1c]
mov edx, 0x443128
call fcn.004053bc
mov edx, dword [ebp - 0x1c]
mov eax, dword [ebp - 0xc]
call fcn.0041fa68
lea ecx, [ebp - 4]
mov edx, 0x443164
mov eax, dword [ebp - 0xc]
call fcn.0041fcb0
mov edx, 0x8000
mov eax, dword [ebp - 4]
call fcn.0040f4e4
mov dword [ebp - 8], eax
xor edx, edx
push ebp
push 0x4430cc
push dword fs:[edx]
mov dword fs:[edx], esp
push 0x443170
mov eax, dword [ebp - 8]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov ebx, eax
call ebx
movzx eax, word [eax + 0x28]
and ax, 1
cmp ax, 1
sete byte [0x4864f0]
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x4430d3
mov eax, dword [ebp - 8]
push eax
call sub.kernel32.dll_FreeLibrary_1
ret

Function at 0x4431c0
Capabilities:
Log keystrokes via polling

Disassembly:
push ebx
push esi
push edi
add esp, 0xfffffff0
mov esi, eax
lea edi, [esp]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movzx ebx, byte [esp + 4]
test bx, bx
je 0x443207
push 0x10
call sub.user32.dll_GetKeyState
test ax, ax
jge 0x4431ea
add bx, 0x2000
push 0x11
call sub.user32.dll_GetKeyState
test ax, ax
jge 0x4431fb
add bx, 0x4000
test byte [esp + 0xb], 0x20
je 0x443207
add bx, 0x8000
mov eax, ebx
add esp, 0x10
pop edi
pop esi
pop ebx
ret
Function at 0x447eac
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
add esp, 0xffffffd8
push ebx
push esi
push edi
mov esi, eax
lea edi, [ebp - 9]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
mov dword [ebp - 0x10], edx
xor eax, eax
mov dword [ebp - 0x18], eax
cmp dword [0x492c78], 0
je 0x447ff5
push 0x11
call sub.user32.dll_GetKeyState
test ax, 0x8000
setne al
mov edx, dword [0x48d348]
mov edx, dword [edx]
xor al, byte [edx + 0xbc]
je 0x447ff5
mov eax, dword [0x492c7c]
mov edx, dword [eax]
call dword [edx + 8]
mov eax, dword [0x492c78]
mov ebx, dword [eax + 8]
dec ebx
test ebx, ebx
jl 0x447fc4
inc ebx
xor edi, edi
mov edx, edi
mov eax, dword [0x492c78]
call fcn.0041656c
mov dword [ebp - 0x14], eax
mov eax, dword [ebp - 0x14]
cmp eax, dword [ebp - 0x10]
je 0x447fbc
mov eax, dword [ebp - 0x14]
cmp byte [eax + 0x1da], 0
je 0x447fbc
mov eax, dword [ebp - 0x14]
mov edx, dword [eax]
call dword [edx + 0x50]
test al, al
je 0x447fbc
mov eax, dword [ebp - 0x14]
call fcn.00452790
push eax
call sub.user32.dll_IsWindowVisible
test eax, eax
je 0x447fbc
push ebp
call fcn.00447e68
pop ecx
test al, al
jne 0x447fbc
mov edx, dword [ebp - 0x10]
mov eax, dword [ebp - 0x14]
mov si, 0xffbb
call fcn.004043a0
test al, al
je 0x447fbc
mov byte [ebp - 1], 1
lea eax, [ebp - 9]
push eax
lea eax, [ebp - 1]
push eax
lea ecx, [ebp - 0x28]
mov edx, dword [ebp - 0x10]
mov eax, dword [ebp - 0x14]
mov si, 0xffbc
call fcn.004043a0
cmp byte [ebp - 1], 0
je 0x447fbc
push dword [ebp - 5]
push dword [ebp - 9]
lea eax, [ebp - 0x28]
push eax
call sub.user32.dll_PtInRect
test eax, eax
je 0x447fbc
mov edx, dword [ebp - 0x14]
mov eax, dword [0x492c7c]
call fcn.004475d8
inc edi
dec ebx
jne 0x447f11
mov eax, dword [0x492c7c]
cmp dword [eax + 8], 0
jle 0x447fdc
mov eax, dword [0x492c7c]
call fcn.00447690
mov dword [ebp - 0x18], eax
cmp dword [ebp - 0x18], 0
je 0x447ff5
push ebp
mov eax, dword [ebp - 0x18]
call fcn.00447ccc
pop ecx
test al, al
jne 0x447ff5
xor eax, eax
mov dword [ebp - 0x18], eax
mov eax, dword [ebp - 0x18]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
Function at 0x44f664
Capabilities:
Log keystrokes via polling

Disassembly:
push ebx
push esi
push edi
add esp, 0xfffffed8
mov ebx, ecx
mov edi, edx
mov esi, eax
call sub.user32.dll_GetMessagePos
call fcn.00407180
mov dword [esp + 8], eax
movsx eax, word [esp + 8]
mov dword [esp + 0xc], eax
movsx eax, word [esp + 0xa]
mov dword [esp + 0x10], eax
mov ecx, esp
lea edx, [esp + 0xc]
mov eax, esi
call fcn.0044a234
test ebx, ebx
jne 0x44f6b7
push 0
push 0
lea edx, [esp + 8]
xor ecx, ecx
mov eax, esi
call fcn.0044f5a0
mov ebx, eax
test ebx, ebx
je 0x44f7a2
cmp esi, ebx
je 0x44f6e0
mov eax, dword [esp]
sub eax, dword [ebx + 0x40]
mov dword [esp + 0x114], eax
mov eax, dword [esp + 4]
sub eax, dword [ebx + 0x44]
mov dword [esp + 0x118], eax
jmp 0x44f6f5
mov eax, dword [esp]
mov dword [esp + 0x114], eax
mov eax, dword [esp + 4]
mov dword [esp + 0x118], eax
movzx eax, word [edi + 8]
mov dword [esp + 0x11c], eax
mov eax, dword [edi + 4]
mov dword [esp + 0x124], eax
movzx eax, word [edi + 0xa]
cmp eax, 0x201
jge 0x44f72d
add eax, 0xffffff5f
sub eax, 2
jb 0x44f745
dec eax
sub eax, 2
jb 0x44f759
dec eax
sub eax, 2
jb 0x44f74f
jmp 0x44f763
add eax, 0xfffffdff
sub eax, 2
jb 0x44f745
dec eax
sub eax, 2
jb 0x44f759
dec eax
sub eax, 2
jb 0x44f74f
jmp 0x44f763
mov byte [esp + 0x120], 0
jmp 0x44f76b
mov byte [esp + 0x120], 2
jmp 0x44f76b
mov byte [esp + 0x120], 1
jmp 0x44f76b
mov byte [esp + 0x120], 0
lea eax, [esp + 0x14]
push eax
call sub.user32.dll_GetKeyboardState
lea eax, [esp + 0x14]
call fcn.00430370
mov byte [esp + 0x121], al
lea eax, [esp + 0x114]
push eax
xor ecx, ecx
mov edx, 0xb04b
mov eax, ebx
call fcn.0044b9d0
mov dword [edi + 0xc], eax
mov al, 1
jmp 0x44f7a4
xor eax, eax
add esp, 0x128
pop edi
pop esi
pop ebx
ret
Function at 0x457ac4
Capabilities:
Link many functions at runtime

Disassembly:
push ebp
mov ebp, esp
push ecx
push ebx
mov eax, dword [0x48d5a4]
cmp byte [eax + 0xc], 0
je 0x457c31
push 0x8000
call sub.kernel32.dll_SetErrorMode
mov dword [ebp - 4], eax
xor eax, eax
push ebp
push 0x457c2a
push dword fs:[eax]
mov dword fs:[eax], esp
cmp dword [0x492c88], 0
jne 0x457b18
push 0x457c38
call sub.kernel32.dll_GetModuleHandleA_2
mov ebx, eax
push 0x457c40
push ebx
call sub.kernel32.dll_GetProcAddress_1
mov dword [0x492c88], eax
cmp dword [0x486638], 0
jne 0x457c13
push 0x457c50
call sub.kernel32.dll_LoadLibraryA
mov dword [0x486638], eax
cmp dword [0x486638], 0
je 0x457c13
push 0x457c5c
mov eax, dword [0x486638]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov dword [0x492c8c], eax
push 0x457c6c
mov eax, dword [0x486638]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov dword [0x492c90], eax
push 0x457c80
mov eax, dword [0x486638]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov dword [0x492c94], eax
push 0x457c98
mov eax, dword [0x486638]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov dword [0x492c98], eax
push 0x457cb0
mov eax, dword [0x486638]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov dword [0x492c9c], eax
push 0x457cc4
mov eax, dword [0x486638]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov dword [0x492ca0], eax
push 0x457cdc
mov eax, dword [0x486638]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov dword [0x492ca4], eax
push 0x457cf4
mov eax, dword [0x486638]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov dword [0x492ca8], eax
push 0x457d10
mov eax, dword [0x486638]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov dword [0x492cac], eax
push 0x457d1c
mov eax, dword [0x486638]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov dword [0x492cb0], eax
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x457c31
mov eax, dword [ebp - 4]
push eax
call sub.kernel32.dll_SetErrorMode
ret
pop ebx
pop ecx
pop ebp
ret
Function at 0x45e534
Capabilities:
Open clipboard
Write clipboard data

Disassembly:
push ebp
mov ebp, esp
add esp, 0xfffffff8
push ebx
push esi
push edi
mov dword [ebp - 4], edx
mov eax, dword [ebp - 4]
call fcn.00405524
xor eax, eax
push ebp
push 0x45e669
push dword fs:[eax]
mov dword fs:[eax], esp
push 0
call sub.user32.dll_OpenClipboard
test eax, eax
je 0x45e63c
xor edx, edx
push ebp
push 0x45e635
push dword fs:[edx]
mov dword fs:[edx], esp
mov ebx, dword [ebp - 4]
mov eax, ebx
test eax, eax
je 0x45e581
sub eax, 4
mov eax, dword [eax]
inc eax
push eax
push 0x2002
call sub.kernel32.dll_GlobalAlloc
mov dword [ebp - 8], eax
xor eax, eax
push ebp
push 0x45e60a
push dword fs:[eax]
mov dword fs:[eax], esp
mov eax, dword [ebp - 8]
push eax
call sub.kernel32.dll_GlobalLock
mov esi, eax
xor eax, eax
push ebp
push 0x45e5f9
push dword fs:[eax]
mov dword fs:[eax], esp
test ebx, ebx
je 0x45e5c0
sub ebx, 4
mov ebx, dword [ebx]
mov eax, dword [ebp - 4]
call fcn.00405534
lea ecx, [ebx + 1]
mov edx, esi
call fcn.004030a0
call sub.user32.dll_EmptyClipboard
mov eax, dword [ebp - 8]
push eax
push 1
call sub.user32.dll_SetClipboardData
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x45e600
mov eax, dword [ebp - 8]
push eax
call sub.kernel32.dll_GlobalUnlock
ret
mov ecx, dword [0x48cf7c]
mov dl, 1
mov eax, dword [0x4081e0]
call fcn.0040d6b0
call fcn.00404a18
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x45e670
lea eax, [ebp - 4]
call fcn.004050a4
ret
Function at 0x45e678
Capabilities:
Contain obfuscated stackstrings

Disassembly:
push ebp
mov ebp, esp
add esp, 0xffffff8c
push ebx
push esi
push edi
xor ecx, ecx
mov dword [ebp - 0x70], ecx
mov dword [ebp - 0x74], ecx
mov dword [ebp - 0x1c], ecx
mov dword [ebp - 0x14], ecx
mov dword [ebp - 0x18], ecx
mov dword [ebp - 0x10], ecx
mov dword [ebp - 4], ecx
mov dword [ebp - 8], ecx
mov dword [ebp - 0xc], edx
mov ebx, eax
xor eax, eax
push ebp
push 0x45e833
push dword fs:[eax]
mov dword fs:[eax], esp
lea ecx, [ebp - 0x10]
mov edx, 0x1b
mov al, 0x2d
call fcn.00405828
mov edx, dword [ebp - 0x10]
lea eax, [ebp - 4]
mov ecx, 0x45e84c
call fcn.004053bc
mov eax, ebx
call fcn.0041dcc4
mov edi, eax
dec edi
test edi, edi
jl 0x45e730
inc edi
xor esi, esi
mov edx, esi
mov eax, ebx
call fcn.0041dc98
mov edx, dword [0x45c58c]
call fcn.00404330
test al, al
je 0x45e72c
push dword [ebp - 8]
mov edx, esi
mov eax, ebx
call fcn.0041dc98
lea edx, [ebp - 0x14]
call fcn.0044a6ec
push dword [ebp - 0x14]
lea ecx, [ebp - 0x18]
mov edx, 3
mov al, 0x20
call fcn.00405828
push dword [ebp - 0x18]
lea eax, [ebp - 8]
mov edx, 3
call fcn.00405438
inc esi
dec edi
jne 0x45e6de
movzx eax, byte [0x45e850]
push eax
lea eax, [ebp - 0x1c]
push eax
xor ecx, ecx
mov edx, 0x45e85c
mov eax, dword [ebp - 8]
call fcn.0040e9c0
mov edx, dword [ebp - 0x1c]
lea eax, [ebp - 8]
call fcn.0040513c
mov eax, dword [ebp - 0xc]
push eax
mov eax, dword [ebp - 4]
mov dword [ebp - 0x6c], eax
mov byte [ebp - 0x68], 0xb
lea edx, [ebp - 0x70]
mov eax, ebx
call fcn.0044a6ec
mov eax, dword [ebp - 0x70]
mov dword [ebp - 0x64], eax
mov byte [ebp - 0x60], 0xb
mov eax, 0x45e84c
mov dword [ebp - 0x5c], eax
mov byte [ebp - 0x58], 0xb
mov eax, dword [ebp - 4]
mov dword [ebp - 0x54], eax
mov byte [ebp - 0x50], 0xb
lea edx, [ebp - 0x74]
mov eax, dword [ebx + 0x360]
call fcn.0044a6ec
mov eax, dword [ebp - 0x74]
mov dword [ebp - 0x4c], eax
mov byte [ebp - 0x48], 0xb
mov eax, 0x45e84c
mov dword [ebp - 0x44], eax
mov byte [ebp - 0x40], 0xb
mov eax, dword [ebp - 4]
mov dword [ebp - 0x3c], eax
mov byte [ebp - 0x38], 0xb
mov eax, dword [ebp - 8]
mov dword [ebp - 0x34], eax
mov byte [ebp - 0x30], 0xb
mov eax, 0x45e84c
mov dword [ebp - 0x2c], eax
mov byte [ebp - 0x28], 0xb
mov eax, dword [ebp - 4]
mov dword [ebp - 0x24], eax
mov byte [ebp - 0x20], 0xb
lea edx, [ebp - 0x6c]
mov ecx, 9
mov eax, 0x45e868
call fcn.0040a7fc
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x45e83a
lea eax, [ebp - 0x74]
mov edx, 2
call fcn.004050c8
lea eax, [ebp - 0x1c]
mov edx, 2
call fcn.004050c8
lea eax, [ebp - 0x14]
call fcn.004050a4
lea eax, [ebp - 0x10]
call fcn.004050a4
lea eax, [ebp - 8]
mov edx, 2
call fcn.004050c8
ret
Function at 0x460380
Capabilities:
Access the windows event log

Disassembly:
push ebp
mov ebp, esp
add esp, 0xfffffff8
push ebx
push esi
mov esi, ecx
mov dword [ebp - 4], edx
mov ebx, eax
mov eax, dword [ebp - 4]
call fcn.00405524
xor eax, eax
push ebp
push 0x4603fe
push dword fs:[eax]
mov dword fs:[eax], esp
mov eax, dword [ebp - 4]
call fcn.00405534
mov dword [ebp - 8], eax
cmp dword [ebx + 8], 0
jne 0x4603c9
mov eax, dword [ebx + 4]
call fcn.00405534
push eax
push 0
call sub.advapi32.dll_RegisterEventSourceA
mov dword [ebx + 8], eax
push 0
lea eax, [ebp - 8]
push eax
push 0
push 1
push 0
mov eax, dword [ebp + 8]
push eax
movzx eax, word [ebp + 0xc]
push eax
push esi
mov eax, dword [ebx + 8]
push eax
call sub.advapi32.dll_ReportEventA
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x460405
lea eax, [ebp - 4]
call fcn.004050a4
ret

Function at 0x4614a0
Capabilities:
Create service

Disassembly:
push ebp
mov ebp, esp
add esp, 0xffffffe8
push ebx
push esi
push edi
xor ecx, ecx
mov dword [ebp - 0x14], ecx
mov dword [ebp - 0x18], ecx
mov dword [ebp - 4], ecx
mov dword [ebp - 8], edx
mov ebx, eax
xor eax, eax
push ebp
push 0x461645
push dword fs:[eax]
mov dword fs:[eax], esp
lea edx, [ebp - 4]
xor eax, eax
call fcn.004032fc
cmp word [ebx + 0xa2], 0
je 0x4614e9
mov edx, ebx
mov eax, dword [ebx + 0xa4]
call dword [ebx + 0xa0]
mov eax, dword [ebx + 0x90]
mov dword [ebp - 0xc], eax
cmp dword [ebp - 0xc], 0
jle 0x4614fd
lea esi, [ebp - 0xc]
jmp 0x4614ff
xor esi, esi
cmp dword [ebx + 0x80], 0
jne 0x46150c
xor edi, edi
jmp 0x461519
mov eax, dword [ebx + 0x80]
call fcn.00405534
mov edi, eax
mov eax, dword [ebx + 0x7c]
call fcn.00405534
push eax
push edi
lea edx, [ebp - 0x14]
mov eax, ebx
call fcn.00460b50
mov eax, dword [ebp - 0x14]
call fcn.00405534
push eax
push esi
mov eax, dword [ebx + 0x74]
call fcn.00405534
push eax
mov eax, dword [ebp - 4]
call fcn.00405534
push eax
mov eax, ebx
call fcn.00460c90
push eax
mov eax, ebx
call fcn.00460c64
push eax
mov eax, ebx
call fcn.00460c1c
push eax
push 0xf01ff
lea edx, [ebp - 0x18]
mov eax, ebx
call fcn.00460a1c
mov eax, dword [ebp - 0x18]
call fcn.00405534
push eax
mov eax, dword [ebx + 8]
call fcn.00405534
push eax
mov eax, dword [ebp - 8]
push eax
call sub.advapi32.dll_CreateServiceA
mov dword [ebp - 0x10], eax
mov eax, dword [ebp - 0xc]
mov dword [ebx + 0x90], eax
cmp dword [ebp - 0x10], 0
jne 0x4615a2
call fcn.0040ee88
xor edx, edx
push ebp
push 0x46161b
push dword fs:[edx]
mov dword fs:[edx], esp
xor edx, edx
push ebp
push 0x4615e0
push dword fs:[edx]
mov dword fs:[edx], esp
cmp word [ebx + 0xaa], 0
je 0x4615d6
mov edx, ebx
mov eax, dword [ebx + 0xac]
call dword [ebx + 0xa8]
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
jmp 0x461604
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x461622
mov eax, dword [ebp - 0x10]
push eax
call sub.advapi32.dll_CloseServiceHandle
ret
Function at 0x461654
Capabilities:
Delete service

Disassembly:
push ebp
mov ebp, esp
add esp, 0xfffffff8
push ebx
push esi
mov ebx, edx
mov dword [ebp - 4], eax
mov eax, dword [ebp - 4]
cmp word [eax + 0xb2], 0
je 0x461680
mov esi, dword [ebp - 4]
mov edx, dword [ebp - 4]
mov eax, dword [esi + 0xb4]
call dword [esi + 0xb0]
push 0xf01ff
mov eax, dword [ebp - 4]
mov eax, dword [eax + 8]
call fcn.00405534
push eax
push ebx
call sub.advapi32.dll_OpenServiceA
mov dword [ebp - 8], eax
cmp dword [ebp - 8], 0
jne 0x4616a5
call fcn.0040ee88
xor eax, eax
push ebp
push 0x4616dc
push dword fs:[eax]
mov dword fs:[eax], esp
mov eax, dword [ebp - 8]
push eax
call sub.advapi32.dll_DeleteService
test eax, eax
jne 0x4616c5
call fcn.0040ee88
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x4616e3
mov eax, dword [ebp - 8]
push eax
call sub.advapi32.dll_CloseServiceHandle
ret

Function at 0x47abbc
Capabilities:
Generate random numbers using the delphi lcg

Disassembly:
and edx, edx
je 0x47abd8
and ecx, ecx
jle 0x47abd8
push ebx
imul eax, eax, 0x8088405
inc eax
mov ebx, eax
shr ebx, 0x18
mov byte [edx], bl
inc edx
dec ecx
jne 0x47abc5
pop ebx
ret
Function at 0x47dc38
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
add esp, 0xffffffe4
push ebx
push esi
push edi
xor ebx, ebx
mov dword [ebp - 0x1c], ebx
mov dword [ebp - 8], ecx
mov dword [ebp - 4], edx
mov ebx, eax
xor eax, eax
push ebp
push 0x47de47
push dword fs:[eax]
mov dword fs:[eax], esp
cmp dword [ebp + 0x14], 0
jge 0x47dc76
mov ecx, 0x2a1
mov edx, 0x47de60
mov eax, 0x47de94
call fcn.00404fd0
cmp dword [ebp - 8], 0
jge 0x47dc90
mov ecx, 0x2a2
mov edx, 0x47de60
mov eax, 0x47de94
call fcn.00404fd0
cmp dword [ebp + 0x18], 0
jge 0x47dcaa
mov ecx, 0x2a3
mov edx, 0x47de60
mov eax, 0x47de94
call fcn.00404fd0
mov eax, ebx
call dword [eax + 0x28]
test eax, eax
jge 0x47dcc7
mov ecx, 0x2a4
mov edx, 0x47de60
mov eax, 0x47de94
call fcn.00404fd0
mov eax, dword [ebp + 8]
mov edx, dword [ebp + 0x14]
call fcn.004057c4
mov eax, dword [ebp + 0xc]
call fcn.0047ac30
mov dword [ebp + 0xc], eax
mov dl, 1
mov eax, ebx
call dword [eax + 0xc]
mov dword [ebp - 0x14], eax
xor eax, eax
push ebp
push 0x47de01
push dword fs:[eax]
mov dword fs:[eax], esp
mov eax, dword [ebp + 0x14]
dec eax
test eax, eax
jl 0x47ddeb
inc eax
mov dword [ebp - 0x18], eax
mov dword [ebp - 0xc], 0
mov eax, dword [ebp - 0x14]
call fcn.0047da34
mov eax, dword [ebp - 0xc]
call fcn.0047ac30
mov dword [ebp - 0x10], eax
lea edx, [ebp - 0x10]
mov ecx, 4
mov eax, dword [ebp - 0x14]
mov ebx, dword [eax]
call dword [ebx + 0x1c]
mov eax, dword [ebp + 8]
call fcn.00405594
mov edx, eax
mov ecx, dword [ebp - 0xc]
mov eax, dword [ebp - 0x14]
mov ebx, dword [eax]
call dword [ebx + 0x1c]
lea edx, [ebp + 0xc]
mov ecx, 4
mov eax, dword [ebp - 0x14]
mov ebx, dword [eax]
call dword [ebx + 0x1c]
mov eax, dword [ebp + 0x18]
call fcn.0047ac30
mov dword [ebp - 0x10], eax
lea edx, [ebp - 0x10]
mov ecx, 4
mov eax, dword [ebp - 0x14]
mov ebx, dword [eax]
call dword [ebx + 0x1c]
mov edx, dword [ebp + 0x1c]
mov ecx, dword [ebp + 0x18]
mov eax, dword [ebp - 0x14]
mov ebx, dword [eax]
call dword [ebx + 0x1c]
mov eax, dword [ebp - 8]
call fcn.0047ac30
mov dword [ebp - 0x10], eax
lea edx, [ebp - 0x10]
mov ecx, 4
mov eax, dword [ebp - 0x14]
mov ebx, dword [eax]
call dword [ebx + 0x1c]
mov edx, dword [ebp - 4]
mov ecx, dword [ebp - 8]
mov eax, dword [ebp - 0x14]
mov ebx, dword [eax]
call dword [ebx + 0x1c]
mov eax, dword [ebp - 0x14]
call fcn.0047da78
xor ebx, ebx
mov eax, dword [ebp - 0x14]
mov eax, dword [eax]
call dword [eax + 0x28]
mov edi, eax
dec edi
test edi, edi
jl 0x47ddd1
inc edi
xor esi, esi
mov eax, dword [ebp - 0x14]
mov edx, dword [eax]
call dword [edx + 0x20]
xor bl, byte [eax + esi]
inc esi
dec edi
jne 0x47ddc2
mov eax, dword [ebp + 8]
call fcn.00405594
mov edx, dword [ebp - 0xc]
mov byte [eax + edx], bl
inc dword [ebp - 0xc]
dec dword [ebp - 0x18]
jne 0x47dd0c
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x47de08
mov eax, dword [ebp - 0x14]
call fcn.004041a4
ret