joyce8/EMBER2024-capa huggingface dataset:
Function at 0x40d3f3
Capabilities:
Compare security identifiers

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
push ecx
push ebx
push esi
push edi
mov edi, dword [ebp + 0x10]
mov ebx, ecx
test edi, edi
je 0x40d413
call fcn.0040d2eb
mov ecx, edi
or ecx, 1
cmp eax, ecx
jne 0x40d447
and dword [ebp - 4], 0
lea edx, [ebp - 4]
mov ecx, ebx
call fcn.0040d527
test eax, eax
js 0x40d447
push dword [ebp - 4]
push dword [ebp + 8]
call dword [sym.imp.ADVAPI32.dll_EqualSid]
push dword [ebp - 4]
mov esi, eax
call dword [sym.imp.KERNEL32.dll_LocalFree]
test esi, esi
je 0x40d447
xor esi, esi
jmp 0x40d517
mov ecx, dword [ebp + 8]
lea eax, [ebp - 4]
and dword [ebp - 4], 0
mov edx, edi
push eax
call fcn.0040d227
mov esi, eax
test esi, esi
js 0x40d517
mov eax, dword [ebp - 4]
movzx eax, word [eax + 2]
add eax, 0x14
push eax
push 0x40
call dword [sym.imp.KERNEL32.dll_LocalAlloc]
mov edi, eax
test edi, edi
je 0x40d509
push 1
push edi
call dword [sym.imp.ADVAPI32.dll_InitializeSecurityDescriptor]
test eax, eax
je 0x40d4eb
mov ecx, dword [ebp - 4]
lea esi, [edi + 0x14]
movzx eax, word [ecx + 2]
push eax
push ecx
push eax
push esi
call dword [sym.imp.msvcrt.dll_memcpy_s]
add esp, 0x10
push 0
push esi
push 1
push edi
call dword [sym.imp.ADVAPI32.dll_SetSecurityDescriptorSacl]
test eax, eax
je 0x40d4eb
push edi
push 0x10
push ebx
call dword [sym.imp.ADVAPI32.dll_SetKernelObjectSecurity]
test eax, eax
je 0x40d4c6
xor esi, esi
jmp 0x40d4df
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov esi, eax
test esi, esi
jle 0x40d4dd
movzx esi, si
or esi, 0x80070000
test esi, esi
js 0x40d500
mov eax, dword [ebp + 0xc]
test eax, eax
je 0x40d500
mov byte [eax], 1
jmp 0x40d500
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov esi, eax
test esi, esi
jle 0x40d500
movzx esi, si
or esi, 0x80070000
push edi
call dword [sym.imp.KERNEL32.dll_LocalFree]
jmp 0x40d50e
mov esi, 0x8007000e
push dword [ebp - 4]
call dword [sym.imp.KERNEL32.dll_LocalFree]
pop edi
mov eax, esi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0xc

Function at 0x40dc1c
Capabilities:
Query or enumerate registry value

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
push ecx
cmp dword [0x4247b4], 0
jne 0x40dc76
push esi
lea eax, [ebp - 4]
xor esi, esi
push eax
push 1
push esi
push 0x404550
push reloc.SHLWAPI.dll_ParseURLW
mov dword [ebp - 4], esi
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
test eax, eax
jne 0x40dc75
push esi
push esi
push esi
push esi
push 0x4045e4
push dword [ebp - 4]
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
push dword [ebp - 4]
xor ecx, ecx
test eax, eax
setne cl
inc ecx
mov dword [0x4247b4], ecx
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
pop esi
xor eax, eax
cmp dword [0x4247b4], 1
sete al
mov esp, ebp
pop ebp
ret
Function at 0x40dc8b
Capabilities:
Query or enumerate registry value

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
sub esp, 0xc
cmp dword [0x4247b0], 0
push esi
jne 0x40dd0d
call fcn.0040dc1c
test eax, eax
je 0x40dd03
lea eax, [ebp - 4]
xor esi, esi
push eax
push 1
push esi
push 0x404550
push reloc.SHLWAPI.dll_ParseURLW
mov dword [ebp - 4], esi
mov dword [ebp - 8], esi
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
test eax, eax
jne 0x40dd0d
lea eax, [ebp - 0xc]
mov dword [ebp - 0xc], 4
push eax
lea eax, [ebp - 8]
push eax
push esi
push esi
push 0x4045c8
push dword [ebp - 4]
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
test eax, eax
jne 0x40dcf8
cmp dword [ebp - 8], eax
sete al
inc eax
mov dword [0x4247b0], eax
push dword [ebp - 4]
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
jmp 0x40dd0d
mov dword [0x4247b0], 2
xor eax, eax
cmp dword [0x4247b0], 1
pop esi
sete al
mov esp, ebp
pop ebp
ret

