joyce8/EMBER2024-capa huggingface dataset:
Function at 0x647cfc10
Capabilities:
Execute shellcode via indirect call

Disassembly:
push ebx
sub esp, 0x18
mov eax, dword [0x647da38c]
mov dword [esp + 8], 0x1b
mov dword [esp + 4], 1
lea ebx, [esp + 0x24]
mov dword [esp], 0x647d70d4
add eax, 0x40
mov dword [esp + 0xc], eax
call fcn.647d0950
mov eax, dword [esp + 0x20]
mov dword [esp + 8], ebx
mov dword [esp + 4], eax
mov eax, dword [0x647da38c]
add eax, 0x40
mov dword [esp], eax
call fcn.647d08a8
call fcn.647d08c0
jmp fcn.647cfc70

Function at 0x647cfc70
Capabilities:
Allocate or change rwx memory

Disassembly:
push edi
push esi
push ebx
sub esp, 0x30
mov esi, dword [0x647d83b8]
test esi, esi
jle 0x647cfd63
mov edi, dword [0x647d83bc]
xor ebx, ebx
lea edx, [edi + 0xc]
nop
mov ecx, dword [edx]
cmp ecx, eax
ja 0x647cfca4
mov edi, dword [edx + 4]
add ecx, dword [edi + 8]
cmp eax, ecx
jb 0x647cfd5c
add ebx, 1
add edx, 0x14
cmp ebx, esi
jne 0x647cfc90
mov dword [esp], eax
mov esi, eax
call fcn.647d03b0
test eax, eax
mov edi, eax
je 0x647cfda0
mov esi, dword [0x647d83bc]
lea ebx, [ebx + ebx*4]
shl ebx, 2
add esi, ebx
mov dword [esi + 0x10], eax
mov dword [esi], 0
call fcn.647d04c0
add eax, dword [edi + 0xc]
mov dword [esi + 0xc], eax
lea eax, [esp + 0x14]
mov dword [esp + 8], 0x1c
mov dword [esp + 4], eax
mov eax, dword [0x647d83bc]
mov eax, dword [eax + ebx + 0xc]
mov dword [esp], eax
call dword [sym.imp.KERNEL32.dll_VirtualQuery]
sub esp, 0xc
test eax, eax
je 0x647cfd80
mov eax, dword [esp + 0x28]
lea edx, [eax - 0x40]
and edx, 0xffffffbf
je 0x647cfd55
sub eax, 4
and eax, 0xfffffffb
je 0x647cfd55
add ebx, dword [0x647d83bc]
mov eax, dword [esp + 0x14]
mov edx, dword [esp + 0x20]
mov dword [ebx + 4], eax
mov dword [ebx + 8], edx
mov dword [esp + 0xc], ebx
mov dword [esp + 8], 0x40
mov dword [esp + 4], edx
mov dword [esp], eax
call dword [sym.imp.KERNEL32.dll_VirtualProtect]
sub esp, 0x10
test eax, eax
je 0x647cfd6a
add dword [0x647d83b8], 1
add esp, 0x30
pop ebx
pop esi
pop edi
ret
xor ebx, ebx
jmp 0x647cfcae
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov dword [esp], str.__VirtualProtect_failed_with_code_0x_x
mov dword [esp + 4], eax
call fcn.647cfc10
mov eax, dword [0x647d83bc]
mov eax, dword [eax + ebx + 0xc]
mov dword [esp + 8], eax
mov eax, dword [edi + 8]
mov dword [esp], str.__VirtualQuery_failed_for__d_bytes_at_address__p
mov dword [esp + 4], eax
call fcn.647cfc10
mov dword [esp + 4], esi
mov dword [esp], str.Address__p_has_no_image_section
call fcn.647cfc10
Function at 0x647d0030
Capabilities:
Get thread local storage value

