joyce8/EMBER2024-capa huggingface dataset:
Function at 0x49cf7d
Capabilities:
Write file on windows

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
sub esp, 0x18
mov eax, dword [0x4b6c04]
xor eax, ebp
mov dword [ebp - 4], eax
or dword [ebp - 0xc], 0xffffffff
push ebx
push esi
mov ebx, ecx
xor ecx, ecx
mov esi, ebx
mov dword [ebp - 8], ecx
neg esi
mov dword [ebp - 0x14], ecx
push edi
lea eax, [ebx + 8]
mov dword [ebp - 0x10], ecx
sbb esi, esi
mov edi, ecx
and esi, eax
je 0x49cfbe
lea eax, [esi + 4]
push eax
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
xor ecx, ecx
cmp dword [ebx + 0x98], ecx
jne 0x49cfd0
mov edi, 0x802a0035
jmp 0x49d155
mov eax, dword [ebx + 0x94]
test eax, eax
jne 0x49cfe4
mov edi, 0x80004005
jmp 0x49d15e
cmp dword [ebx + 0x9c], ecx
jne 0x49d155
push ecx
push 0x80
push 2
push ecx
push 1
push 0xc0000000
push eax
call dword [sym.imp.KERNEL32.dll_CreateFileW]
mov dword [ebp - 0xc], eax
cmp eax, 0xffffffff
jne 0x49d041
call dword [sym.imp.KERNEL32.dll_GetLastError]
test eax, eax
je 0x49d037
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov edi, eax
test edi, edi
jle 0x49d155
movzx edi, di
or edi, 0x80070000
jmp 0x49d155
mov edi, 0x8000ffff
jmp 0x49d155
mov eax, dword [ebx]
lea ecx, [ebp - 0x10]
push ecx
push ebx
mov edi, dword [eax + 0x14]
mov ecx, edi
call dword [0x4ba1e0]
call edi
push 1
mov ecx, ebx
call fcn.0049d75f
mov edi, eax
test edi, edi
js 0x49d155
jmp 0x49d0b7
push 0
lea ecx, [ebp - 0x14]
push ecx
push eax
mov eax, dword [ebx + 0x78]
add eax, dword [ebx + 0x80]
push eax
push dword [ebp - 0xc]
call dword [sym.imp.KERNEL32.dll_WriteFile]
test eax, eax
jne 0x49d0a5
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov edi, eax
test edi, edi
jle 0x49d09f
movzx edi, di
or edi, 0x80070000
test edi, edi
js 0x49d155
mov eax, dword [ebp - 8]
add dword [ebx + 0x84], eax
mov eax, dword [ebp - 0x14]
add dword [ebx + 0x80], eax
lea eax, [ebp - 8]
mov ecx, ebx
push eax
call fcn.0049d658
mov eax, dword [ebp - 8]
test eax, eax
jne 0x49d06a
mov eax, dword [ebx + 0x84]
mov edi, eax
sub edi, dword [ebx + 0x30]
neg edi
sbb edi, edi
and edi, 0x802a0021
cmp eax, dword [ebx + 0x30]
jne 0x49d155
push 0
mov ecx, ebx
call fcn.0049d75f
mov edi, eax
test edi, edi
js 0x49d155
push dword [ebp - 0xc]
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov eax, dword [ebp - 0x10]
lea edx, [ebx + 0x90]
mov ecx, dword [ebx + 0x94]
or dword [ebp - 0xc], 0xffffffff
mov dword [ebp - 0x18], eax
call fcn.0049900a
mov edi, eax
test edi, edi
js 0x49d155
mov eax, dword [ebx + 0x90]
lea edx, [ebp - 0x18]
push edx
push eax
mov ecx, dword [eax]
mov edi, dword [ecx + 0x10]
mov ecx, edi
call dword [0x4ba1e0]
call edi
mov edi, eax
test edi, edi
js 0x49d155
mov eax, dword [ebp - 0x18]
cmp eax, dword [ebp - 0x10]
je 0x49d14b
mov edi, 0x80004005
jmp 0x49d155
mov dword [ebx + 0x9c], 1
push dword [ebp - 0xc]
call dword [sym.imp.KERNEL32.dll_CloseHandle]
test esi, esi
je 0x49d16c
add esi, 4
push esi
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov ecx, dword [ebp - 4]
mov eax, edi
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.004a4e80
mov esp, ebp
pop ebp
ret
Function at 0x49e3ba
Capabilities:
Encode data using xor
Hash data with crc32

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
push esi
mov esi, dword [ebp + 8]
not ecx
cmp esi, 8
jb 0x49e47b
push edi
mov edi, esi
shr edi, 3
movzx eax, byte [edx]
sub esi, 8
xor eax, ecx
shr ecx, 8
movzx eax, al
xor ecx, dword [eax*4 + 0x430e28]
movzx eax, byte [edx + 1]
xor eax, ecx
shr ecx, 8
movzx eax, al
xor ecx, dword [eax*4 + 0x430e28]
movzx eax, byte [edx + 2]
xor eax, ecx
shr ecx, 8
movzx eax, al
xor ecx, dword [eax*4 + 0x430e28]
movzx eax, byte [edx + 3]
xor eax, ecx
shr ecx, 8
movzx eax, al
xor ecx, dword [eax*4 + 0x430e28]
movzx eax, byte [edx + 4]
xor eax, ecx
shr ecx, 8
movzx eax, al
xor ecx, dword [eax*4 + 0x430e28]
movzx eax, byte [edx + 5]
xor eax, ecx
shr ecx, 8
movzx eax, al
xor ecx, dword [eax*4 + 0x430e28]
movzx eax, byte [edx + 6]
xor eax, ecx
shr ecx, 8
movzx eax, al
xor ecx, dword [eax*4 + 0x430e28]
movzx eax, byte [edx + 7]
add edx, 8
xor eax, ecx
shr ecx, 8
movzx eax, al
xor ecx, dword [eax*4 + 0x430e28]
sub edi, 1
jne 0x49e3d4
pop edi
test esi, esi
je 0x49e497
movzx eax, byte [edx]
xor eax, ecx
shr ecx, 8
movzx eax, al
xor ecx, dword [eax*4 + 0x430e28]
inc edx
sub esi, 1
jne 0x49e47f
not ecx
mov eax, ecx
pop esi
pop ebp
ret 4
Function at 0x49f124
Capabilities:
Encrypt data using rc4 prga

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
sub esp, 0x14
push ebx
push esi
push edi
mov edi, ecx
mov dword [ebp - 8], edi
mov ebx, dword [edi + 0x24]
mov ecx, dword [edi + 0x6c]
mov esi, dword [edi + 0x34]
mov edx, dword [edi + 0x64]
sub esi, edx
sub esi, ecx
jne 0x49f155
test edx, edx
jne 0x49f15f
test ecx, ecx
jne 0x49f15f
mov esi, ebx
jmp 0x49f1db
cmp esi, 0xffffffff
jne 0x49f15f
push 0xfffffffffffffffe
pop esi
jmp 0x49f1db
mov eax, dword [edi + 0x24]
add eax, 0xfffffefa
add eax, ebx
cmp edx, eax
jb 0x49f1db
mov ecx, dword [edi + 0x30]
push ebx
lea eax, [ecx + ebx]
push eax
push ecx
call sub.msvcrt.dll_memcpy
mov ecx, dword [edi + 0x44]
add esp, 0xc
mov eax, dword [edi + 0x3c]
sub dword [edi + 0x68], ebx
sub dword [edi + 0x64], ebx
sub dword [edi + 0x54], ebx
mov edi, ecx
mov dword [ebp - 4], ecx
lea edx, [eax + ecx*2]
lea edx, [edx - 2]
movzx eax, word [edx]
mov ecx, eax
sub ecx, ebx
cmp eax, ebx
sbb eax, eax
not eax
and eax, ecx
mov word [edx], ax
sub edi, 1
jne 0x49f195
mov edi, dword [ebp - 8]
mov ecx, ebx
mov eax, dword [edi + 0x38]
mov edi, ecx
lea edx, [eax + ecx*2]
lea edx, [edx - 2]
movzx eax, word [edx]
mov ecx, eax
sub ecx, ebx
cmp eax, ebx
sbb eax, eax
not eax
and eax, ecx
mov word [edx], ax
sub edi, 1
jne 0x49f1bc
mov edi, dword [ebp - 8]
add esi, ebx
mov ecx, dword [edi]
mov dword [ebp - 4], ecx
mov edx, dword [ecx + 4]
test edx, edx
je 0x49f295
mov ecx, dword [edi + 0x64]
add ecx, dword [edi + 0x30]
mov eax, dword [edi + 0x6c]
add ecx, eax
mov dword [ebp - 0x10], eax
mov eax, edx
mov dword [ebp - 0x14], ecx
mov ecx, dword [ebp - 4]
mov dword [ebp - 0xc], eax
cmp eax, esi
ja 0x49f20a
mov esi, edx
test esi, esi
jne 0x49f213
mov eax, dword [ebp - 0x10]
jmp 0x49f251
mov eax, dword [ecx + 0x1c]
sub edx, esi
mov dword [ecx + 4], edx
mov edx, dword [ecx]
mov dword [ebp - 0x10], edx
cmp dword [eax + 0x18], 0
jne 0x49f239
push esi
push edx
push dword [ecx + 0x30]
call fcn.004a05d0
mov ecx, dword [ebp - 4]
mov edx, dword [ebp - 0x10]
mov dword [ecx + 0x30], eax
push esi
push edx
push dword [ebp - 0x14]
call sub.msvcrt.dll_memcpy
mov eax, dword [ebp - 4]
add esp, 0xc
add dword [eax], esi
add dword [eax + 8], esi
mov eax, dword [edi + 0x6c]
lea ecx, [eax + esi]
mov dword [ebp - 0x14], ecx
mov dword [edi + 0x6c], ecx
cmp ecx, 3
jb 0x49f281
mov edx, dword [edi + 0x64]
mov eax, dword [edi + 0x30]
mov ecx, dword [edi + 0x50]
movzx esi, byte [edx + eax]
mov dword [edi + 0x40], esi
movzx eax, byte [edx + eax + 1]
shl esi, cl
mov ecx, dword [ebp - 0x14]
xor esi, eax
and esi, dword [edi + 0x4c]
mov dword [edi + 0x40], esi
cmp ecx, 0x106
jae 0x49f295
mov eax, dword [edi]
cmp dword [eax + 4], 0
jne 0x49f13a
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
Function at 0x4a3376
Capabilities:
Get system information on windows

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
sub esp, 0x44
push edi
push 0x1c
lea eax, [ebp - 0x20]
mov dword [ebp - 4], edx
mov edi, ecx
push eax
push edi
call dword [sym.imp.KERNEL32.dll_VirtualQuery]
test eax, eax
jne 0x4a339a
push 0x19
pop ecx
int 0x29
test byte [ebp - 0xc], 0x44
je 0x4a33e4
push ebx
push esi
lea eax, [ebp - 0x44]
push eax
call dword [sym.imp.KERNEL32.dll_GetSystemInfo]
mov ebx, dword [ebp - 0x40]
xor edx, edx
lea ecx, [ebx - 1]
mov eax, ecx
lea esi, [ebx - 1]
and ecx, dword [ebp - 4]
and eax, edi
add eax, ebx
dec ecx
add eax, ecx
not esi
div ebx
xor edx, edx
and esi, edi
mov ecx, eax
mov eax, dword [ebp - 4]
div ebx
add ecx, eax
je 0x4a33e2
xor eax, eax
lock or dword [esi], eax
add esi, ebx
sub ecx, 1
jne 0x4a33d6
pop esi
pop ebx
pop edi
mov esp, ebp
pop ebp
ret

