joyce8/EMBER2024-capa huggingface dataset:
Function at 0x4391d1
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 0x439206
cmp edi, dword [esi + 0xc]
jge 0x439206
push dword [esi]
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
test eax, eax
je 0x439206
cmp edi, dword [eax + 8]
jge 0x439206
mov eax, dword [eax + 0xc]
mov edi, dword [eax + edi*4]
jmp 0x439208
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 0x43930c
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 0x439340
jmp fcn.00429af6
lea eax, [esi + 0x1c]
push eax
call dword [sym.imp.KERNEL32.dll_InitializeCriticalSection]
mov eax, esi
pop esi
ret

Function at 0x4393b1
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 0x4394aa
cmp eax, dword [edi + 0xc]
jge 0x4394aa
push dword [edi]
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
mov esi, eax
cmp esi, ebx
je 0x439402
mov ecx, dword [ebp + 8]
cmp ecx, dword [esi + 8]
jl 0x439493
cmp dword [ebp + 0xc], ebx
je 0x439493
jmp 0x43942c
push 0x10
call fcn.0043909d
cmp eax, ebx
je 0x439418
mov ecx, eax
call fcn.00439303
mov esi, eax
jmp 0x43941a
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 0x439443
mov eax, dword [edi + 0xc]
shl eax, 2
push eax
push ebx
call dword [sym.imp.KERNEL32.dll_LocalAlloc]
jmp 0x439453
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 0x439465
push dword [ebp - 4]
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
call fcn.00429af6
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.0041e3c0
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 0x4394a5
cmp ecx, dword [esi + 8]
jge 0x4394a5
mov edx, dword [ebp + 0xc]
mov dword [eax + ecx*4], edx
push dword [ebp - 4]
jmp 0x4394ab
push esi
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
pop edi
pop esi
pop ebx
leave
ret 8
Function at 0x43956a
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 0x439598
push dword [esi]
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
test eax, eax
je 0x4395b6
push dword [esp + 0xc]
mov ecx, esi
push eax
call fcn.004394d4
jmp 0x4395b6
mov eax, dword [esi + 0x14]
test eax, eax
je 0x4395b6
push edi
push dword [esp + 0x10]
mov edi, dword [eax + 4]
push eax
mov ecx, esi
call fcn.004394d4
test edi, edi
mov eax, edi
jne 0x4395a0
pop edi
push ebx
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
pop esi
pop ebx
ret 8
mov ecx, dword [0x44e348]
test ecx, ecx
je 0x439669
jmp 0x439569
ret 8
Function at 0x407712
Capabilities:
Parse pe header

Disassembly:
push 0
push esi
call fcn.00583cec
test eax, eax
je 0x407752
mov ecx, 0x5a4d
cmp word [eax], cx
jne 0x407752
mov ecx, dword [eax + 0x3c]
add ecx, eax
cmp dword [ecx], 0x4550
jne 0x407752
mov eax, 0x10b
cmp word [ecx + 0x18], ax
jne 0x407752
cmp dword [ecx + 0x74], 0xe
jbe 0x407752
cmp dword [ecx + 0xe8], 0
je 0x407752
mov al, 1
ret
xor al, al
ret

Function at 0x417250
Capabilities:
Read file on windows

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
pop ebp
jmp fcn.004170c6