Disassembly:
push ebp
push edi
push esi
push ebx
sub esp, 0x1c
mov dword [esp], 0x647d83c8
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
mov ebx, dword [0x647d83c0]
sub esp, 4
mov ebp, dword [sym.imp.KERNEL32.dll_TlsGetValue]
mov edi, dword [sym.imp.KERNEL32.dll_GetLastError]
test ebx, ebx
je 0x647d0085
lea esi, [esi]
mov eax, dword [ebx]
mov dword [esp], eax
call ebp
sub esp, 4
mov esi, eax
call edi
test eax, eax
jne 0x647d007e
test esi, esi
je 0x647d007e
mov eax, dword [ebx + 4]
mov dword [esp], esi
call eax
mov ebx, dword [ebx + 8]
test ebx, ebx
jne 0x647d0060
mov dword [esp], 0x647d83c8
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
sub esp, 4
add esp, 0x1c
pop ebx
pop esi
pop edi
pop ebp
ret
Function at 0x406785
Capabilities:
Parse pe header

Disassembly:
push 0
call dword [0x41e0dc]
test eax, eax
je 0x4067c4
mov ecx, 0x5a4d
cmp word [eax], cx
jne 0x4067c4
mov ecx, dword [eax + 0x3c]
add ecx, eax
cmp dword [ecx], 0x4550
jne 0x4067c4
mov eax, 0x10b
cmp word [ecx + 0x18], ax
jne 0x4067c4
cmp dword [ecx + 0x74], 0xe
jbe 0x4067c4
cmp dword [ecx + 0xe8], 0
setne al
ret
xor al, al
ret

Function at 0x412a22
Capabilities:
Read file on windows

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

Function at 0x41d130
Capabilities:
Parse pe header

Disassembly:
push ebp
mov ebp, esp
mov eax, dword [ebp + 8]
mov ecx, 0x5a4d
cmp word [eax], cx
jne 0x41d15d
mov ecx, dword [eax + 0x3c]
add ecx, eax
cmp dword [ecx], 0x4550
jne 0x41d15d
mov edx, 0x10b
xor eax, eax
cmp word [ecx + 0x18], dx
sete al
pop ebp
ret
xor eax, eax
pop ebp
ret
Function at 0x401e22
Capabilities:
Encode data using xor
Hash data with crc32

Disassembly:
push esi
xor esi, esi
cmp dword [0x40953c], esi
push edi
jne 0x401e5c
mov ecx, 0x409538
push 8
mov eax, esi
pop edi
mov edx, eax
and dl, 1
neg dl
sbb edx, edx
and edx, 0xedb88320
shr eax, 1
xor eax, edx
dec edi
jne 0x401e38
mov dword [ecx], eax
add ecx, 4
inc esi
cmp ecx, 0x409938
jl 0x401e33
mov ecx, dword [esp + 0x14]
mov eax, dword [esp + 0xc]
mov edx, ecx
dec ecx
test edx, edx
not eax
jbe 0x401e91
lea edx, [ecx + 1]
mov ecx, dword [esp + 0x10]
movzx edi, byte [ecx]
mov esi, eax
and esi, 0xff
xor esi, edi
shr eax, 8
mov esi, dword [esi*4 + 0x409538]
xor eax, esi
inc ecx
dec edx
jne 0x401e74
pop edi
pop esi
not eax
ret 0xc
Function at 0x403826
Capabilities:
Delete registry key
Query or enumerate registry key

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x10c
push ebx
push esi
lea eax, [ebp - 4]
push edi
push eax
xor ebx, ebx
push 8
push ebx
push dword [ebp + 0xc]
push dword [ebp + 8]
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExA]
cmp eax, ebx
jne 0x4038b2
mov esi, dword [sym.imp.ADVAPI32.dll_RegEnumKeyA]
mov edi, 0x105
lea eax, [ebp - 0x10c]
push edi
push eax
push ebx
push dword [ebp - 4]
call esi
test eax, eax
jne 0x40389d
cmp dword [ebp + 0x10], ebx
jne 0x40388f
lea eax, [ebp - 0x10c]
push ebx
push eax
push dword [ebp - 4]
call fcn.00403826
test eax, eax
jne 0x40389d
lea eax, [ebp - 0x10c]
push edi
push eax
push ebx
push dword [ebp - 4]
jmp 0x403862
push dword [ebp - 4]
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
push 1
pop eax
jmp 0x4038b2
push dword [ebp - 4]
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
push dword [ebp + 0xc]
push dword [ebp + 8]
call dword [sym.imp.ADVAPI32.dll_RegDeleteKeyA]
pop edi
pop esi
pop ebx
leave
ret 0xc