Function at 0x40f14e
Capabilities:
Get common file path
Set file attributes

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
sub esp, 0x20c
mov eax, dword [0x424004]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
push esi
mov esi, ecx
mov bl, dl
mov eax, 0x80070057
push edi
mov edi, dword [ebp + 0xc]
test esi, esi
je 0x40f241
mov eax, dword [esi]
cmp eax, 6
jne 0x40f19c
cmp dword [ebp + 8], 0
je 0x40f19c
push dword [ebp + 8]
mov edx, 0x104
lea ecx, [ebp - 0x20c]
call fcn.00408345
jmp 0x40f1c5
cmp eax, 0xffffffff
jne 0x40f1ac
xor eax, eax
mov word [ebp - 0x20c], ax
jmp 0x40f1c9
lea ecx, [ebp - 0x20c]
or eax, 0x8000
push ecx
push 0
push 0
push eax
push 0
call dword [sym.imp.SHELL32.dll_SHGetFolderPathW]
test eax, eax
js 0x40f241
cmp dword [esi + 0xc], 0
je 0x40f1dd
push dword [esi + 0xc]
lea ecx, [ebp - 0x20c]
call fcn.0040eac0
test eax, eax
js 0x40f211
cmp dword [esi], 6
jne 0x40f1f3
call fcn.0040f551
test eax, eax
je 0x40f1f3
mov al, 1
jmp 0x40f1f5
xor al, al
test al, al
jne 0x40f20f
push edi
push dword [esi + 8]
mov dl, bl
lea ecx, [ebp - 0x20c]
push dword [esi + 4]
call fcn.0040efd6
jmp 0x40f211
xor eax, eax
cmp dword [esi + 0x10], 0xffffffff
je 0x40f241
push dword [esi + 0x10]
lea eax, [ebp - 0x20c]
push eax
call dword [sym.imp.KERNEL32.dll_SetFileAttributesW]
test eax, eax
je 0x40f22f
xor eax, eax
jmp 0x40f241
call dword [sym.imp.KERNEL32.dll_GetLastError]
test eax, eax
jle 0x40f241
movzx eax, ax
or eax, 0x80070000
mov ecx, dword [ebp - 4]
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.00422f70
mov esp, ebp
pop ebp
ret 8

Function at 0x40f551
Capabilities:
Get common file path

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
sub esp, 0x20c
mov eax, dword [0x424004]
xor eax, ebp
mov dword [ebp - 4], eax
mov ecx, dword [0x4247b8]
test ecx, ecx
jne 0x40f5aa
push 1
push 6
lea eax, [ebp - 0x20c]
push eax
push ecx
call dword [sym.imp.SHELL32.dll_SHGetSpecialFolderPathW]
test eax, eax
je 0x40f5a4
lea eax, [ebp - 0x20c]
push eax
call dword [sym.imp.SHLWAPI.dll_PathIsNetworkPathW]
mov ecx, eax
neg ecx
sbb ecx, ecx
add ecx, 2
mov dword [0x4247b8], ecx
jmp 0x40f5aa
mov ecx, dword [0x4247b8]
xor eax, eax
cmp ecx, 1
mov ecx, dword [ebp - 4]
sete al
xor ecx, ebp
call fcn.00422f70
mov esp, ebp
pop ebp
ret
Function at 0x410330
Capabilities:
Create new key via cryptacquirecontext