Function at 0x423000
Capabilities:
Access peb ldr_data
Get number of processors
Hash data using fnv
Resolve function by fnv-1a hash
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x28
mov eax, dword [0x433024]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
mov ebx, dword [ebp + 8]
push esi
push edi
push 0x4243a8
mov dword [ebp - 0x28], ebx
jmp fcn.004961c1
Function at 0x3b4a60
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xc
push ebx
push esi
mov esi, dword [0x3db010]
push edi
push 0x3e49e8
call esi
push 0x3e49e8
call esi
push 0x3e49e8
call esi
push 0x3e49e8
call esi
push 0x3e49e8
call esi
mov edi, dword [ebp + 0x10]
lea eax, [edi + 1]
push eax
push 0
call 0xca0363
nop
push eax
call 0x7780e026
nop
mov ebx, eax
push 0x3e49e8
mov dword [ebp - 4], ebx
call esi
push 0x3e49e8
call esi
push 0x3e49e8
call esi
push 0x3e49e8
call esi
push 0x3e49e8
call esi
push 0x3e49e8
mov byte [ebx + edi], 0
call esi
push 0x3e49e8
call esi
push 0x3e49e8
call esi
push 0x3e49e8
call esi
push 0x3e49e8
call esi
xor edi, edi
cmp dword [ebp + 0x10], edi
jbe 0x3b4b7a
mov eax, dword [ebp + 8]
sub eax, ebx
mov dword [ebp - 8], eax
push 0x3e49e8
call esi
push 0x3e49e8
call esi
push 0x3e49e8
call esi
push 0x3e49e8
call esi
push 0x3e49e8
call esi
mov ecx, dword [ebp + 0xc]
push ecx
add ebx, edi
nop
call 0x75d543d3
mov ecx, eax
xor edx, edx
mov eax, edi
div ecx
mov eax, dword [ebp + 0xc]
add esp, 4
push 0x3e49e8
mov cl, byte [edx + eax]
mov edx, dword [ebp - 8]
xor cl, byte [edx + ebx]
mov byte [ebx], cl
call esi
push 0x3e49e8
call esi
push 0x3e49e8
call esi
push 0x3e49e8
call esi
push 0x3e49e8
call esi
mov ebx, dword [ebp - 4]
inc edi
cmp edi, dword [ebp + 0x10]
jb 0x3b4b06
push 0x3e49e8
call esi
push 0x3e49e8
call esi
push 0x3e49e8
call esi
push 0x3e49e8
call esi
push 0x3e49e8
call esi
lea eax, [ebp - 0xc]
push eax
push 0x100
push 4
push ebx
mov dword [ebp - 0xc], 0
call 0xca0368
nop
pop edi
pop esi
mov eax, ebx
pop ebx
mov esp, ebp
pop ebp
ret

Function at 0x3b6ef0
Capabilities:
Parse pe header

Disassembly:
cmp dword [ebx + 4], 0x40
jb 0x3b6f91
mov eax, dword [ebx]
push 0x40
push eax
push esi
nop
call 0x75d49910
mov ecx, 0x5a4d
add esp, 0xc
cmp word [esi], cx
jne 0x3b6fc0
mov eax, dword [esi + 0x3c]
test eax, eax
je 0x3b6fc0
lea edx, [eax + 0xf8]
cmp edx, dword [ebx + 4]
ja 0x3b6f91
mov ecx, dword [ebx]
push edi
push pe_nt_image_headers32
add ecx, eax
push ecx
lea edi, [esi + 0x40]
push edi
call 0x75d49910
nop
add esp, 0xc
cmp dword [edi], 0x4550
pop edi
jne 0x3b6fc0
mov edx, 0x10b
cmp word [esi + 0x58], dx
jne 0x3b6fc0
movzx eax, word [esi + 0x46]
test ax, ax
je 0x3b6fc0
lea eax, [eax + eax*4]
add eax, eax
add eax, eax
add eax, eax
push eax
push 8
mov dword [esi + 0x140], eax
call dword [fcn.005e90f4]
push eax
call dword [fcn.005e9088]
mov dword [esi + 0x138], eax
test eax, eax
jne 0x3b6f97
mov eax, 3
ret
mov eax, 1
ret
movzx ecx, word [esi + 0x54]
mov edx, dword [esi + 0x3c]
lea ecx, [ecx + edx + 0x18]
mov edx, dword [esi + 0x140]
push ebx
push edx
push ecx
push eax
mov dword [esi + 0x13c], ecx
call fcn.003b7590
add esp, 0x10
neg eax
sbb eax, eax
inc eax
ret
mov eax, 2
ret
Function at 0x8b1af0
Capabilities:
Parse pe header
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xc
push esi
mov esi, dword [0x5e90e0]
test esi, esi
jne 0x8b1b08
xor eax, eax
pop esi
mov esp, ebp
pop ebp
ret
mov eax, 0x5a4d
cmp word [esi], ax
jne 0x8b1b01
mov eax, dword [esi + 0x3c]
cmp dword [eax + esi], 0x4550
jne 0x8b1b01
mov eax, dword [eax + esi + 0x78]
mov ecx, dword [eax + esi + 0x1c]
add eax, esi
add ecx, esi
push ebx
mov ebx, dword [eax + 0x20]
mov dword [ebp - 0xc], ecx
mov ecx, dword [eax + 0x24]
mov eax, dword [eax + 0x18]
push edi
add ecx, esi
add ebx, esi
xor edi, edi
mov dword [ebp - 8], ecx
mov dword [ebp - 4], eax
test eax, eax
je 0x8b1b6a
jmp 0x8b1b50
mov eax, dword [ebx + edi*4]
mov ecx, dword [0x5e8bf0]
add eax, esi
call fcn.008af610
test eax, eax
je 0x8b1b73
inc edi
cmp edi, dword [ebp - 4]
jb 0x8b1b50
pop edi
pop ebx
xor eax, eax
pop esi
mov esp, ebp
pop ebp
ret
mov ecx, dword [ebp - 8]
movzx edx, word [ecx + edi*2]
mov eax, dword [ebp - 0xc]
mov eax, dword [eax + edx*4]
pop edi
pop ebx
add eax, esi
pop esi
mov esp, ebp
pop ebp
ret
Function at 0x418010
Capabilities:
Log keystrokes via polling