Function at 0x403954
Capabilities:
Get common file path

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x120
push esi
push edi
lea eax, [ebp - 0x1c]
push 0x1c
push eax
call fcn.00403dc9
test eax, eax
je 0x403a17
lea eax, [ebp - 0x1c]
push eax
call fcn.0040391a
test eax, eax
je 0x403a17
push dword [ebp - 8]
call fcn.00406477
mov esi, eax
lea eax, [ebp - 0x120]
xor edi, edi
push eax
push edi
push 0x40909c
push 0x79fb00
mov byte [0x40b318], 0xb
call dword [sym.imp.KERNEL32.dll_GetTempFileNameA]
push edi
push 0x4000100
push 2
push edi
push edi
lea eax, [ebp - 0x120]
push 0xc0000000
push eax
call dword [sym.imp.KERNEL32.dll_CreateFileA]
cmp eax, 0xffffffff
mov dword [0x4090a4], eax
jne 0x4039db
mov eax, str.Error_writing_temp_file
jmp 0x403a1c
push 1
push edi
call fcn.00403dfb
mov ecx, dword [ebp - 0x1c]
push dword [ebp - 8]
and ecx, 1
mov dword [0x795bd4], eax
shl ecx, 2
sub eax, ecx
mov ecx, dword [ebp - 4]
push esi
push edi
lea eax, [eax + ecx - 0x1c]
push 0xffffffffffffffff
mov dword [0x795bd0], eax
call fcn.00403aa1
cmp eax, dword [ebp - 8]
je 0x403a20
push esi
call dword [sym.imp.KERNEL32.dll_GlobalFree]
mov eax, str.Installer_corrupted_or_incomplete._r_n_r_nThis_could_be_the_result_of_a_failed_download_or_corruption_from_a_virus._r_n_r_nIf_desperate__try_the__NCRC_command_line_switch__NOT_recommended_
pop edi
pop esi
leave
ret
mov eax, dword [0x795bcc]
mov dword [0x79ff20], esi
test byte [ebp - 0x1c], 2
mov dword [0x795bd8], eax
je 0x403a41
inc dword [0x79ff2c]
lea ecx, [esi + 0x4c]
jmp 0x403a58
lea eax, [esi + 0x94]
mov dword [0x79ff3c], eax
mov ecx, dword [esi + 0x84]
lea ecx, [ecx + ecx*2]
lea ecx, [eax + ecx*8]
mov dword [0x79ff04], ecx
mov eax, dword [esi + 0x10]
imul eax, eax, 0x1c
add eax, ecx
mov dword [0x79ff1c], eax
mov ecx, dword [esi + 8]
imul ecx, ecx, 0x1c
add ecx, eax
xor eax, eax
mov dword [0x7a0770], ecx
jmp 0x403a1c
Function at 0x403aa1
Capabilities:
Read file on windows
Write file on windows