Disassembly:
mov edi, edi
push esi
push edi
push 4
mov edi, ecx
call dword [sym.imp.msvcrt.dll_void____cdecl_operator_new_unsigned_int_]
mov esi, eax
pop ecx
test esi, esi
je 0x41035c
and dword [esi], 0
push 0xf0000000
push 0x18
push 0
push 0
push esi
call dword [sym.imp.ADVAPI32.dll_CryptAcquireContextW]
jmp 0x41035e
xor esi, esi
mov dword [edi + 0x14], esi
test esi, esi
je 0x410392
push 4
call dword [sym.imp.msvcrt.dll_void____cdecl_operator_new_unsigned_int_]
pop ecx
mov ecx, eax
test ecx, ecx
je 0x41037b
mov eax, dword [edi + 0x14]
mov dword [ecx], eax
jmp 0x41037d
xor ecx, ecx
mov dword [edi + 0x10], ecx
neg ecx
sbb ecx, ecx
and ecx, 0x7ff8fff2
add ecx, 0x8007000e
jmp 0x410397
mov ecx, 0x8007000e
pop edi
mov eax, ecx
pop esi
ret

Function at 0x4108b4
Capabilities:
Query or enumerate registry value

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
sub esp, 0x210
mov eax, dword [0x424004]
xor eax, ebp
mov dword [ebp - 4], eax
push esi
push edi
lea eax, [ebp - 0x210]
mov dword [ebp - 0x210], 0x208
push eax
lea eax, [ebp - 0x20c]
mov edi, ecx
push eax
push 0
push 2
and dword [edi], 0
mov esi, 0x80004005
push 0x404a38
push 0x404a50
push SysReAllocStringLen
call dword [sym.imp.ADVAPI32.dll_RegGetValueW]
test eax, eax
jne 0x41092b
lea eax, [ebp - 0x20c]
push eax
call dword [sym.imp.OLEAUT32.dll_SysReAllocString]
mov esi, eax
mov dword [edi], esi
neg esi
sbb esi, esi
and esi, 0x7ff8fff2
add esi, 0x8007000e
mov ecx, dword [ebp - 4]
mov eax, esi
pop edi
xor ecx, ebp
pop esi
call fcn.00422f70
mov esp, ebp
pop ebp
ret
Function at 0x410c77
Capabilities:
Get system information on windows

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
sub esp, 0x2c
cmp byte [0x424844], 0
jne 0x410dbf
push esi
mov esi, 0x424894
push esi
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
cmp byte [0x424844], 0
jne 0x410db7
push ebx
lea eax, [ebp - 0x2c]
push eax
call dword [sym.imp.KERNEL32.dll_GetSystemInfo]
cmp word [ebp - 0x2c], 5
jne 0x410cd1
push 2
push 0x218
call dword [sym.imp.urlmon.dll_Ordinal_410]
and dword [0x4241bc], 0
jmp 0x410daf
mov ecx, 0x4241d8
call fcn.00416e27
test eax, eax
je 0x410d12
mov ecx, 0x4241e0
call fcn.00416e27
test eax, eax
jne 0x410d09
push 0x10
push 0x218
call dword [sym.imp.urlmon.dll_Ordinal_410]
mov dword [0x4241bc], 3
jmp 0x410daf
call fcn.00410c1a
test al, al
je 0x410d2e
push 0x20
push 0x218
call dword [sym.imp.urlmon.dll_Ordinal_410]
mov dword [0x4241bc], 2
jmp 0x410daf
call dword [sym.imp.KERNEL32.dll_GetSystemDefaultLangID]
movzx ecx, ax
mov eax, ecx
push 4
and eax, 0x3ff
pop edx
cmp ax, dx
jne 0x410d98
and ecx, 0xfc00
mov eax, 0x800
cmp cx, ax
jne 0x410d98
call fcn.00416e62
test al, al
je 0x410d98
lea eax, [ebp - 4]
xor ebx, ebx
push eax
lea eax, [ebp - 8]
mov dword [ebp - 4], ebx
push eax
push ebx
call dword [sym.imp.NETAPI32.dll_NetGetJoinInformation]
test eax, eax
jne 0x410ced
cmp dword [ebp - 4], 3
jne 0x410d83
mov bl, 1
push dword [ebp - 8]
call dword [sym.imp.NETAPI32.dll_NetApiBufferFree]
test bl, bl
je 0x410ced
push 4
jmp 0x410d9a
push 8
push 0x218
call dword [sym.imp.urlmon.dll_Ordinal_410]
mov dword [0x4241bc], 1
mov byte [0x424844], 1
pop ebx
push esi
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
pop esi
mov eax, dword [0x4241bc]
mov esp, ebp
pop ebp
ret
Function at 0x4143a9
Capabilities:
Query or enumerate registry value

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
sub esp, 0x228
mov eax, dword [0x424004]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
mov ebx, ecx
mov eax, edx
push esi
xor esi, esi
mov dword [ebp - 0x218], eax
push edi
mov dword [ebx], esi
lea ecx, [ebp - 0x220]
mov dword [eax], esi
mov dword [ebp - 0x220], esi
mov dword [ebp - 0x214], esi
call fcn.0040d70f
mov edi, eax
test edi, edi
jle 0x4143f9
movzx edi, di
or edi, 0x80070000
test edi, edi
js 0x41458d
lea eax, [ebp - 0x214]
push eax
push dword [ebp - 0x220]
call dword [sym.imp.ADVAPI32.dll_ConvertSidToStringSidW]
test eax, eax
mov eax, dword [ebp - 0x214]
je 0x41456f
test eax, eax
je 0x41456f
cmp word [eax], si
je 0x41456f
push eax
lea ecx, [ebp - 0x210]
call fcn.00410b6a
mov esi, dword [ebp - 0x210]
test esi, esi
je 0x414559
and dword [ebp - 0x21c], 0
lea eax, [ebp - 0x21c]
push eax
push 0x20119
push 0
push 0x404e40
push reloc.SHLWAPI.dll_ParseURLW
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
test eax, eax
jne 0x4144dc
lea eax, [ebp - 0x224]
mov dword [ebp - 0x224], 0x208
push eax
lea eax, [ebp - 0x20c]
push eax
push 0
push 2
push 0x404e80
push 0
push dword [ebp - 0x21c]
call dword [sym.imp.ADVAPI32.dll_RegGetValueW]
mov dword [ebp - 0x228], eax
test eax, eax
jne 0x4144c7
lea eax, [ebp - 0x20c]
push eax
lea ecx, [ebp - 0x210]
call fcn.00414ecd
mov esi, dword [ebp - 0x210]
mov edi, eax
push dword [ebp - 0x21c]
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
cmp dword [ebp - 0x228], 0
je 0x414501
push 0x404e98
lea ecx, [ebp - 0x210]
call fcn.00414ecd
push 1
push 0x212
mov edi, eax
call dword [sym.imp.urlmon.dll_Ordinal_414]
mov esi, dword [ebp - 0x210]
test edi, edi
js 0x41455e
push esi
call dword [sym.imp.OLEAUT32.dll_VariantInit]
mov ecx, dword [ebp - 0x218]
add eax, eax
push eax
mov dword [ecx], eax
call dword [sym.imp.msvcrt.dll_void____cdecl_operator_new___unsigned_int_]
mov dword [ebx], eax
pop ecx
test eax, eax
je 0x414559
mov ecx, dword [ebp - 0x218]
push dword [ecx]
push esi
push dword [ecx]
push eax
call dword [sym.imp.msvcrt.dll_memcpy_s]
add esp, 0x10
test eax, eax
je 0x41455e
push dword [ebx]
call dword [sym.imp.msvcrt.dll_void___cdecl_operator_delete___void__]
and dword [ebx], 0
mov edi, 0x80004005
pop ecx
mov ecx, dword [ebp - 0x218]
and dword [ecx], 0
jmp 0x41455e
mov edi, 0x8007000e
push esi
call dword [sym.imp.OLEAUT32.dll_SysStringLen]
mov eax, dword [ebp - 0x214]
xor esi, esi
jmp 0x414574
mov edi, 0x80004005
push eax
call dword [sym.imp.KERNEL32.dll_LocalFree]
push dword [ebp - 0x220]
mov dword [ebp - 0x214], esi
call dword [sym.imp.KERNEL32.dll_LocalFree]
mov ecx, dword [ebp - 4]
mov eax, edi
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.00422f70
mov esp, ebp
pop ebp
ret
Function at 0x415222
Capabilities:
Hash data via wincrypt
Initialize hashing via wincrypt

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
push ecx
push ecx
cmp dword [ecx], 0
push esi
mov esi, 0x80004005
je 0x4152cf
cmp dword [ebp + 8], 0
je 0x4152cf
cmp dword [ebp + 0x10], 0
je 0x4152cf
lea eax, [ebp - 4]
xor esi, esi
push eax
push esi
push esi
push 0x800c
push dword [ecx]
mov dword [ebp - 4], esi
call dword [sym.imp.ADVAPI32.dll_CryptCreateHash]
test eax, eax
je 0x4152ba
push esi
push dword [ebp + 0xc]
push dword [ebp + 8]
push dword [ebp - 4]
call dword [sym.imp.ADVAPI32.dll_CryptHashData]
test eax, eax
je 0x41529a
push esi
lea eax, [ebp - 8]
mov dword [ebp - 8], 0x20
push eax
push dword [ebp + 0x10]
push 2
push dword [ebp - 4]
call dword [sym.imp.ADVAPI32.dll_CryptGetHashParam]
test eax, eax
jne 0x4152af
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov esi, eax
test esi, esi
jle 0x4152af
movzx esi, si
or esi, 0x80070000
push dword [ebp - 4]
call dword [sym.imp.ADVAPI32.dll_CryptDestroyHash]
jmp 0x4152cf
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov esi, eax
test esi, esi
jle 0x4152cf
movzx esi, si
or esi, 0x80070000
mov eax, esi
pop esi
mov esp, ebp
pop ebp
ret 0xc