Function at 0x4a4e70
Capabilities:
Terminate process

Disassembly:
push 0x5c
push 0x4b2178
call fcn.004a57d8
xor ebx, ebx
mov dword [ebp - 0x20], ebx
lea eax, [ebp - 0x6c]
push eax
call dword [sym.imp.KERNEL32.dll_GetStartupInfoW]
mov dword [ebp - 4], ebx
mov eax, dword fs:[0x18]
mov esi, dword [eax + 4]
mov edi, ebx
mov edx, 0x4b88ec
mov ecx, esi
xor eax, eax
lock cmpxchg dword [edx], ecx
test eax, eax
je 0x4a4ca5
cmp eax, esi
jne 0x4a4c98
xor esi, esi
inc esi
mov edi, esi
jmp 0x4a4ca8
push 0x3e8
call dword [sym.imp.KERNEL32.dll_Sleep]
jmp 0x4a4c7c
xor esi, esi
inc esi
cmp dword [0x4b88f0], esi
jne 0x4a4cba
push 0x1f
call sub.msvcrt.dll__amsg_exit
pop ecx
jmp 0x4a4cf4
cmp dword [0x4b88f0], ebx
jne 0x4a4cee
mov dword [0x4b88f0], esi
push 0x4133f8
push 0x4133ec
call fcn.004a4e24
pop ecx
pop ecx
test eax, eax
je 0x4a4cf4
mov dword [ebp - 4], 0xfffffffe
mov eax, 0xff
jmp 0x4a4e1e
mov dword [0x4b7ac8], esi
cmp dword [0x4b88f0], esi
jne 0x4a4d17
push 0x4133e8
push 0x41335c
call sub.msvcrt.dll__initterm
pop ecx
pop ecx
mov dword [0x4b88f0], 2
test edi, edi
jne 0x4a4d24
xor eax, eax
mov ecx, 0x4b88ec
xchg dword [ecx], eax
cmp dword [0x4b88fc], 0
je 0x4a4d50
push 0x4b88fc
call fcn.004a5630
pop ecx
test eax, eax
je 0x4a4d50
push ebx
push 2
push ebx
mov esi, dword [0x4b88fc]
mov ecx, esi
call dword [0x4ba1e0]
call esi
mov eax, dword [sym.imp.msvcrt.dll__wcmdln]
mov ecx, dword [eax]
test ecx, ecx
je 0x4a4cdd
mov dword [ebp - 0x24], ecx
push 0x20
pop esi
mov edx, dword [ebp - 0x20]
movzx eax, word [ecx]
cmp ax, si
ja 0x4a4dbb
test ax, ax
je 0x4a4d8a
test edx, edx
jne 0x4a4dbb
test ax, ax
je 0x4a4d8a
cmp ax, si
ja 0x4a4d8a
add ecx, 2
mov dword [ebp - 0x24], ecx
movzx eax, word [ecx]
jmp 0x4a4d75
test byte [ebp - 0x40], 1
je 0x4a4d96
movzx eax, word [ebp - 0x3c]
jmp 0x4a4d99
push 0xa
pop eax
push eax
push ecx
push ebx
push 0x400000
call main
mov dword [0x4b7ac4], eax
cmp dword [0x4b7adc], 0
jne 0x4a4e03
push eax
call dword [sym.imp.msvcrt.dll_exit]
cmp eax, 0x22
jne 0x4a4dcc
xor eax, eax
test edx, edx
sete al
mov edx, eax
mov dword [ebp - 0x20], edx
add ecx, 2
mov dword [ebp - 0x24], ecx
jmp 0x4a4d64
cmp dword [0x4b7ac8], 0
jne 0x4a4e17
call dword [sym.imp.msvcrt.dll__cexit]
mov eax, dword [0x4b7ac4]
mov dword [ebp - 4], 0xfffffffe
call fcn.004a5820
ret
call fcn.004a5723
jmp 0x4a4c53
Function at 0x4a5534
Capabilities:
Parse pe header