Disassembly:
push ebp
mov ebp, esp
push ecx
push ecx
mov eax, dword [ebp + 8]
push ebx
push esi
push edi
xor edi, edi
cmp eax, edi
jl 0x403ace
mov ecx, dword [0x795bd8]
push edi
add eax, ecx
push edi
push eax
mov dword [0x795bcc], eax
push dword [0x4090a4]
call dword [sym.imp.KERNEL32.dll_SetFilePointer]
push 4
pop esi
push esi
call fcn.00403bcc
cmp eax, edi
jl 0x403bc5
lea eax, [ebp - 4]
mov ebx, dword [sym.imp.KERNEL32.dll_ReadFile]
push edi
push eax
lea eax, [ebp + 8]
push esi
push eax
push dword [0x4090a4]
call ebx
test eax, eax
je 0x403bc2
cmp dword [ebp - 4], esi
jne 0x403bc2
push dword [ebp + 8]
add dword [0x795bcc], esi
call fcn.00403bcc
cmp eax, edi
mov dword [ebp - 8], eax
jl 0x403bc5
cmp dword [ebp + 0x10], edi
jne 0x403b91
cmp dword [ebp + 8], edi
jle 0x403bbd
mov esi, 0x791bcc
mov edi, 0x4000
cmp dword [ebp + 8], edi
jge 0x403b41
mov edi, dword [ebp + 8]
lea eax, [ebp - 4]
push 0
push eax
push edi
push esi
push dword [0x4090a4]
call ebx
test eax, eax
je 0x403bc2
cmp edi, dword [ebp - 4]
jne 0x403bc2
lea eax, [ebp + 0x14]
push 0
push eax
push dword [ebp - 4]
push esi
push dword [ebp + 0xc]
call dword [sym.imp.KERNEL32.dll_WriteFile]
test eax, eax
je 0x403b8d
cmp dword [ebp + 0x14], edi
jne 0x403b8d
mov eax, dword [ebp - 4]
add dword [ebp - 8], eax
sub dword [ebp + 8], eax
add dword [0x795bcc], eax
cmp dword [ebp + 8], 0
jg 0x403b34
jmp 0x403bbd
push 0xfffffffffffffffe
jmp 0x403bc4
mov eax, dword [ebp + 8]
cmp eax, dword [ebp + 0x14]
jl 0x403b9c
mov eax, dword [ebp + 0x14]
lea ecx, [ebp - 4]
push edi
push ecx
push eax
push dword [ebp + 0x10]
push dword [0x4090a4]
call ebx
test eax, eax
je 0x403bc2
mov eax, dword [ebp - 4]
add dword [0x795bcc], eax
mov dword [ebp - 8], eax
mov eax, dword [ebp - 8]
jmp 0x403bc5
push 0xfffffffffffffffd
pop eax
pop edi
pop esi
pop ebx
leave
ret 0x10
Function at 0x403bcc
Capabilities:
Check for time delay via gettickcount
Write file on windows

Disassembly:
sub esp, 0x10
push ebx
push ebp
push esi
xor ebx, ebx
push edi
mov dword [esp + 0x10], ebx
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov esi, dword [0x795bcc]
add eax, 0x1f4
sub esi, dword [0x40b304]
mov dword [esp + 0x18], eax
add esi, dword [esp + 0x24]
cmp esi, ebx
jle 0x403db8
push ebx
push dword [0x795bd4]
call fcn.00403dfb
push ebx
push ebx
push dword [0x40b304]
push dword [0x4090a4]
call dword [sym.imp.KERNEL32.dll_SetFilePointer]
mov ebp, dword [sym.imp.USER32.dll_PeekMessageA]
mov dword [0x7a076c], esi
mov dword [0x7a0760], ebx
mov edi, 0x40b2e8
mov eax, dword [0x795bd0]
mov esi, 0x4000
sub eax, dword [0x795bd4]
cmp eax, esi
jle 0x403c51
mov dword [esp + 0x14], esi
jmp 0x403c57
mov dword [esp + 0x14], eax
mov esi, eax
push esi
push 0x791bcc
call fcn.00403dc9
test eax, eax
je 0x403d90
add dword [0x795bd4], esi
mov dword [0x40b308], 0x791bcc
mov dword [0x40b30c], esi
mov eax, dword [0x79ff20]
cmp eax, ebx
je 0x403d01
cmp byte [eax + 0x42], bl
jne 0x403d01
cmp dword [esp + 0x10], ebx
je 0x403cc3
mov eax, dword [0x7a076c]
sub eax, dword [0x795bcc]
sub eax, dword [esp + 0x24]
add eax, dword [0x40b304]
mov dword [0x7a0760], eax
push 1
push ebx
push ebx
push ebx
push edi
call ebp
test eax, eax
je 0x403d01
push edi
call dword [sym.imp.USER32.dll_DispatchMessageA]
jmp 0x403cae
push 4
push dword [0x7a0768]
call dword [sym.imp.USER32.dll_GetWindowLongA]
cmp eax, 0x404788
je 0x403d01
call dword [sym.imp.KERNEL32.dll_GetTickCount]
cmp eax, dword [esp + 0x18]
jbe 0x403d01
push str.unpacking_data:__d__
push 0x403e14
push ebx
push 0x6f
push dword [0x798efc]
call dword [sym.imp.USER32.dll_CreateDialogParamA]
mov dword [esp + 0x10], eax
push 0x40b308
mov dword [0x40b310], 0x789bcc
mov dword [0x40b314], 0x8000
call section..text
test eax, eax
jl 0x403dc4
mov esi, dword [0x40b310]
mov eax, 0x789bcc
sub esi, eax
je 0x403d68
lea ecx, [esp + 0x1c]
push ebx
push ecx
push esi
push eax
push dword [0x4090a4]
call dword [sym.imp.KERNEL32.dll_WriteFile]
test eax, eax
je 0x403d95
cmp esi, dword [esp + 0x1c]
jne 0x403d95
add dword [0x40b304], esi
cmp dword [0x40b30c], ebx
jne 0x403c80
jmp 0x403d76
cmp dword [0x40b30c], ebx
jne 0x403dc4
cmp dword [esp + 0x14], ebx
je 0x403dc4
mov eax, dword [0x795bcc]
mov ecx, eax
sub ecx, dword [0x40b304]
add ecx, dword [esp + 0x24]
test ecx, ecx
jle 0x403d99
jmp 0x403c37
or eax, 0xffffffff
jmp 0x403dba
push 0xfffffffffffffffe
jmp 0x403dc6
push ebx
push ebx
push eax
push dword [0x4090a4]
call dword [sym.imp.KERNEL32.dll_SetFilePointer]
cmp dword [esp + 0x10], ebx
je 0x403db8
push dword [esp + 0x10]
call dword [sym.imp.USER32.dll_DestroyWindow]
xor eax, eax
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x10
ret 4
push 0xfffffffffffffffd
pop eax
jmp 0x403dba
Function at 0x4063d6
Capabilities:
Check if file exists
Create process on windows
Get file attributes

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x54
push esi
push edi
xor esi, esi
xor eax, eax
lea edi, [ebp - 0xc]
mov dword [ebp - 0x10], esi
stosd dword es:[edi], eax
stosd dword es:[edi], eax
push 0x10
stosd dword es:[edi], eax
pop ecx
xor eax, eax
push dword [ebp + 0xc]
lea edi, [ebp - 0x50]
rep stosd dword es:[edi], eax
mov dword [ebp - 0x54], 0x44
call dword [sym.imp.KERNEL32.dll_GetFileAttributesA]
cmp eax, 0xffffffff
je 0x40640e
test al, 0x10
jne 0x406411
mov dword [ebp + 0xc], esi
lea eax, [ebp - 0x10]
push eax
lea eax, [ebp - 0x54]
push eax
push dword [ebp + 0xc]
push esi
push esi
push esi
push esi
push esi
push dword [ebp + 8]
push esi
call dword [sym.imp.KERNEL32.dll_CreateProcessA]
test eax, eax
je 0x406440
cmp dword [ebp - 0xc], esi
je 0x40643d
push dword [ebp - 0xc]
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov eax, dword [ebp - 0x10]
pop edi
pop esi
leave
ret 8