Function at 0x4152dd
Capabilities:
Initialize hashing via wincrypt

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
sub esp, 0xc
push ebx
push esi
push edi
mov edi, ecx
xor ebx, ebx
mov dword [ebp - 4], ebx
mov esi, 0x80004005
mov dword [ebp - 0xc], ebx
cmp dword [edi], ebx
je 0x4153ee
cmp dword [ebp + 8], ebx
je 0x4153ee
cmp dword [ebp + 0x10], ebx
je 0x4153ee
cmp dword [ebp + 0x18], ebx
je 0x4153ee
lea eax, [ebp - 4]
push eax
push ebx
push ebx
push 0x800c
push dword [edi]
call dword [sym.imp.ADVAPI32.dll_CryptCreateHash]
test eax, eax
je 0x4153d5
push ebx
push dword [ebp + 8]
push 2
push dword [ebp - 4]
call dword [sym.imp.ADVAPI32.dll_CryptSetHashParam]
test eax, eax
je 0x4153b5
lea eax, [ebp - 0xc]
mov dword [ebp - 8], ebx
push eax
lea eax, [ebp - 8]
mov ecx, edi
push eax
push dword [ebp + 0x14]
push dword [ebp + 0x10]
call fcn.004157a8
test eax, eax
js 0x4153a1
push ebx
push ebx
push dword [ebp - 8]
push dword [ebp + 0x1c]
push dword [ebp + 0x18]
push dword [ebp - 4]
call dword [sym.imp.ADVAPI32.dll_CryptVerifySignatureW]
test eax, eax
je 0x415381
mov esi, dword [ebp - 0xc]
jmp 0x415396
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov esi, eax
test esi, esi
jle 0x415396
movzx esi, si
or esi, 0x80070000
push dword [ebp - 8]
call dword [sym.imp.ADVAPI32.dll_CryptDestroyKey]
jmp 0x4153ca
push 1
push 0x1e1
mov esi, 0x80092004
call dword [sym.imp.urlmon.dll_Ordinal_414]
jmp 0x4153ca
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov esi, eax
test esi, esi
jle 0x4153ca
movzx esi, si
or esi, 0x80070000
push dword [ebp - 4]
call dword [sym.imp.ADVAPI32.dll_CryptDestroyHash]
jmp 0x4153ea
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov esi, eax
test esi, esi
jle 0x4153ec
movzx esi, si
or esi, 0x80070000
test esi, esi
jns 0x4153fb
push 1
push 0x20e
call dword [sym.imp.urlmon.dll_Ordinal_414]
pop edi
mov eax, esi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x18
Function at 0x419477
Capabilities:
Decode data using base64 via winapi

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
sub esp, 0x14
push edi
mov edi, ecx
mov dword [ebp - 0x10], edx
test edi, edi
je 0x4195a2
test edx, edx
je 0x4195a2
mov eax, dword [ebp + 8]
test eax, eax
je 0x4195a2
push ebx
push esi
xor esi, esi
push 0x2000
mov dword [edx], esi
push edi
mov dword [eax], esi
call dword [sym.imp.msvcrt.dll_strnlen]
mov ebx, eax
pop ecx
pop ecx
mov dword [ebp - 0xc], ebx
lea eax, [ebx - 1]
cmp eax, 0x1ffe
ja 0x419597
mov eax, esi
mov dword [ebp - 8], eax
test ebx, ebx
je 0x419501
mov al, byte [eax + edi]
mov byte [ebp - 1], al
movzx eax, al
push eax
call dword [sym.imp.msvcrt.dll_isalnum]
pop ecx
test eax, eax
jne 0x4194f6
mov al, byte [ebp - 1]
cmp al, 0x2b
je 0x4194f6
cmp al, 0x2f
je 0x4194f6
cmp al, 0x3d
jne 0x419563
mov eax, dword [ebp - 8]
inc eax
mov dword [ebp - 8], eax
cmp eax, ebx
jb 0x4194d2
push esi
push esi
lea eax, [ebp - 8]
mov dword [ebp - 8], esi
push eax
push esi
push 1
push ebx
push edi
call dword [sym.imp.CRYPT32.dll_CryptStringToBinaryA]
test eax, eax
je 0x419580
mov eax, dword [ebp - 8]
push eax
mov dword [ebp - 0x14], eax
call dword [sym.imp.msvcrt.dll_void____cdecl_operator_new___unsigned_int_]
mov ebx, eax
pop ecx
test ebx, ebx
je 0x419579
push esi
push esi
lea eax, [ebp - 8]
push eax
push ebx
push 1
push dword [ebp - 0xc]
push edi
call dword [sym.imp.CRYPT32.dll_CryptStringToBinaryA]
test eax, eax
jne 0x41956a
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov esi, eax
test esi, esi
jle 0x419559
movzx esi, si
or esi, 0x80070000
push ebx
call dword [sym.imp.msvcrt.dll_void___cdecl_operator_delete___void__]
pop ecx
jmp 0x41959c
mov esi, 0x8007000d
jmp 0x41959c
mov eax, dword [ebp - 0x10]
mov ecx, dword [ebp - 0x14]
mov dword [eax], ebx
mov eax, dword [ebp + 8]
mov dword [eax], ecx
jmp 0x41959c
mov esi, 0x8007000e
jmp 0x41959c
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov esi, eax
test esi, esi
jle 0x41959c
movzx esi, si
or esi, 0x80070000
jmp 0x41959c
mov esi, 0x80070057
mov eax, esi
pop esi
pop ebx
jmp 0x4195a7
mov eax, 0x80070057
pop edi
mov esp, ebp
pop ebp
ret 4
Function at 0x41965e
Capabilities:
Encode data using base64 via winapi

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
push ecx
push ecx
push ebx
push edi
mov edi, dword [ebp + 8]
mov eax, ecx
mov dword [ebp - 8], eax
mov ebx, edx
test edi, edi
je 0x41970d
test ebx, ebx
je 0x41970d
push esi
xor edx, edx
lea ecx, [ebp - 4]
push ecx
push edx
push 0x40000001
push ebx
push eax
mov esi, edx
mov dword [edi], edx
mov dword [ebp - 4], edx
call dword [sym.imp.CRYPT32.dll_CryptBinaryToStringA]
test eax, eax
je 0x4196f3
push dword [ebp - 4]
call dword [sym.imp.msvcrt.dll_void____cdecl_operator_new___unsigned_int_]
mov dword [edi], eax
pop ecx
test eax, eax
je 0x4196ec
lea ecx, [ebp - 4]
push ecx
push eax
push 0x40000001
push ebx
push dword [ebp - 8]
call dword [sym.imp.CRYPT32.dll_CryptBinaryToStringA]
test eax, eax
jne 0x419708
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov esi, eax
test esi, esi
jle 0x4196de
movzx esi, si
or esi, 0x80070000
push dword [edi]
call dword [sym.imp.msvcrt.dll_void___cdecl_operator_delete___void__]
and dword [edi], 0
pop ecx
jmp 0x419708
mov esi, 0x8007000e
jmp 0x419708
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov esi, eax
test esi, esi
jle 0x419708
movzx esi, si
or esi, 0x80070000
mov eax, esi
pop esi
jmp 0x419712
mov eax, 0x80070057
pop edi
pop ebx
mov esp, ebp
pop ebp
ret 4