Disassembly:
push 0xc
push 0x4b2218
call fcn.004a5870
xor ecx, ecx
mov eax, dword [ebp + 8]
test eax, eax
je 0x4a5594
cmp eax, 0xffffffff
je 0x4a5594
mov dword [ebp - 4], ecx
mov edx, 0x5a4d
cmp word [eax], dx
jne 0x4a558d
mov edx, dword [eax + 0x3c]
test edx, edx
js 0x4a558d
cmp edx, 0x10000000
jae 0x4a558d
add eax, edx
mov dword [ebp - 0x1c], eax
mov ecx, dword [eax]
sub ecx, 0x4550
neg ecx
sbb ecx, ecx
not ecx
and ecx, eax
jmp 0x4a558a
mov dword [ebp - 0x1c], ecx
mov dword [ebp - 4], 0xfffffffe
mov eax, ecx
call fcn.004a58b5
ret 4

Function at 0x4a55e0
Capabilities:
Enumerate pe sections

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
mov eax, dword [ebp + 8]
xor edx, edx
push ebx
push esi
push edi
mov ecx, dword [eax + 0x3c]
add ecx, eax
movzx eax, word [ecx + 0x14]
movzx ebx, word [ecx + 6]
add eax, 0x18
add eax, ecx
test ebx, ebx
je 0x4a561e
mov edi, dword [ebp + 0xc]
mov esi, dword [eax + 0xc]
cmp edi, esi
jb 0x4a5616
mov ecx, dword [eax + 8]
add ecx, esi
cmp edi, ecx
jb 0x4a5620
inc edx
add eax, 0x28
cmp edx, ebx
jb 0x4a5606
xor eax, eax
pop edi
pop esi
pop ebx
pop ebp
ret