Function at 0x406486
Capabilities:
Delete directory
Delete file

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x20
push esi
mov esi, dword [ebp + 8]
push esi
call fcn.0040658f
test eax, eax
je 0x4064d7
cmp dword [ebp + 0xc], 0
je 0x4064d0
and dword [ebp - 0x20], 0
push esi
mov dword [ebp - 0x1c], 3
call fcn.004069e6
and byte [eax + esi + 1], 0
and dword [ebp - 0x14], 0
lea eax, [ebp - 0x20]
mov dword [ebp - 0x18], esi
push eax
mov dword [ebp - 0x10], 0x414
call dword [sym.imp.SHELL32.dll_SHFileOperationA]
jmp 0x4064d7
push esi
call dword [sym.imp.KERNEL32.dll_RemoveDirectoryA]
push esi
push 0xffffffffffffffef
call fcn.00405e24
pop esi
leave
ret 8
Function at 0x4066b1
Capabilities:
Get common file path
Get file size

Disassembly:
sub esp, 0xc
and dword [esp], 0
push ebx
push ebp
push esi
push edi
push str.kernel32.dll
call dword [sym.imp.KERNEL32.dll_LoadLibraryA]
mov esi, eax
mov edi, dword [esp + 0x24]
test esi, esi
je 0x406701
push str.MoveFileExA
push esi
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
test eax, eax
je 0x4066ef
push 5
push edi
push dword [esp + 0x28]
call eax
mov dword [esp + 0x10], eax
push esi
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
cmp dword [esp + 0x10], 0
jne 0x40689c
mov ebx, dword [sym.imp.KERNEL32.dll_GetShortPathNameA]
mov esi, 0x400
test edi, edi
mov ebp, 0x798afc
je 0x40672d
push 1
push 0
push edi
call fcn.00406695
push eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
push esi
push ebp
push edi
call ebx
jmp 0x406737
mov eax, dword [0x407298]
mov dword [0x798afc], eax
push esi
mov esi, 0x7986fc
push esi
push dword [esp + 0x28]
call ebx
push esi
push ebp
push str._s_s_r_n
push 0x7982fc
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0x10
mov ebx, eax
mov dword [esp + 0x20], ebx
push 0x3f0
push esi
call dword [sym.imp.KERNEL32.dll_GetWindowsDirectoryA]
push str.wininit.ini
push esi
call dword [sym.imp.KERNEL32.dll_lstrcatA]
xor eax, eax
push eax
push 0x8000080
push 4
push eax
push eax
push 0xc0000000
push esi
call dword [sym.imp.KERNEL32.dll_CreateFileA]
mov edi, eax
cmp edi, 0xffffffff
mov dword [esp + 0x14], edi
je 0x40689c
xor esi, esi
push esi
push edi
call dword [sym.imp.KERNEL32.dll_GetFileSize]
mov ebp, eax
push esi
lea eax, [ebx + ebp + 0xa]
push eax
push esi
push 4
push esi
push edi
call dword [sym.imp.KERNEL32.dll_CreateFileMappingA]
cmp eax, esi
mov dword [esp + 0x18], eax
je 0x406884
push esi
push esi
push esi
push 2
push eax
call dword [sym.imp.KERNEL32.dll_MapViewOfFile]
mov ebx, eax
cmp ebx, esi
je 0x40687a
push str._Rename__r_n
push ebx
call fcn.0040661b
cmp eax, esi
jne 0x406801
lea eax, [ebx + ebp]
push str._Rename__r_n
push eax
call fcn.004069d5
add ebp, 0xa
mov eax, ebp
jmp 0x406856
add eax, 0xa
push 0x409350
push eax
call fcn.0040661b
mov esi, eax
test esi, esi
je 0x406852
mov edi, ebx
sub edi, esi
add edi, ebp
push edi
call fcn.00406477
push edi
push esi
push eax
mov dword [esp + 0x30], eax
call fcn.0040666b
push edi
mov eax, dword [esp + 0x24]
push dword [esp + 0x28]
add eax, esi
push eax
call fcn.0040666b
push dword [esp + 0x24]
call dword [sym.imp.KERNEL32.dll_GlobalFree]
sub esi, ebx
mov edi, dword [esp + 0x14]
mov eax, esi
jmp 0x406854
mov eax, ebp
xor esi, esi
push dword [esp + 0x20]
add eax, ebx
push 0x7982fc
push eax
call fcn.0040666b
push ebx
add ebp, dword [esp + 0x24]
call dword [sym.imp.KERNEL32.dll_UnmapViewOfFile]
mov dword [esp + 0x10], 1
push dword [esp + 0x18]
call dword [sym.imp.KERNEL32.dll_CloseHandle]
push esi
push esi
push ebp
push edi
call dword [sym.imp.KERNEL32.dll_SetFilePointer]
push edi
call dword [sym.imp.KERNEL32.dll_SetEndOfFile]
push edi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov eax, dword [esp + 0x10]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0xc
ret 8
Function at 0x4068aa
Capabilities:
Query or enumerate registry value