Disassembly:
sub esp, 0xb0
mov al, byte [0x4c4049]
mov cl, byte [0x4c4048]
xor cl, al
push esi
mov byte [0x4c4048], cl
mov cl, byte [0x4c4043]
or cl, 8
mov esi, dword [esp + 0xb8]
shr cl, 3
and ecx, 0xff
push 5
mov dword [esp + 8], ecx
fild dword [esp + 8]
fdivr qword [0x4c79b0]
fadd qword [0x4c4050]
fstp qword [0x4c79a0]
mov dword [esi], 0
call dword [sym.imp.USER32.dll_GetSysColor]
push 0x11
call dword [sym.imp.USER32.dll_GetKeyState]
test ax, ax
jge 0x41807e
or dword [esi], 0x4000000
mov al, byte [0x4c4046]
mov dl, byte [0x4c4045]
xor al, dl
mov byte [0x4c4046], al
or al, 0x30
shr al, 4
and eax, 0xff
mov dword [esp + 4], eax
fild dword [esp + 4]
fdivr qword [0x4c7a10]
fstp qword [0x4c79a0]
fld qword [0x4c4050]
fadd qword [0x4c79b0]
fstp qword [0x4c79b0]
call dword [sym.imp.USER32.dll_EmptyClipboard]
lea edx, [esp + 8]
push edx
call dword [sym.imp.KERNEL32.dll_GetTimeZoneInformation]
mov eax, esi
pop esi
add esp, 0xb0
ret