Function at 0x419791
Capabilities:
Encode data using xor

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
sub esp, 0xc
mov eax, edx
push ebx
push esi
mov dword [ebp - 8], eax
xor ebx, ebx
lea esi, [eax + 4]
mov eax, dword [ebp + 0xc]
push edi
push esi
mov edi, ecx
mov dword [eax], esi
call dword [sym.imp.msvcrt.dll_void____cdecl_operator_new___unsigned_int_]
mov esi, eax
mov eax, dword [ebp + 8]
pop ecx
mov dword [eax], esi
test esi, esi
je 0x41983b
lea eax, [ebp - 0xc]
push eax
call dword [sym.imp.msvcrt.dll_rand_s]
pop ecx
test eax, eax
jne 0x419834
mov edx, dword [ebp - 8]
mov ecx, dword [ebp - 0xc]
mov dword [esi], ecx
add esi, 4
shr edx, 2
test edx, edx
je 0x419809
imul ecx, ecx, 0x343fd
mov dword [ebp - 0xc], ebx
add ecx, 0x269ec3
mov dword [ebp - 4], ecx
mov al, byte [ebp + ebx - 4]
xor al, byte [edi]
inc ebx
inc edi
mov byte [esi], al
inc esi
cmp ebx, 4
jb 0x4197f3
push 0
pop ebx
dec edx
jne 0x4197e1
mov edx, dword [ebp - 8]
imul eax, ecx, 0x343fd
mov ecx, ebx
add eax, 0x269ec3
mov dword [ebp - 4], eax
and edx, 3
jbe 0x419840
sub esi, edi
mov al, byte [ebp + ecx - 4]
xor al, byte [edi]
inc ecx
mov byte [esi + edi], al
inc edi
cmp ecx, edx
jb 0x419823
jmp 0x419840
mov ebx, 0x80004005
jmp 0x419840
mov ebx, 0x8007000e
pop edi
pop esi
mov eax, ebx
pop ebx
mov esp, ebp
pop ebp
ret 8
Function at 0x41f1f0
Capabilities:
Get common file path

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
sub esp, 0x414
mov eax, dword [0x424004]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
push esi
push edi
push 0x20000003
mov ebx, ecx
mov esi, 0x80004005
call dword [sym.imp.iertutil.dll_Ordinal_791]
test al, al
je 0x41f26f
push 2
push dword [0x404414]
call dword [sym.imp.iertutil.dll_Ordinal_660]
test eax, eax
je 0x41f316
mov edi, 0x104
lea edx, [ebp - 0x20c]
push edi
push dword [0x404414]
push 2
pop ecx
call fcn.0040d8ef
mov esi, eax
test esi, esi
js 0x41f316
lea eax, [ebp - 0x20c]
mov edx, edi
push eax
mov ecx, ebx
call fcn.00408345
mov esi, eax
jmp 0x41f316
lea eax, [ebp - 0x20c]
push eax
xor eax, eax
push eax
push eax
push 0x20
push eax
call dword [sym.imp.SHELL32.dll_SHGetFolderPathW]
mov esi, eax
test esi, esi
jne 0x41f316
push 0x407c30
lea ecx, [ebp - 0x20c]
call fcn.0040eac0
mov esi, eax
test esi, esi
js 0x41f316
lea eax, [ebp - 0x20c]
mov edi, 0x104
push eax
mov edx, edi
mov ecx, ebx
call fcn.00408345
mov esi, eax
test esi, esi
js 0x41f316
push 2
push dword [0x404414]
call dword [sym.imp.iertutil.dll_Ordinal_660]
test eax, eax
je 0x41f305
push edi
push dword [0x404414]
lea edx, [ebp - 0x414]
push 2
pop ecx
call fcn.0040d8ef
test eax, eax
js 0x41f305
lea eax, [ebp - 0x20c]
push eax
lea eax, [ebp - 0x414]
push eax
call 0x423736
test eax, eax
setne al
test al, al
je 0x41f316
push dword [0x404414]
lea edx, [ebp - 0x20c]
call fcn.0040d973
mov ecx, dword [ebp - 4]
mov eax, esi
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.00422f70
mov esp, ebp
pop ebp
ret