Function at 0x4a56f0
Capabilities:
Parse pe header

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
mov eax, dword [ebp + 8]
mov ecx, 0x5a4d
cmp word [eax], cx
je 0x4a5706
xor eax, eax
pop ebp
ret
mov ecx, dword [eax + 0x3c]
add ecx, eax
xor eax, eax
cmp dword [ecx], 0x4550
jne 0x4a5721
mov edx, 0x10b
cmp word [ecx + 0x18], dx
sete al
pop ebp
ret
Function at 0x401360
Capabilities:
Access peb ldr_data
Get process heap force flags

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x42f858
mov eax, dword fs:[0]
push eax
sub esp, 0x28
mov eax, dword [0x4407b0]
xor eax, esp
mov dword [esp + 0x20], eax
push esi
mov eax, dword [0x4407b0]
xor eax, esp
push eax
lea eax, [esp + 0x30]
mov dword fs:[0], eax
mov esi, ecx
mov eax, dword [ebp + 0x10]
sub esp, 0x18
mov ecx, esp
push 0xffffffffffffffff
push 0
mov dword [ecx + 0x14], 0xf
mov dword [ecx + 0x10], 0
push eax
mov byte [ecx], 0
call fcn.004019a0
push dword [ebp + 0xc]
lea eax, [esp + 0x2c]
push dword [ebp + 8]
push eax
call fcn.00401280
add esp, 0x24
mov dword [esp + 0x38], 0
cmp dword [eax + 0x14], 0x10
jb 0x4013dd
mov eax, dword [eax]
mov dword [esp + 0xc], eax
mov ecx, esi
lea eax, [esp + 0xc]
push eax
call fcn.00409cfe
cmp dword [esp + 0x24], 0x10
mov dword [esi], 0x433208
jb 0x401406
push dword [esp + 0x10]
call fcn.0040a8c8
add esp, 4
mov ecx, dword [ebp + 8]
mov eax, esi
mov dword [esi + 0xc], ecx
mov ecx, dword [ebp + 0xc]
mov dword [esi], 0x433314
mov dword [esi + 0x10], ecx
mov ecx, dword [esp + 0x30]
mov dword fs:[0], ecx
pop ecx
pop esi
mov ecx, dword [esp + 0x20]
xor ecx, esp
call fcn.00409c4b
mov esp, ebp
pop ebp
ret 0xc
Function at 0x406ee0
Capabilities:
Access peb ldr_data

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x43055f
mov eax, dword fs:[0]
push eax
sub esp, 8
push ebx
push esi
push edi
mov eax, dword [0x4407b0]
xor eax, ebp
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov esi, ecx
mov edx, dword [ebp + 8]
mov ebx, dword [ebp + 0xc]
mov dword [ebp - 0x14], esi
mov dword [ebp - 4], 0
mov dword [esi + 4], 0
mov dword [esi + 8], 0
mov dword [esi + 0xc], 0
mov dword [esi + 0x10], 0
mov dword [esi + 0x14], 0
mov dword [esi + 0x18], 0x4390f4
mov dword [esi + 0x1c], 0
mov dword [esi], 0x4390cc
mov dword [esi + 0x18], 0x439088
mov dword [esi + 0x20], 0x4391a4
mov dword [esi + 0x24], 0x4391cc
mov dword [esi + 0x28], 0x439138
mov dword [esi + 0x2c], 0x4390dc
mov dword [esi + 0x30], 0x439158
mov dword [esi + 0x34], 0
mov dword [esi + 0x38], 0
mov dword [esi + 0x3c], 0
mov dword [esi + 0x40], 0
mov dword [esi + 0x44], 0
mov dword [esi + 0x4c], 0
lea eax, [esi + 0x50]
xor ecx, ecx
mov dword [eax + 0x14], 7
mov dword [eax + 0x10], 0
mov word [eax], cx
xor edi, edi
mov dword [esi + 0x7c], 7
mov dword [esi + 0x78], ecx
mov word [esi + 0x68], di
lea edi, [esi + 0x80]
mov dword [edi + 0x14], 0xf
mov dword [edi + 0x10], ecx
mov byte [edi], cl
mov byte [ebp - 4], 5
cmp word [edx], cx
je 0x407003
mov ecx, edx
lea eax, [ecx + 2]
mov dword [ebp - 0x10], eax
mov edi, edi
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x406ff0
sub ecx, dword [ebp - 0x10]
lea eax, [esi + 0x50]
sar ecx, 1
push ecx
push edx
mov ecx, eax
call fcn.00402280
cmp word [ebx], 0
jne 0x407016
xor ecx, ecx
jmp 0x40702f
mov ecx, ebx
lea edx, [ecx + 2]
jmp 0x407020
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x407020
sub ecx, edx
sar ecx, 1
push ecx
push ebx
lea ecx, [esi + 0x68]
call fcn.00402280
lea eax, [ebp + 0x10]
cmp edi, eax
je 0x40704c
push 0xffffffffffffffff
push 0
push eax
mov ecx, edi
call fcn.004019a0
cmp dword [ebp + 0x24], 0x10
jb 0x40705d
push dword [ebp + 0x10]
call fcn.0040a8c8
add esp, 4
mov eax, esi
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x20
Function at 0x408ce0
Capabilities:
Check http status code