Function at 0x4bc671
Capabilities:
Write file on windows

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x1a4
mov edx, dword [ebp + 8]
xor ecx, ecx
mov eax, 0x4c43b0
cmp edx, dword [eax]
je 0x4bc693
add eax, 8
inc ecx
cmp eax, 0x4c4440
jl 0x4bc684
push esi
mov esi, ecx
shl esi, 3
cmp edx, dword [esi + 0x4c43b0]
jne 0x4bc7c1
mov eax, dword [0x4c9d40]
cmp eax, 1
je 0x4bc79b
test eax, eax
jne 0x4bc6c4
cmp dword [0x4c42d8], 1
je 0x4bc79b
cmp edx, 0xfc
je 0x4bc7c1
lea eax, [ebp - 0x1a4]
push 0x104
push eax
push 0
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
test eax, eax
jne 0x4bc6fb
lea eax, [ebp - 0x1a4]
push 0x4c19c0
push eax
call fcn.004bd050
pop ecx
pop ecx
lea eax, [ebp - 0x1a4]
push edi
push eax
lea edi, [ebp - 0x1a4]
call fcn.004bd4e0
inc eax
pop ecx
cmp eax, 0x3c
jbe 0x4bc73e
lea eax, [ebp - 0x1a4]
push eax
call fcn.004bd4e0
mov edi, eax
lea eax, [ebp - 0x1a4]
sub eax, 0x3b
push 3
add edi, eax
push 0x4c19bc
push edi
call fcn.004bf3b0
add esp, 0x10
lea eax, [ebp - 0xa0]
push 0x4c19a0
push eax
call fcn.004bd050
lea eax, [ebp - 0xa0]
push edi
push eax
call fcn.004bd060
lea eax, [ebp - 0xa0]
push 0x4c199c
push eax
call fcn.004bd060
push dword [esi + 0x4c43b4]
lea eax, [ebp - 0xa0]
push eax
call fcn.004bd060
push 0x12010
lea eax, [ebp - 0xa0]
push 0x4c1974
push eax
call fcn.004bf324
add esp, 0x2c
pop edi
jmp 0x4bc7c1
lea eax, [ebp + 8]
lea esi, [esi + 0x4c43b4]
push 0
push eax
push dword [esi]
call fcn.004bd4e0
pop ecx
push eax
push dword [esi]
push 0xfffffffffffffff4
call dword [sym.imp.KERNEL32.dll_GetStdHandle]
push eax
call dword [sym.imp.KERNEL32.dll_WriteFile]
pop esi
leave
ret
Function at 0x44b6d0
Capabilities:
Encrypt data using rc4 prga

Disassembly:
sub esp, 8
mov cl, byte [0x65f042]
add byte gs:[eax + 0x65f041], ah
or cl, 0x10
push ebx
shr cl, 3
and ecx, 0xff
mov bl, byte [0x65f04b]
mov dword [esp + 4], ecx
xor bl, al
fild dword [esp + 4]
mov byte [0x65f04b], bl
mov ebx, dword [esp + 0x10]
test ebx, ebx
fdivr qword [0x6629a0]
push esi
fadd qword [0x65f058]
fstp qword [0x662a10]
je 0x44b793
call fcn.0044b610
push 0x65f0ac
call dword [sym.imp.KERNEL32.dll_LoadLibraryA]
mov edx, dword [0x65f030]
mov ecx, dword [0x65f034]
mov esi, eax
mov dword [esp + 0xc], 0
lea eax, [edx + edx]
or eax, ecx
mov dword [esp + 8], eax
fild qword [esp + 8]
test esi, esi
fadd qword [0x65f058]
fstp qword [0x65f058]
je 0x44b793
push edi
mov edi, dword [sym.imp.KERNEL32.dll_GetProcAddress]
push 0x65f088
push esi
call edi
push 0x65f064
push esi
call edi
xor eax, eax
pop edi
mov ecx, dword [esp + 0x14]
test ecx, ecx
je 0x44b793
lea ecx, [esp + 0x14]
inc eax
add ecx, 4
cmp eax, 0x36
jae 0x44b79d
cmp dword [ecx], 0
jne 0x44b785
pop esi
xor al, al
pop ebx
add esp, 8
ret 4
mov dword [ebx], esi
pop esi
mov al, 1
pop ebx
add esp, 8
ret 4

Function at 0x45e6af
Capabilities:
Encode data using xor

Disassembly:
push 0x894182a7
xor esi, ecx
pop esp
mov ebx, 0xf905e92d
inc edi
xor dword [edi - 0xf3c6610], esp
invalid

Function at 0x489e52
Capabilities:
Encode data using xor