Disassembly:
push ebp
mov ebp, esp
push ebx
lea eax, [ebp + 0x14]
push esi
mov esi, dword [ebp + 0x14]
xor ebx, ebx
push eax
push 0x20019
push ebx
push dword [ebp + 0xc]
mov byte [esi], bl
push dword [ebp + 8]
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExA]
test eax, eax
jne 0x406908
lea eax, [ebp + 0xc]
mov dword [ebp + 0xc], 0x400
push eax
lea eax, [ebp + 8]
push esi
push eax
push ebx
push dword [ebp + 0x10]
push dword [ebp + 0x14]
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
test eax, eax
jne 0x4068f7
cmp dword [ebp + 8], 1
je 0x4068f9
mov byte [esi], bl
push dword [ebp + 0x14]
mov byte [esi + 0x3ff], bl
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
pop esi
pop ebx
pop ebp
ret 0x10

Function at 0x4069f3
Capabilities:
Check if file exists
Get common file path
Get file attributes
Persist via run registry key

Disassembly:
mov edx, dword [esp + 4]
push ebx
push ebp
push esi
push edi
mov edi, 0x79f300
mov esi, edi
mov al, byte [edx]
test al, al
je 0x406b89
mov ebx, esi
mov ecx, 0x400
sub ebx, edi
cmp ebx, ecx
jge 0x406b89
movzx ebx, al
inc edx
cmp ebx, 0xdb
mov dword [esp + 0x14], edx
jge 0x406a32
mov byte [esi], bl
inc esi
jmp 0x406a02
cmp ebx, 0xff
jne 0x406a42
mov al, byte [edx]
mov byte [esi], al
inc esi
inc edx
jmp 0x406a02
lea eax, [ebx - 0xdb]
cmp eax, 0x23
ja case.default.0x406a58
movzx eax, byte [eax + 0x406bb5]
jmp dword [eax*4 + 0x406b95]
push dword [0x7a0768]
push esi
call fcn.00406930
jmp case.default.0x406a58
lea eax, [ebx - 0xdc]
shl eax, 0xa
add eax, 0x798f00
push eax
jmp 0x406b5f
and byte [0x4092dd], 0
push esi
push str.ProgramFilesDir
push str.SoftwareMicrosoftWindowsCurrentVersionExplorerShell_Folders
push 0x80000002
call fcn.004068aa
cmp byte [esi], 0
jne case.default.0x406a58
push str.C:Program_Files
jmp 0x406b5f
mov ebp, dword [ebx*4 + 0x408f20]
push ebp
push 0x409313
call fcn.004069d5
xor eax, eax
cmp ebx, 0xfa
setne al
and eax, dword [0x7a0784]
mov edi, eax
test edi, edi
mov byte [0x4092dd], 0x5c
mov eax, str.Common
jne 0x406aea
mov eax, ebp
push esi
push eax
xor eax, eax
push str.SoftwareMicrosoftWindowsCurrentVersionExplorerShell_Folders
test edi, edi
setne al
add eax, 0x80000001
push eax
call fcn.004068aa
cmp byte [esi], 0
jne 0x406b1b
test edi, edi
je 0x406b10
xor edi, edi
jmp 0x406ad8
push 0x79fb00
push esi
call fcn.004069d5
cmp ebx, 0xfa
jne case.default.0x406a58
push str.MicrosoftInternet_ExplorerQuick_Launch
push esi
call dword [sym.imp.KERNEL32.dll_lstrcatA]
push esi
call dword [sym.imp.KERNEL32.dll_GetFileAttributesA]
cmp eax, 0xffffffff
je case.0x406a58.251
test al, 0x10
jne 0x406b6d
push 0x79fb00
jmp 0x406b5f
push ecx
push esi
call dword [sym.imp.KERNEL32.dll_GetWindowsDirectoryA]
jmp case.default.0x406a58
push ecx
push esi
call dword [sym.imp.KERNEL32.dll_GetSystemDirectoryA]
jmp case.default.0x406a58
push 0x40aee0
push esi
call fcn.004069d5
cmp ebx, 0xf0
jle 0x406b73
push esi
call fcn.00406bd9
push esi
call fcn.004069e6
add esi, eax
mov edi, 0x79f300
mov edx, dword [esp + 0x14]
jmp 0x406a02
and byte [esi], 0
mov eax, edi
pop edi
pop esi
pop ebp
pop ebx
ret 4
Function at 0x56b5a5
Capabilities:
Encode data using xor