Disassembly:
push ebp
mov ebp, esp
mov eax, 0x2020
call fcn.00424440
mov eax, dword [0x4407b0]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
push edi
push 0x1fff
lea eax, [ebp - 0x200f]
mov dword [ebp - 0x2014], ecx
push 0
push eax
mov edi, edx
mov byte [ebp - 0x201d], 0
mov byte [ebp - 0x2010], 0
call fcn.00412880
add esp, 0xc
mov dword [edi + 0x10], 0
cmp dword [edi + 0x14], 0x10
jb 0x408d36
mov eax, dword [edi]
jmp 0x408d38
mov eax, edi
push 0
push 0
push 0
push 1
push 0
mov byte [eax], 0
call dword [0x432228]
mov ebx, eax
test ebx, ebx
jne 0x408d63
pop edi
xor al, al
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.00409c4b
mov esp, ebp
pop ebp
ret
push esi
mov esi, dword [0x43222c]
lea eax, [ebp - 0x2018]
push 4
push eax
push 2
push ebx
mov dword [ebp - 0x2018], 0x3a98
call esi
push 4
lea eax, [ebp - 0x2018]
push eax
push 5
push ebx
call esi
push 4
lea eax, [ebp - 0x2018]
push eax
push 6
push ebx
call esi
mov eax, dword [ebp - 0x2014]
cmp dword [eax + 0x14], 0x10
jb 0x408dac
mov eax, dword [eax]
push 0
push 0x84000002
push 0
push 0
push eax
push ebx
call dword [0x432234]
mov esi, eax
test esi, esi
je 0x408ebb
push 0
lea eax, [ebp - 0x201c]
mov byte [ebp - 0x10], 0
push eax
lea eax, [ebp - 0x10]
mov byte [ebp - 7], 0
push eax
push 0x13
xorps xmm0, xmm0
mov dword [ebp - 0x201c], 0xa
push esi
movq qword [ebp - 0xf], xmm0
call dword [0x432230]
test eax, eax
je 0x408eb4
lea eax, [ebp - 0x10]
push eax
call fcn.00410356
add esp, 4
cmp eax, 0xc8
jne 0x408eb4
push 0x2000
lea eax, [ebp - 0x2010]
push 0
push eax
call fcn.00412880
add esp, 0xc
mov dword [ebp - 0x2014], 0
lea eax, [ebp - 0x2014]
push eax
push 0x2000
lea eax, [ebp - 0x2010]
push eax
push esi
call dword [0x432238]
test eax, eax
je 0x408ead
mov eax, dword [ebp - 0x2014]
test eax, eax
je 0x408ed9
push eax
lea eax, [ebp - 0x2010]
mov ecx, edi
push eax
call fcn.004018b0
push 0x2000
lea eax, [ebp - 0x2010]
push 0
push eax
call fcn.00412880
add esp, 0xc
mov dword [ebp - 0x2014], 0
lea eax, [ebp - 0x2014]
push eax
push 0x2000
lea eax, [ebp - 0x2010]
push eax
push esi
call dword [0x432238]
test eax, eax
jne 0x408e56
mov byte [ebp - 0x201d], 0
push esi
call dword [0x432224]
push ebx
call dword [0x432224]
mov ecx, dword [ebp - 4]
mov al, byte [ebp - 0x201d]
xor ecx, ebp
pop esi
pop edi
pop ebx
call fcn.00409c4b
mov esp, ebp
pop ebp
ret
mov byte [ebp - 0x201d], 1
jmp 0x408eb4
Function at 0x4103e0
Capabilities:
Parse pe header