Disassembly:
ficom word [edi - 0x59ec7944]
inc esi
cdq
cmp ebp, ecx
push edx
invalid
arpl word [ecx + 0x6f2c9706], bx
push 0x23
imul ebp, dword [eax], 0x1fb671e5
or byte [esi - 0xac3765a], dh
jnp 0x489ea8
sub al, byte [edi + 0x46dfb85f]
aam 0x61
push edi
popfd
mov bh, 0x79
jnp 0x489e7b
aas
out 0x6c, eax
push eax
pop edi
fcomp dword [ebx]
dec ebp
sal ebx, 1
daa
jmp 0x489e3b
sahf
sbb al, 0xba
adc al, byte gs:[edi]
pop ebx
push es
arpl word [edx], bx
jg 0x489ece
pushfd
mov bh, 0xbb
pushfd
dec ebp
or esp, 0xc23aeac5
ljmp 0xc59d
les ebx, [ecx + 0x5ddd7055]
or eax, 0xb4e92c2d
pop esp
xchg esi, eax
dec byte [ecx + 0x1f]
mov esp, 0x87669bc8
and al, 0xef
bound ebx, qword [esi + esi*2 - 0x74433c39]
std
sbb ah, dh
push 0x5327299d
and al, 3
jo 0x489f57
push ss
xor ebp, 7
jns 0x489f0e
or byte [edx + ebx*2], ch
sahf
mov ch, 0xd4
mov dl, 0xcd
out 0x10, al
mov esp, 0x4641f1eb
inc ecx
inc edi
cmp bl, bl
jl 0x489f51
sub ah, dh
mov dh, byte [esi - 2]
test bh, ch
invalid
push esi
sbb al, byte [edi]
add eax, dword [edi - 0x5a641eb7]
wait
movsd dword es:[edi], dword [esi]
mov cl, 0xd1
je 0x489ed4
pop eax
salc
invalid
nop
jae 0x489f25
stosb byte es:[edi], al
out dx, eax
adc cl, byte [edi]
sahf
invalid
salc
add al, 0x4a
jbe 0x489f1e
ljmp 0x2ce3:0x726c611d
sbb eax, 0xe3726c61
sub al, 0xfb
pop es
scasd eax, dword es:[edi]
xchg edx, eax
invalid
Function at 0x6579ed
Capabilities:
Write file on windows

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x1a4
mov edx, dword [ebp + 8]
xor ecx, ecx
mov eax, 0x65f3e8
cmp edx, dword [eax]
je 0x657a0f
add eax, 8
inc ecx
cmp eax, 0x65f478
jl 0x657a00
push esi
mov esi, ecx
shl esi, 3
cmp edx, dword [esi + 0x65f3e8]
jne 0x657b3d
mov eax, dword [0xa5bdc4]
cmp eax, 1
je 0x657b17
test eax, eax
jne 0x657a40
cmp dword [0x65f314], 1
je 0x657b17
cmp edx, 0xfc
je 0x657b3d
lea eax, [ebp - 0x1a4]
push 0x104
push eax
push 0
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
test eax, eax
jne 0x657a77
lea eax, [ebp - 0x1a4]
push 0x65c9f0
push eax
call fcn.006583d0
pop ecx
pop ecx
lea eax, [ebp - 0x1a4]
push edi
push eax
lea edi, [ebp - 0x1a4]
call fcn.00658860
inc eax
pop ecx
cmp eax, 0x3c
jbe 0x657aba
lea eax, [ebp - 0x1a4]
push eax
call fcn.00658860
mov edi, eax
lea eax, [ebp - 0x1a4]
sub eax, 0x3b
push 3
add edi, eax
push 0x65c9ec
push edi
call fcn.0065a730
add esp, 0x10
lea eax, [ebp - 0xa0]
push 0x65c9d0
push eax
call fcn.006583d0
lea eax, [ebp - 0xa0]
push edi
push eax
call fcn.006583e0
lea eax, [ebp - 0xa0]
push 0x65c9cc
push eax
call fcn.006583e0
push dword [esi + 0x65f3ec]
lea eax, [ebp - 0xa0]
push eax
call fcn.006583e0
push 0x12010
lea eax, [ebp - 0xa0]
push 0x65c9a4
push eax
call fcn.0065a6a4
add esp, 0x2c
pop edi
jmp 0x657b3d
lea eax, [ebp + 8]
lea esi, [esi + 0x65f3ec]
push 0
push eax
push dword [esi]
call fcn.00658860
pop ecx
push eax
push dword [esi]
push 0xfffffffffffffff4
call dword [sym.imp.KERNEL32.dll_GetStdHandle]
push eax
call dword [sym.imp.KERNEL32.dll_WriteFile]
pop esi
leave
ret
Function at 0x10001030
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x10
push esi
mov esi, ecx
mov dword [ebp - 8], 0x10
mov ecx, dword [ebp + 8]
mov eax, edx
push edi
mov dword [ebp - 0x10], eax
mov edi, esi
push ebx
mov ecx, dword [ecx]
mov eax, dword [eax]
mov dword [ebp - 4], ecx
xor eax, dword [edi]
lea edi, [edi + 4]
mov edx, eax
mov dword [ebp - 0xc], eax
mov ebx, eax
shr edx, 8
mov ecx, edx
shr ecx, 8
mov eax, ecx
movzx ecx, cl
shr eax, 8
mov eax, dword [esi + eax*4 + 0x48]
add eax, dword [esi + ecx*4 + 0x448]
movzx ecx, dl
mov edx, ebx
xor eax, dword [esi + ecx*4 + 0x848]
movzx ecx, bl
add eax, dword [esi + ecx*4 + 0xc48]
xor eax, dword [ebp - 4]
sub dword [ebp - 8], 1
mov dword [ebp - 4], edx
jne 0x10001053
mov ecx, dword [esi + 0x44]
xor ecx, edx
mov edx, dword [ebp - 0x10]
pop ebx
pop edi
mov dword [edx], ecx
mov ecx, dword [esi + 0x40]
xor ecx, eax
mov eax, dword [ebp + 8]
pop esi
mov dword [eax], ecx
mov esp, ebp
pop ebp
ret