Disassembly:
mov eax, 0x56b2fc
call fcn.0056b5cf
mov edx, 0x7f9abd99
dec edx
xor dword [ebx], eax
push 0xd11a3402
pop edi
mov edx, edi
inc ebx
cmp ebx, esi
jne fcn.0056b5a5
ret
Function at 0x410c70
Capabilities:
Acquire debug privileges

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x18
push 0x4025e6
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
mov eax, 0x70
call sub.MSVBVM60.DLL___vbaChkstk
push ebx
push esi
push edi
mov dword [ebp - 0x18], esp
mov dword [ebp - 0x14], 0x401f20
mov dword [ebp - 0x10], 0
mov dword [ebp - 0xc], 0
mov dword [ebp - 4], 1
mov dword [ebp - 4], 2
push 0xffffffffffffffff
call dword [sym.imp.MSVBVM60.DLL___vbaOnError]
mov dword [ebp - 4], 3
call fcn.00404fd8
mov dword [ebp - 0x6c], eax
call dword [sym.imp.MSVBVM60.DLL___vbaSetSystemError]
lea eax, [ebp - 0x64]
push eax
push 0x28
mov ecx, dword [ebp - 0x6c]
push ecx
call fcn.00405038
mov dword [ebp - 0x70], eax
call dword [sym.imp.MSVBVM60.DLL___vbaSetSystemError]
xor edx, edx
cmp dword [ebp - 0x70], 0
setne dl
neg edx
movsx eax, dx
test eax, eax
je 0x410e25
mov dword [ebp - 4], 4
xor ecx, ecx
test ecx, ecx
je 0x410d46
mov dword [ebp - 4], 6
mov dword [ebp - 0x6c], 0x1c
lea edx, [ebp - 0x6c]
push edx
lea eax, [ebp - 0x3c]
push eax
push 0x1c
lea ecx, [ebp - 0x60]
push ecx
push 0
mov edx, dword [ebp - 0x64]
push edx
call fcn.00405088
call dword [sym.imp.MSVBVM60.DLL___vbaSetSystemError]
jmp 0x410e25
mov dword [ebp - 4], 9
lea eax, [ebp - 0x44]
push eax
push 0x404ae4
lea ecx, [ebp - 0x68]
push ecx
call dword [sym.imp.MSVBVM60.DLL___vbaStrToAnsi]
push eax
push 0
call fcn.004050e8
mov dword [ebp - 0x6c], eax
call dword [sym.imp.MSVBVM60.DLL___vbaSetSystemError]
xor edx, edx
cmp dword [ebp - 0x6c], 0
setne dl
neg edx
mov word [ebp - 0x74], dx
lea ecx, [ebp - 0x68]
call dword [sym.imp.MSVBVM60.DLL___vbaFreeStr]
movsx eax, word [ebp - 0x74]
test eax, eax
je 0x410e25
mov dword [ebp - 4], 0xa
mov dword [ebp - 0x60], 1
mov dword [ebp - 4], 0xb
mov dword [ebp - 0x74], 0
cmp dword [ebp - 0x74], 2
jae 0x410dc3
mov dword [ebp - 0x8c], 0
jmp 0x410dcf
call dword [sym.imp.MSVBVM60.DLL___vbaGenerateBoundsError]
mov dword [ebp - 0x8c], eax
lea ecx, [ebp - 0x44]
push ecx
mov edx, dword [ebp - 0x74]
imul edx, edx, 0xc
lea eax, [ebp + edx - 0x5c]
push eax
push 8
call dword [sym.imp.MSVBVM60.DLL___vbaCopyBytes]
mov dword [ebp - 4], 0xc
mov dword [ebp - 0x74], 0
cmp dword [ebp - 0x74], 2
jae 0x410e06
mov dword [ebp - 0x90], 0
jmp 0x410e12
call dword [sym.imp.MSVBVM60.DLL___vbaGenerateBoundsError]
mov dword [ebp - 0x90], eax
mov ecx, dword [ebp - 0x74]
imul ecx, ecx, 0xc
mov dword [ebp + ecx - 0x54], 2
jmp 0x410d14
mov dword [ebp - 4], 0x11
mov edx, dword [ebp - 0x64]
push edx
call fcn.00404e50
call dword [sym.imp.MSVBVM60.DLL___vbaSetSystemError]
push 0x410e4d
jmp 0x410e4c
ret

Function at 0x43b64f
Capabilities:
Encode data using xor

Disassembly:
push 0x43b3c1
pop esi
sub ecx, 0xc9e429ab
add edi, ecx
call fcn.0043b680
dec ecx
xor dword [eax], esi
mov ecx, 0xda4ee62
add edi, 0xeccebdd0
inc ecx
add eax, 1
dec edi
cmp eax, ebx
jne fcn.0043b64f
add ecx, edi
ret