Disassembly:
call fcn.0042183d
jmp 0x4103ea
push 0x14
push 0x43d5e0
call fcn.004150b0
call fcn.00412b3b
movzx esi, ax
push 2
call fcn.004159c8
pop ecx
mov eax, 0x5a4d
cmp word [0x400000], ax
je 0x410418
xor ebx, ebx
jmp 0x41044b
mov eax, dword [0x40003c]
cmp dword [eax + 0x400000], 0x4550
jne 0x410414
mov ecx, 0x10b
cmp word [eax + 0x400018], cx
jne 0x410414
xor ebx, ebx
cmp dword [eax + 0x400074], 0xe
jbe 0x41044b
cmp dword [eax + 0x4000e8], ebx
setne bl
mov dword [ebp - 0x1c], ebx
call fcn.00414b63
test eax, eax
jne 0x41045f
push 0x1c
call fcn.0041053a
pop ecx
call fcn.0041586d
test eax, eax
jne 0x410470
push 0x10
call fcn.0041053a
pop ecx
call fcn.004218d9
and dword [ebp - 4], 0
call fcn.00416088
test eax, eax
jns 0x41048a
push 0x1b
call fcn.0041053a
pop ecx
call dword [0x432144]
mov dword [0x446784], eax
call fcn.00421919
mov dword [0x445694], eax
call fcn.0042152d
test eax, eax
jns 0x4104b0
push 8
call fcn.00414df6
pop ecx
call fcn.0042175c
test eax, eax
jns 0x4104c1
push 9
call fcn.00414df6
pop ecx
push 1
call fcn.00414e30
pop ecx
test eax, eax
je 0x4104d4
push eax
call fcn.00414df6
pop ecx
call fcn.004219a6
push esi
push eax
push 0
push 0x400000
call main
mov esi, eax
mov dword [ebp - 0x24], esi
test ebx, ebx
jne 0x4104f6
push esi
call fcn.00415099
call fcn.00414e21
jmp 0x41052b
mov dword [ebp - 4], 0xfffffffe
mov eax, esi
call fcn.004150f5
ret