Function at 0x100010c0
Capabilities:
Encode data using xor
Encrypt data using blowfish
Encrypt data using rc4 prga

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x14
push ebx
mov ebx, ecx
mov dword [ebp - 8], edx
push esi
push edi
mov eax, 0x10002020
mov dword [ebp - 0x14], ebx
lea edi, [ebx + 0x48]
mov dword [ebp - 4], ebx
sub eax, ebx
mov dword [ebp - 0xc], 0x12
mov ecx, 0x400
mov dword [ebp - 0x10], eax
mov esi, 0x10002070
xor ebx, ebx
rep movsd dword es:[edi], dword [esi]
lea eax, [ebx + 1]
xor edi, edi
cmp eax, 8
cmovl edi, eax
xor ecx, ecx
lea eax, [edi + 1]
cmp eax, 8
cmovl ecx, eax
xor edx, edx
lea eax, [ecx + 1]
cmp eax, 8
cmovl edx, eax
mov eax, dword [ebp - 8]
movzx esi, byte [ebx + eax]
mov ebx, eax
shl esi, 8
movzx eax, byte [edi + ebx]
or esi, eax
movzx eax, byte [ecx + ebx]
mov ecx, dword [ebp - 4]
shl esi, 8
or esi, eax
movzx eax, byte [edx + ebx]
shl esi, 8
xor ebx, ebx
or esi, eax
lea eax, [edx + 1]
cmp eax, 8
cmovl ebx, eax
mov eax, dword [ebp - 0x10]
mov eax, dword [eax + ecx]
xor eax, esi
mov dword [ecx], eax
add ecx, 4
sub dword [ebp - 0xc], 1
mov dword [ebp - 4], ecx
jne 0x100010f6
mov ebx, dword [ebp - 0x14]
xor esi, esi
mov dword [ebp - 4], 0
mov dword [ebp - 8], 0
lea eax, [ebp - 8]
mov ecx, ebx
push eax
lea edx, [ebp - 4]
call fcn.10001030
mov eax, dword [ebp - 4]
add esp, 4
mov dword [ebx + esi*4], eax
mov eax, dword [ebp - 8]
mov dword [ebx + esi*4 + 4], eax
add esi, 2
cmp esi, 0x12
jl 0x10001172
lea esi, [ebx + 0x4c]
mov dword [ebp - 0xc], 4
mov edi, 0x80
lea eax, [ebp - 8]
mov ecx, ebx
push eax
lea edx, [ebp - 4]
call fcn.10001030
mov eax, dword [ebp - 4]
add esp, 4
mov dword [esi - 4], eax
mov eax, dword [ebp - 8]
mov dword [esi], eax
add esi, 8
sub edi, 1
jne 0x100011a7
sub dword [ebp - 0xc], 1
jne 0x100011a2
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
Function at 0x41aaa0
Capabilities:
Extract resource via kernel32 functions