Function at 0x41f561
Capabilities:
Encrypt or decrypt via wincrypt
Generate random numbers via winapi

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
sub esp, 0x28
mov eax, dword [0x424004]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
push esi
push edi
lea eax, [ebp - 0x24]
mov edi, ecx
push eax
push 0x10
pop ebx
push ebx
push dword [edi + 0x20]
call dword [sym.imp.ADVAPI32.dll_CryptGenRandom]
test eax, eax
je 0x41f5fe
lea eax, [edi + 0x2c]
mov ecx, edi
push eax
push 0
lea eax, [ebp - 0x24]
push eax
call fcn.0041f6d3
mov esi, eax
test esi, esi
js 0x41f605
lea eax, [edi + 0x30]
mov ecx, edi
push eax
push 1
lea eax, [ebp - 0x24]
push eax
call fcn.0041f6d3
mov esi, eax
test esi, esi
js 0x41f605
push dword [edi + 0x28]
call dword [sym.imp.msvcrt.dll_void____cdecl_operator_new_unsigned_int_]
mov dword [edi + 0x34], eax
pop ecx
test eax, eax
je 0x41f618
push ebx
lea ecx, [ebp - 0x24]
push ecx
push dword [edi + 0x28]
push eax
call dword [sym.imp.msvcrt.dll_memcpy_s]
add esp, 0x10
mov dword [ebp - 0x28], ebx
lea eax, [ebp - 0x28]
push dword [edi + 0x28]
push eax
push dword [edi + 0x34]
push 0
push 1
push 0
push dword [edi + 0x24]
call dword [sym.imp.ADVAPI32.dll_CryptEncrypt]
test eax, eax
jne 0x41f605
call fcn.0040f5c5
mov esi, eax
mov ecx, dword [ebp - 4]
mov eax, esi
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.00422f70
mov esp, ebp
pop ebp
ret
mov esi, 0x8007000e
jmp 0x41f605