Function at 0x419764
Capabilities:
Hash data using fnv

Disassembly:
movzx eax, byte [ecx + esi]
xor eax, edx
imul edx, eax, 0x1000193
inc ecx
cmp ecx, 4
jb 0x419760
mov eax, edx
xor edx, edx
div dword [ebp + 0xc]
Function at 0x4018e0
Capabilities:
Extract resource via kernel32 functions

Disassembly:
sub esp, 8
mov eax, dword [0x4160c4]
push ebx
push ebp
push esi
push 0x7d0
push str.DESKTOP_ANIMI
push eax
call dword [sym.imp.KERNEL32.dll_FindResourceW]
mov esi, eax
mov dword [esp + 0x10], esi
test esi, esi
je 0x4019f6
mov ecx, dword [0x4160c4]
push esi
push ecx
call dword [sym.imp.KERNEL32.dll_LoadResource]
mov ebp, eax
test ebp, ebp
je 0x4019f6
mov edx, dword [0x4160c4]
push esi
push edx
call dword [sym.imp.KERNEL32.dll_SizeofResource]
mov ebx, eax
test ebx, ebx
ja 0x401941
pop esi
pop ebp
xor al, al
pop ebx
add esp, 8
ret 4
push edi
push ebx
push 0x22
call dword [sym.imp.KERNEL32.dll_GlobalAlloc]
mov edi, eax
push edi
call dword [sym.imp.KERNEL32.dll_GlobalLock]
push ebp
mov esi, eax
call dword [sym.imp.KERNEL32.dll_LockResource]
test esi, esi
je 0x401970
test eax, eax
je 0x401970
push ebx
push eax
push esi
call fcn.00404730
add esp, 0xc
mov eax, dword [esp + 0x14]
push eax
call dword [sym.imp.KERNEL32.dll_FreeResource]
test edi, edi
je 0x4019f5
lea ecx, [esp + 0x10]
push ecx
push 1
xor ebx, ebx
push edi
mov dword [esp + 0x1c], ebx
call dword [sym.imp.ole32.dll_CreateStreamOnHGlobal]
test eax, eax
jne 0x4019d7
cmp dword [esp + 0x10], ebx
je 0x4019d7
push 0x10
call sub.gdiplus.dll_GdipAlloc
mov esi, eax
cmp esi, ebx
je 0x4019cf
mov eax, dword [esp + 0x10]
lea edx, [esp + 0x14]
push edx
push eax
mov dword [esi], vtable.Gdiplus::Bitmap.0
mov dword [esp + 0x1c], ebx
call sub.gdiplus.dll_GdipCreateBitmapFromStream
mov dword [esi + 8], eax
mov eax, dword [esp + 0x14]
mov dword [esi + 4], eax
jmp 0x4019d1
xor esi, esi
mov ecx, dword [esp + 0x1c]
mov dword [ecx], esi
push edi
call dword [sym.imp.KERNEL32.dll_GlobalUnlock]
push edi
call dword [sym.imp.KERNEL32.dll_GlobalFree]
mov eax, dword [esp + 0x10]
cmp eax, ebx
je 0x4019f5
mov edx, dword [eax]
push eax
mov eax, dword [edx + 8]
call eax
pop edi
mov ecx, dword [esp + 0x18]
cmp dword [ecx], 0
pop esi
pop ebp
setne al
pop ebx
add esp, 8
ret 4