Disassembly:
push ebp
mov ebp, esp
push ebx
mov ebx, dword [ebp + 8]
push edi
mov edi, dword [ebp + 0xc]
push edi
push ebx
call dword [sym.imp.KERNEL32.dll_LoadResource]
test eax, eax
jne 0x41aabb
pop edi
pop ebx
pop ebp
ret
push esi
push eax
call dword [sym.imp.KERNEL32.dll_LockResource]
mov esi, eax
test esi, esi
je 0x41aaf2
push edi
push ebx
call dword [sym.imp.KERNEL32.dll_SizeofResource]
mov ecx, dword [ebp + 0x10]
add eax, esi
and ecx, 0xf
jbe 0x41aaee
jmp 0x41aae0
cmp esi, eax
jae 0x41aaf2
dec ecx
movzx edx, word [esi]
lea esi, [esi + edx*2 + 2]
jne 0x41aae0
cmp esi, eax
jb 0x41aaf9
pop esi
pop edi
xor eax, eax
pop ebx
pop ebp
ret
movzx eax, word [esi]
neg eax
sbb eax, eax
and eax, esi
pop esi
pop edi
pop ebx
pop ebp
ret

Function at 0x41c650
Capabilities:
Print debug messages

Disassembly:
push ebp
mov ebp, esp
mov eax, 0x2004
call fcn.00515ea0
mov eax, dword [0x59a4d4]
xor eax, ebp
mov dword [ebp - 4], eax
mov ecx, dword [ebp + 8]
lea eax, [ebp + 0xc]
push eax
push ecx
push 0xffd
lea edx, [ebp - 0x2004]
push 0x1000
push edx
call fcn.00515179
add esp, 0x14
test eax, eax
jns 0x41c691
mov eax, 0x1ffd
push esi
lea esi, [ebp + eax*2 - 0x2004]
lea eax, [ebp - 0x2004]
cmp esi, eax
jbe 0x41c6c6
movzx ecx, word [esi - 2]
push ecx
call fcn.005165f4
add esp, 4
test eax, eax
je 0x41c6c6
add esi, 0xfffffffe
xor edx, edx
lea eax, [ebp - 0x2004]
mov word [esi], dx
cmp esi, eax
ja 0x41c6a3
lea ecx, [ebp - 0x2004]
xor eax, eax
mov dword [esi], 0xa000d
push ecx
mov word [esi + 4], ax
call dword [sym.imp.KERNEL32.dll_OutputDebugStringW]
mov ecx, dword [ebp - 4]
xor ecx, ebp
pop esi
call fcn.00514760
mov esp, ebp
pop ebp
ret
Function at 0x41c6f0
Capabilities:
Create service
Delete service
Query service status
Start service

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x34
mov eax, dword [0x59a4d4]
xor eax, ebp
mov dword [ebp - 4], eax
mov eax, dword [ebp + 8]
push ebx
xor ebx, ebx
push 0xf003f
push ebx
push ebx
mov dword [ebp - 0x34], eax
mov dword [ebp - 0x30], ebx
mov dword [ebp - 0x2c], ebx
mov dword [ebp - 0x24], ebx
call dword [sym.imp.ADVAPI32.dll_OpenSCManagerW]
mov dword [ebp - 0x28], eax
cmp eax, ebx
jne 0x41c73d
call dword [sym.imp.KERNEL32.dll_GetLastError]
xor eax, eax
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.00514760
mov esp, ebp
pop ebp
ret
push esi
push 0xf01ff
push 0x53cf04
push eax
call dword [sym.imp.ADVAPI32.dll_OpenServiceW]
mov esi, eax
cmp esi, ebx
jne 0x41c769
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0x424
jne 0x41c769
xor eax, eax
lea ecx, [eax + 1]
jmp 0x41c770
mov ecx, 1
mov eax, ecx
push edi
mov edi, ecx
test eax, eax
je 0x41c7b6
test esi, esi
je 0x41c79c
lea ecx, [ebp - 0x20]
push ecx
push esi
call dword [sym.imp.ADVAPI32.dll_QueryServiceStatus]
test eax, eax
jne 0x41c790
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov ecx, 1
cmp dword [ebp - 0x1c], ecx
jne 0x41c79c
xor edi, edi
cmp dword [ebp + 0xc], ebx
jne 0x41c7a7
test edi, edi
jne 0x41c7bb
jmp 0x41c7b8
test edi, edi
je 0x41c7b3
cmp dword [ebp + 0x10], ebx
jne 0x41c7bb
mov dword [ebp - 0x30], ecx
mov dword [ebp - 0x2c], ecx
mov ebx, ecx
mov dword [ebp - 0x24], ecx
mov edi, dword [sym.imp.ADVAPI32.dll_CloseServiceHandle]
test esi, esi
je 0x41c7fd
cmp dword [ebp - 0x30], 0
je 0x41c7e4
lea edx, [ebp - 0x20]
push edx
push ecx
push esi
call dword [sym.imp.ADVAPI32.dll_ControlService]
test eax, eax
je 0x41c86b
mov ecx, 1
cmp dword [ebp - 0x2c], 0
je 0x41c7fd
push esi
call dword [sym.imp.ADVAPI32.dll_DeleteService]
test eax, eax
je 0x41c86b
push esi
call edi
xor esi, esi
lea ecx, [esi + 1]
test ebx, ebx
je 0x41c852
mov eax, dword [ebp - 0x34]
push 0
push 0
push 0
push 0
push 0
push eax
push 0
push 3
push ecx
mov ecx, dword [ebp - 0x28]
push 0x10030
push str.RtsUpx_Driver
push 0x53cf04
push ecx
call dword [sym.imp.ADVAPI32.dll_CreateServiceW]
mov esi, eax
test esi, esi
jne 0x41c856
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov edx, dword [ebp - 0x28]
push edx
call edi
pop edi
pop esi
xor eax, eax
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.00514760
mov esp, ebp
pop ebp
ret
test esi, esi
je 0x41c898
cmp dword [ebp - 0x24], 0
je 0x41c891
push 0
push 0
push esi
call dword [sym.imp.ADVAPI32.dll_StartServiceW]
test eax, eax
jne 0x41c891
call dword [sym.imp.KERNEL32.dll_GetLastError]
test esi, esi
je 0x41c878
push esi
call edi
mov edx, dword [ebp - 0x28]
push edx
call edi
pop edi
pop esi
xor eax, eax
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.00514760
mov esp, ebp
pop ebp
ret
test esi, esi
je 0x41c898
push esi
call edi
mov eax, dword [ebp - 0x28]
push eax
call edi
mov ecx, dword [ebp - 4]
pop edi
pop esi
xor ecx, ebp
mov eax, 1
pop ebx
call fcn.00514760
mov esp, ebp
pop ebp
ret