Function at 0x401a10
Capabilities:
Acquire debug privileges

Disassembly:
sub esp, 0x18
push ebx
lea eax, [esp + 4]
push eax
push 0xf01ff
xor bl, bl
call dword [sym.imp.KERNEL32.dll_GetCurrentProcess]
push eax
call dword [sym.imp.ADVAPI32.dll_OpenProcessToken]
test eax, eax
je 0x401a80
lea ecx, [esp + 0xc]
push ecx
push str.SeDebugPrivilege
push 0
mov dword [esp + 0x14], 1
call dword [sym.imp.ADVAPI32.dll_LookupPrivilegeValueW]
mov eax, dword [esp + 4]
push 0
push 0
push 0x10
lea edx, [esp + 0x14]
push edx
push 0
push eax
mov dword [esp + 0x2c], 2
call dword [sym.imp.ADVAPI32.dll_AdjustTokenPrivileges]
cmp dword [sym.imp.KERNEL32.dll_GetLastError], 0
mov ecx, dword [esp + 4]
push ecx
sete bl
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov al, bl
pop ebx
add esp, 0x18
ret
Function at 0x401b30
Capabilities:
Allocate or change rwx memory
Execute shellcode via indirect call

Disassembly:
mov eax, dword [esi + 8]
push ebx
push edi
mov edi, dword [sym.imp.KERNEL32.dll_VirtualAllocEx]
push 4
push 0x1000
push 0x3c
push 0
push eax
call edi
mov ecx, dword [esi + 8]
push 4
push 0x1000
push 0x40
push 0
push ecx
mov dword [esi + 0x10], eax
call edi
mov edx, dword [esi + 8]
push 4
push 0x1000
push 0x104
push 0
push edx
mov dword [esi + 0x14], eax
call edi
push 4
push 0x1000
push 0x10
mov dword [esi + 0x18], eax
mov eax, dword [esi + 8]
push 0
push eax
call edi
push 0x3c
lea edi, [esi + 0x20]
push 0
push edi
mov dword [esi + 0x1c], eax
call fcn.004046b0
mov edx, dword [esi + 0x10]
mov eax, dword [esi + 8]
mov ecx, dword [esi + 0x18]
mov ebx, dword [sym.imp.KERNEL32.dll_WriteProcessMemory]
add esp, 0xc
push 0
push 0x3c
push edi
push edx
push eax
mov dword [edi], 1
mov dword [esi + 0x34], ecx
mov dword [esi + 0x38], 0x104
call ebx
push 0x40
lea edi, [esi + 0x60]
push 0
push edi
call fcn.004046b0
mov eax, dword [esi + 0x18]
mov ecx, dword [esi + 0x14]
add esp, 0xc
push 0
cdq
push 0x40
push edi
mov dword [esi + 0x7c], edx
mov edx, dword [esi + 8]
push ecx
push edx
mov dword [edi], 1
mov dword [esi + 0x78], eax
mov dword [esi + 0x80], 0x104
call ebx
pop edi
mov eax, 1
pop ebx
ret