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

Disassembly:
push rbx
sub rsp, 0x60
mov rax, qword [0x14000c010]
xor rax, rsp
mov qword [rsp + 0x58], rax
cmp qword [rcx + 0x68], 0
mov rbx, rcx
je 0x140004605
cmp byte [rcx + 0x72], 0
je 0x140004605
mov rax, qword [rcx]
mov qword [rsp + 0x78], rdi
mov edi, 0xffff
mov edx, edi
call qword [rax + 0x18]
cmp di, ax
je 0x140004601
mov rcx, qword [rbx + 0x68]
lea rax, [rsp + 0x30]
lea rdx, [rbx + 0x74]
mov qword [rsp + 0x20], rax
lea r9, [rsp + 0x58]
lea r8, [rsp + 0x38]
call qword [sym.imp.MSVCP140.dll_public:_int___cdecl_std::codecvt_wchar_t__char__struct__Mbstatet_::unshift_struct__Mbstatet____ptr64__char____ptr64__char____ptr64__char____ptr64____ptr64_const___ptr64]
test eax, eax
je 0x1400045c6
sub eax, 1
je 0x1400045ca
cmp eax, 2
jne 0x140004601
mov byte [rbx + 0x72], 0
mov al, 1
mov rdi, qword [rsp + 0x78]
mov rcx, qword [rsp + 0x58]
xor rcx, rsp
call fcn.140005b80
add rsp, 0x60
pop rbx
ret
mov byte [rbx + 0x72], 0
mov rdi, qword [rsp + 0x30]
lea rax, [rsp + 0x38]
sub rdi, rax
je 0x1400045f8
mov r9, qword [rbx + 0x80]
lea rcx, [rsp + 0x38]
mov r8, rdi
mov edx, 1
call qword [sym.imp.api_ms_win_crt_stdio_l1_1_0.dll_fwrite]
cmp rdi, rax
jne 0x140004601
cmp byte [rbx + 0x72], 0
sete al
jmp 0x1400045ae
xor al, al
jmp 0x1400045ae
mov al, 1
mov rcx, qword [rsp + 0x58]
xor rcx, rsp
call fcn.140005b80
add rsp, 0x60
pop rbx
ret

Function at 0x140004870
Capabilities:
Write file on windows

Disassembly:
push rbx
sub rsp, 0x60
mov rax, qword [0x14000c010]
xor rax, rsp
mov qword [rsp + 0x58], rax
cmp qword [rcx + 0x68], 0
mov rbx, rcx
je 0x140004943
cmp byte [rcx + 0x71], 0
je 0x140004943
mov rax, qword [rcx]
mov edx, 0xffffffff
mov qword [rsp + 0x78], rdi
call qword [rax + 0x18]
cmp eax, 0xffffffff
je 0x14000493f
mov rcx, qword [rbx + 0x68]
lea rax, [rsp + 0x30]
lea rdx, [rbx + 0x74]
mov qword [rsp + 0x20], rax
lea r9, [rsp + 0x58]
lea r8, [rsp + 0x38]
call qword [sym.imp.MSVCP140.dll_public:_int___cdecl_std::codecvt_char__char__struct__Mbstatet_::unshift_struct__Mbstatet____ptr64__char____ptr64__char____ptr64__char____ptr64____ptr64_const___ptr64]
test eax, eax
je 0x140004904
sub eax, 1
je 0x140004908
cmp eax, 2
jne 0x14000493f
mov byte [rbx + 0x71], 0
mov al, 1
mov rdi, qword [rsp + 0x78]
mov rcx, qword [rsp + 0x58]
xor rcx, rsp
call fcn.140005b80
add rsp, 0x60
pop rbx
ret
mov byte [rbx + 0x71], 0
mov rdi, qword [rsp + 0x30]
lea rax, [rsp + 0x38]
sub rdi, rax
je 0x140004936
mov r9, qword [rbx + 0x80]
lea rcx, [rsp + 0x38]
mov r8, rdi
mov edx, 1
call qword [sym.imp.api_ms_win_crt_stdio_l1_1_0.dll_fwrite]
cmp rdi, rax
jne 0x14000493f
cmp byte [rbx + 0x71], 0
sete al
jmp 0x1400048ec
xor al, al
jmp 0x1400048ec
mov al, 1
mov rcx, qword [rsp + 0x58]
xor rcx, rsp
call fcn.140005b80
add rsp, 0x60
pop rbx
ret
Function at 0x14000df30
Capabilities:
Get common file path

Disassembly:
mov qword [rsp + 0x10], rbx
mov qword [rsp + 0x18], rsi
push rdi
sub rsp, 0x260
mov rax, qword [0x14005c010]
xor rax, rsp
mov qword [rsp + 0x250], rax
mov rdi, rcx
mov qword [rsp + 0x28], rcx
xor esi, esi
mov dword [rsp + 0x20], esi
lea rcx, vtable.CVolObject.0
mov qword [rdi], rcx
mov qword [rdi + 8], rsi
mov qword [rdi + 0x10], rsi
lea rax, vtable.CWString.0
mov qword [rdi], rax
lea rbx, [rdi + 0x20]
mov qword [rsp + 0x30], rbx
mov qword [rbx], rcx
mov qword [rbx + 8], rsi
mov qword [rbx + 0x10], rsi
lea rax, vtable.CVolMem.0
mov qword [rbx], rax
mov qword [rbx + 0x18], rsi
mov qword [rbx + 0x28], rsi
mov qword [rbx + 0x20], rsi
mov qword [rbx + 0x30], 0x40
mov qword [rdi + 0x18], rsi
mov qword [rdi + 0x50], 0xfe
mov dword [rsp + 0x20], 1
mov word [rsp + 0x40], si
xor r9d, r9d
lea r8d, [rsi + 0x1c]
lea rdx, [rsp + 0x40]
xor ecx, ecx
call qword [sym.imp.SHELL32.dll_SHGetSpecialFolderPathW]
test eax, eax
je 0x14000e07b
mov rax, qword [rdi + 0x18]
test rax, rax
jne 0x14000dffe
cmp qword [rdi + 0x48], rax
je 0x14000e008
cmp qword [rbx + 0x28], rax
je 0x14000e008
mov rax, qword [rbx + 0x18]
lea rcx, [rsp + 0x40]
cmp rcx, rax
je 0x14000e073
mov qword [rdi + 0x18], rsi
mov rdx, qword [rbx + 0x18]
test rdx, rdx
je 0x14000e01e
mov rax, qword [rbx]
mov rcx, rbx
call qword [rax + 0x18]
mov qword [rbx + 0x18], rsi
mov qword [rbx + 0x28], rsi
mov qword [rbx + 0x20], rsi
movzx eax, word [rsp + 0x40]
test ax, ax
je 0x14000e073
lea rcx, [rsp + 0x40]
mov rax, 0xffffffffffffffff
lea rax, [rax + 1]
cmp word [rcx + rax*2], 0
jne 0x14000e040
lea rsi, [rax*2 + 2]
test rsi, rsi
jle 0x14000e073
mov rdx, rsi
mov rcx, rbx
call fcn.14001ab50
mov r8, rsi
lea rdx, [rsp + 0x40]
mov rcx, rax
call fcn.140027b50
mov rcx, rdi
call fcn.14000e210
mov rax, rdi
mov rcx, qword [rsp + 0x250]
xor rcx, rsp
call fcn.140025ab0
lea r11, [rsp + 0x260]
mov rbx, qword [r11 + 0x18]
mov rsi, qword [r11 + 0x20]
mov rsp, r11
pop rdi
ret
Function at 0x140014b60
Capabilities:
Check if file exists

Disassembly:
mov qword [rsp + 0x10], rbx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
mov rbp, rsp
sub rsp, 0x70
mov rdi, rcx
xor r15d, r15d
mov dword [rbp - 0x40], r15d
lea rax, vtable.CVolCommonBaseWithMemManager.0
mov qword [rbp - 0x38], rax
lea r13, vtable.CVolObject.0
mov qword [rbp - 0x38], r13
mov qword [rbp - 0x30], r15
mov qword [rbp - 0x28], r15
lea r12, vtable.CVolMem.0
mov qword [rbp - 0x38], r12
mov qword [rbp - 0x20], r15
mov qword [rbp - 0x10], r15
mov qword [rbp - 0x18], r15
mov qword [rbp - 8], 0x40
mov dword [rbp - 0x40], 1
lea r9d, [r15 + 0xa]
lea r8, [rbp - 0x38]
mov edx, 0x1f4
lea rcx, [0x14005f6d0]
mov rax, qword [0x14005f6d0]
call qword [rax + 0x30]
mov rcx, qword [rdi + 0x18]
mov rbx, qword [rbp - 0x10]
mov rsi, qword [rbp - 0x20]
mov rax, rbx
test rcx, rcx
jne 0x140014c0f
cmp qword [rdi + 0x48], rcx
jne 0x140014c06
lea rcx, [0x140049bb8]
jmp 0x140014c0f
mov rcx, qword [rdi + 0x38]
test rcx, rcx
je 0x140014c49
cmp word [rcx], 0
je 0x140014c49
test rax, rax
js 0x140014c49
lea rdx, [0x14004ddcc]
call fcn.1400309d4
mov r14, rax
test rax, rax
je 0x140014c49
mov r9, rax
mov r8, rbx
mov edx, 1
mov rcx, rsi
call fcn.14002dd60
mov rcx, r14
call fcn.14002d010
mov eax, 1
and eax, 0xfffffffe
mov dword [rbp - 0x40], eax
mov qword [rbp - 0x38], r12
mov rdx, qword [rbp - 0x20]
test rdx, rdx
je 0x140014c6c
lea rcx, [rbp - 0x38]
mov rax, qword [rbp - 0x38]
call qword [rax + 0x18]
mov qword [rbp - 0x20], r15
mov qword [rbp - 0x10], r15
mov qword [rbp - 0x18], r15
mov qword [rbp - 0x38], r13
xor r8d, r8d
xor edx, edx
xor ecx, ecx
call qword [sym.imp.KERNEL32.dll_CreateWaitableTimerW]
mov qword [rbp + 0x40], rax
mov qword [rbp + 0x50], 0xfffffffffffe7960
mov dword [rsp + 0x28], r15d
mov qword [rsp + 0x20], r15
xor r9d, r9d
xor r8d, r8d
lea rdx, [rbp + 0x50]
mov rcx, rax
call qword [sym.imp.KERNEL32.dll_SetWaitableTimer]
mov dword [rsp + 0x20], 0xff
mov r9d, 0xffffffff
xor r8d, r8d
lea rdx, [rbp + 0x40]
lea ecx, [r8 + 1]
call qword [sym.imp.USER32.dll_MsgWaitForMultipleObjects]
test eax, eax
je 0x140014d55
nop dword [rax]
mov dword [rsp + 0x20], 1
xor r9d, r9d
xor r8d, r8d
xor edx, edx
lea rcx, [rbp - 0x38]
call qword [sym.imp.USER32.dll_PeekMessageW]
test eax, eax
je 0x140014d32
nop
lea rcx, [rbp - 0x38]
call qword [sym.imp.USER32.dll_DispatchMessageW]
lea rcx, [rbp - 0x38]
call qword [sym.imp.USER32.dll_TranslateMessage]
mov dword [rsp + 0x20], 1
xor r9d, r9d
xor r8d, r8d
xor edx, edx
lea rcx, [rbp - 0x38]
call qword [sym.imp.USER32.dll_PeekMessageW]
test eax, eax
jne 0x140014d00
mov dword [rsp + 0x20], 0xff
mov r9d, 0xffffffff
xor r8d, r8d
lea rdx, [rbp + 0x40]
lea ecx, [r8 + 1]
call qword [sym.imp.USER32.dll_MsgWaitForMultipleObjects]
test eax, eax
jne 0x140014ce0
mov rcx, qword [rbp + 0x40]
call qword [sym.imp.KERNEL32.dll_CloseHandle]
mov rcx, qword [rdi + 0x18]
test rcx, rcx
jne 0x140014d79
cmp qword [rdi + 0x48], rcx
lea rcx, [0x140049bb8]
je 0x140014d79
mov rcx, qword [rdi + 0x38]
mov rbx, qword [rsp + 0xb8]
add rsp, 0x70
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
jmp fcn.140019730
Function at 0x140018570
Capabilities:
Extract resource via kernel32 functions

Disassembly:
mov qword [rsp + 8], rbx
mov qword [rsp + 0x10], rbp
mov qword [rsp + 0x18], rsi
mov qword [rsp + 0x20], rdi
push r12
push r14
push r15
sub rsp, 0x50
mov rdi, r8
mov ebx, edx
test r8, r8
je 0x1400186d6
mov rax, qword [rcx]
call qword [rax]
mov rsi, rax
test ebx, ebx
je 0x1400185dd
cmp ebx, 3
je 0x1400185dd
sub ebx, 1
je 0x1400185cc
cmp ebx, 1
jne 0x1400186d6
movzx edx, di
mov rcx, rax
call qword [sym.imp.USER32.dll_LoadIconW]
jmp 0x1400186d8
movzx edx, di
mov rcx, rsi
call qword [sym.imp.USER32.dll_LoadCursorW]
jmp 0x1400186d8
movzx edx, di
mov r8d, 0xa
mov rcx, rsi
call qword [sym.imp.KERNEL32.dll_FindResourceW]
mov r14, rax
test rax, rax
je 0x1400186d6
xor r12d, r12d
mov edi, r12d
mov rdx, rax
mov rcx, rsi
call qword [sym.imp.KERNEL32.dll_LoadResource]
mov rbp, rax
test rax, rax
je 0x1400186d6
mov rcx, rax
call qword [sym.imp.KERNEL32.dll_LockResource]
mov r15, rax
test rax, rax
je 0x1400186a5
xorps xmm0, xmm0
movdqu xmmword [rsp + 0x20], xmm0
xorps xmm1, xmm1
movdqu xmmword [rsp + 0x30], xmm1
mov qword [rsp + 0x40], r12
mov rdx, r14
mov rcx, rsi
call qword [sym.imp.KERNEL32.dll_SizeofResource]
mov r8d, eax
mov rdx, r15
lea rcx, [rsp + 0x20]
call fcn.140016500
test rax, rax
je 0x14001867e
mov rdi, qword [rsp + 0x20]
xorps xmm0, xmm0
movdqu xmmword [rsp + 0x20], xmm0
xorps xmm1, xmm1
movdqu xmmword [rsp + 0x30], xmm1
mov qword [rsp + 0x40], r12
mov rcx, qword [rsp + 0x20]
test rcx, rcx
je 0x1400186a5
xorps xmm0, xmm0
movdqu xmmword [rsp + 0x20], xmm0
xorps xmm1, xmm1
movdqu xmmword [rsp + 0x30], xmm1
mov qword [rsp + 0x40], r12
call qword [sym.imp.GDI32.dll_DeleteObject]
mov rcx, rbp
call qword [sym.imp.KERNEL32.dll_FreeResource]
test rdi, rdi
je 0x1400186d6
cmp ebx, 3
jne 0x1400186d1
mov rcx, rdi
call fcn.140017fb0
mov rbx, rax
mov rcx, rdi
call qword [sym.imp.GDI32.dll_DeleteObject]
mov rax, rbx
jmp 0x1400186d8
mov rax, rdi
jmp 0x1400186d8
xor eax, eax
lea r11, [rsp + 0x50]
mov rbx, qword [r11 + 0x20]
mov rbp, qword [r11 + 0x28]
mov rsi, qword [r11 + 0x30]
mov rdi, qword [r11 + 0x38]
mov rsp, r11
pop r15
pop r14
pop r12
ret
Function at 0x140018790
Capabilities:
Extract resource via kernel32 functions

Disassembly:
mov qword [rsp + 0x18], rbx
push rbp
push rsi
push r14
sub rsp, 0x20
xor esi, esi
mov r14, r9
mov qword [r8 + 0x28], rsi
mov rbx, r8
mov rbp, rdx
test rdx, rdx
jne 0x1400187c2
lea eax, [rdx + 1]
mov rbx, qword [rsp + 0x50]
add rsp, 0x20
pop r14
pop rsi
pop rbp
ret
mov rax, qword [rcx]
mov qword [rsp + 0x40], rdi
mov qword [rsp + 0x48], r15
call qword [rax]
movzx edx, bp
mov r8, r14
mov rcx, rax
mov rdi, rax
call qword [sym.imp.KERNEL32.dll_FindResourceW]
mov r15, rax
test rax, rax
je 0x1400188b7
mov rdx, rax
mov rcx, rdi
call qword [sym.imp.KERNEL32.dll_LoadResource]
mov rbp, rax
test rax, rax
je 0x1400188b7
mov rcx, rax
call qword [sym.imp.KERNEL32.dll_LockResource]
mov r14, rax
test rax, rax
je 0x1400188ae
mov rdx, r15
mov rcx, rdi
call qword [sym.imp.KERNEL32.dll_SizeofResource]
mov edi, eax
mov qword [rbx + 0x28], rsi
cmp qword [rbx + 0x20], rdi
jl 0x14001888c
cmp rdi, 1
jne 0x14001884a
movzx ecx, byte [r14]
mov rax, qword [rbx + 0x18]
mov byte [rax], cl
inc qword [rbx + 0x28]
jmp 0x1400188a9
cmp rdi, 2
jne 0x140018861
movzx ecx, word [r14]
mov rax, qword [rbx + 0x18]
mov word [rax], cx
add qword [rbx + 0x28], rdi
jmp 0x1400188a9
cmp rdi, 4
jne 0x140018876
mov ecx, dword [r14]
mov rax, qword [rbx + 0x18]
mov dword [rax], ecx
add qword [rbx + 0x28], rdi
jmp 0x1400188a9
cmp rdi, 8
jne 0x14001888c
mov rcx, qword [r14]
mov rax, qword [rbx + 0x18]
mov qword [rax], rcx
add qword [rbx + 0x28], rdi
jmp 0x1400188a9
test eax, eax
je 0x1400188a9
mov rdx, rdi
mov rcx, rbx
call fcn.14001ab50
mov r8, rdi
mov rdx, r14
mov rcx, rax
call fcn.140027b50
mov esi, 1
mov rcx, rbp
call qword [sym.imp.KERNEL32.dll_FreeResource]
mov r15, qword [rsp + 0x48]
mov rax, rsi
mov rdi, qword [rsp + 0x40]
mov rbx, qword [rsp + 0x50]
add rsp, 0x20
pop r14
pop rsi
pop rbp
ret
Function at 0x140019730
Capabilities:
Check if file exists
Get file attributes

Disassembly:
mov qword [rsp + 0x10], rbx
mov qword [rsp + 0x18], rsi
push rbp
push rdi
push r14
mov rbp, rsp
sub rsp, 0x80
test rcx, rcx
je 0x14001986f
cmp word [rcx], 0
je 0x14001986f
lea rdx, vtable.CVolCommonBaseWithMemManager.0
mov qword [rbp - 0x60], rdx
lea rsi, vtable.CVolObject.0
mov qword [rbp - 0x60], rsi
xor edi, edi
mov qword [rbp - 0x58], rdi
mov qword [rbp - 0x50], rdi
lea rax, vtable.CWString.0
mov qword [rbp - 0x60], rax
lea rax, [rbp - 0x40]
mov qword [rbp + 0x20], rax
mov qword [rbp - 0x40], rdx
mov qword [rbp - 0x40], rsi
mov qword [rbp - 0x38], rdi
mov qword [rbp - 0x30], rdi
lea r14, vtable.CVolMem.0
mov qword [rbp - 0x40], r14
mov qword [rbp - 0x28], rdi
mov qword [rbp - 0x18], rdi
mov qword [rbp - 0x20], rdi
mov qword [rbp - 0x10], 0x40
mov qword [rbp - 0x48], rdi
mov qword [rbp - 0x10], 0xfe
cmp word [rcx], di
je 0x140019826
cmp word [rcx + 2], di
je 0x140019826
mov r8, 0xffffffffffffffff
nop dword [rax + rax]
inc r8
cmp word [rcx + r8*2], 0
jne 0x1400197e0
cmp word [rcx + r8*2 - 2], 0x5c
jne 0x140019826
cmp word [rcx + r8*2 - 4], 0x3a
je 0x140019826
dec r8
mov rdx, rcx
lea rcx, [rbp - 0x60]
call fcn.14001c380
mov rcx, qword [rbp - 0x48]
test rcx, rcx
jne 0x140019826
lea rcx, [0x140049bb8]
cmp qword [rbp - 0x18], 0
cmovne rcx, qword [rbp - 0x28]
call qword [sym.imp.KERNEL32.dll_GetFileAttributesW]
mov rbx, rdi
cmp eax, 0xffffffff
setne bl
lea rax, [rbp - 0x40]
mov qword [rbp + 0x20], rax
mov qword [rbp - 0x40], r14
mov rdx, qword [rbp - 0x28]
test rdx, rdx
je 0x140019856
lea rcx, [rbp - 0x40]
mov r8, qword [rbp - 0x40]
call qword [r8 + 0x18]
mov qword [rbp - 0x28], rdi
mov qword [rbp - 0x18], rdi
mov qword [rbp - 0x20], rdi
mov qword [rbp - 0x40], rsi
mov qword [rbp - 0x60], rsi
mov rax, rbx
jmp 0x140019871
xor eax, eax
lea r11, [rsp + 0x80]
mov rbx, qword [r11 + 0x28]
mov rsi, qword [r11 + 0x30]
mov rsp, r11
pop r14
pop rdi
pop rbp
ret
Function at 0x140019890
Capabilities:
Create process on windows

Disassembly:
mov qword [rsp + 8], rbx
mov qword [rsp + 0x10], rsi
mov qword [rsp + 0x18], rdi
mov qword [rsp + 0x20], r14
push rbp
lea rbp, [rsp - 0x10]
sub rsp, 0x110
test rcx, rcx
je 0x1400199f9
cmp word [rcx], 0
je 0x1400199f9
xorps xmm0, xmm0
xor eax, eax
movups xmmword [rbp - 0x60], xmm0
movups xmmword [rbp - 0x50], xmm0
movups xmmword [rbp - 0x40], xmm0
movaps xmmword [rbp - 0x30], xmm0
movups xmmword [rbp - 0x20], xmm0
movups xmmword [rbp - 0x10], xmm0
mov qword [rbp], rax
mov dword [rbp - 0x60], 0x68
psrldq xmm0, 0xc
movd eax, xmm0
or eax, 1
mov dword [rbp - 0x24], eax
xor edi, edi
mov word [rbp - 0x20], di
lea rax, vtable.CVolCommonBaseWithMemManager.0
mov qword [rsp + 0x50], rax
lea rsi, vtable.CVolObject.0
mov qword [rsp + 0x50], rsi
mov qword [rsp + 0x58], rdi
mov qword [rsp + 0x60], rdi
lea r14, vtable.CVolMem.0
mov qword [rsp + 0x50], r14
mov qword [rsp + 0x68], rdi
mov qword [rsp + 0x78], rdi
mov qword [rsp + 0x70], rdi
mov qword [rbp - 0x80], 0x40
mov rdx, rcx
lea rcx, [rsp + 0x50]
call fcn.14001ac30
mov rdx, qword [rsp + 0x68]
cmp qword [rsp + 0x78], rdi
cmove rdx, rdi
lea rax, [rbp - 0x78]
mov qword [rsp + 0x48], rax
lea rax, [rbp - 0x60]
mov qword [rsp + 0x40], rax
mov qword [rsp + 0x38], rdi
mov qword [rsp + 0x30], rdi
mov dword [rsp + 0x28], edi
mov dword [rsp + 0x20], edi
xor r9d, r9d
xor r8d, r8d
xor ecx, ecx
call qword [sym.imp.KERNEL32.dll_CreateProcessW]
test eax, eax
jne 0x14001999b
mov ebx, edi
jmp 0x1400199c3
mov edx, 0x1f4
mov rcx, qword [rbp - 0x78]
call qword [sym.imp.USER32.dll_WaitForInputIdle]
mov rcx, qword [rbp - 0x70]
call qword [sym.imp.KERNEL32.dll_CloseHandle]
mov rcx, qword [rbp - 0x78]
call qword [sym.imp.KERNEL32.dll_CloseHandle]
mov ebx, 1
mov qword [rsp + 0x50], r14
mov rdx, qword [rsp + 0x68]
test rdx, rdx
je 0x1400199e0
lea rcx, [rsp + 0x50]
mov r8, qword [rsp + 0x50]
call qword [r8 + 0x18]
mov qword [rsp + 0x68], rdi
mov qword [rsp + 0x78], rdi
mov qword [rsp + 0x70], rdi
mov qword [rsp + 0x50], rsi
mov rax, rbx
jmp 0x1400199fb
xor eax, eax
lea r11, [rsp + 0x110]
mov rbx, qword [r11 + 0x10]
mov rsi, qword [r11 + 0x18]
mov rdi, qword [r11 + 0x20]
mov r14, qword [r11 + 0x28]
mov rsp, r11
pop rbp
ret
Function at 0x140019af0
Capabilities:
Accept command line arguments

Disassembly:
push rsi
push r14
sub rsp, 0x28
mov r14, rcx
call fcn.1400158d0
call qword [sym.imp.KERNEL32.dll_GetCommandLineW]
mov rdx, rax
movzx eax, word [rax]
test ax, ax
je 0x140019b24
cmp ax, 0x20
ja 0x140019b24
movzx eax, word [rdx + 2]
add rdx, 2
test ax, ax
jne 0x140019b11
movzx r9d, word [rdx]
movzx eax, r9w
cmp r9w, 0x22
jne 0x140019b37
movzx eax, word [rdx + 2]
mov ecx, 0x20
mov r8d, 0x22
cmovne r8w, cx
lea rcx, [rdx + 2]
cmovne rcx, rdx
cmp ax, r8w
je 0x140019b71
movzx edx, ax
movzx eax, dx
test dx, dx
je 0x140019b71
movzx eax, word [rcx + 2]
add rcx, 2
movzx edx, ax
cmp ax, r8w
jne 0x140019b58
test ax, ax
lea rdx, [rcx + 2]
cmove rdx, rcx
mov rsi, rdx
cmp r9w, 0x22
jne 0x140019b90
cmp word [rdx], 0x20
jne 0x140019b90
lea rsi, [rdx + 2]
movzx eax, word [rsi]
test ax, ax
je 0x140019d1e
mov qword [rsp + 0x50], rdi
mov qword [rsp + 0x20], r15
xor r15d, r15d
mov qword [rsp + 0x40], rbx
mov qword [rsp + 0x48], rbp
cmp ax, 0x22
jne 0x140019c62
movzx eax, word [rsi + 2]
add rsi, 2
mov rdi, rsi
test ax, ax
je 0x140019be3
nop dword [rax]
cmp ax, 0x22
je 0x140019be3
movzx eax, word [rdi + 2]
add rdi, 2
test ax, ax
jne 0x140019bd0
mov rbx, rdi
sub rbx, rsi
sar rbx, 1
test rbx, rbx
jle 0x140019c18
mov rax, qword [r14]
add rbx, rbx
mov rcx, r14
lea rdx, [rbx + 2]
call qword [rax]
mov r8, rbx
mov rdx, rsi
mov rcx, rax
mov rbp, rax
call fcn.140027b50
mov word [rbx + rbp], r15w
jmp 0x140019c1b
mov rbp, r15
mov rbx, qword [r14 + 0x30]
lea rcx, [r14 + 8]
mov rax, qword [rcx + 0x20]
sub rax, rbx
cmp rax, 8
jl 0x140019c3f
mov rax, qword [rcx + 0x18]
mov qword [rbx + rax], rbp
add qword [rcx + 0x28], 8
jmp 0x140019c4c
lea rdx, [rbx + 8]
call fcn.14001ab50
mov qword [rax + rbx], rbp
mov rsi, rdi
cmp word [rdi], r15w
je 0x140019cfe
lea rsi, [rdi + 2]
jmp 0x140019cfe
cmp ax, 0x20
jbe 0x140019cfa
mov rdi, rsi
nop
cmp ax, 0x22
je 0x140019c89
cmp ax, 0x20
jbe 0x140019c89
movzx eax, word [rdi + 2]
add rdi, 2
test ax, ax
jne 0x140019c70
mov rbx, rdi
sub rbx, rsi
sar rbx, 1
test rbx, rbx
jle 0x140019cbe
mov rax, qword [r14]
add rbx, rbx
mov rcx, r14
lea rdx, [rbx + 2]
call qword [rax]
mov r8, rbx
mov rdx, rsi
mov rcx, rax
mov rbp, rax
call fcn.140027b50
mov word [rbx + rbp], r15w
jmp 0x140019cc1
mov rbp, r15
mov rbx, qword [r14 + 0x30]
lea rcx, [r14 + 8]
mov rax, qword [rcx + 0x20]
sub rax, rbx
cmp rax, 8
jl 0x140019ce8
mov rax, qword [rcx + 0x18]
mov rsi, rdi
mov qword [rbx + rax], rbp
add qword [rcx + 0x28], 8
jmp 0x140019cfe
lea rdx, [rbx + 8]
call fcn.14001ab50
mov rsi, rdi
mov qword [rax + rbx], rbp
jmp 0x140019cfe
add rsi, 2
movzx eax, word [rsi]
test ax, ax
jne 0x140019bb3
mov r15, qword [rsp + 0x20]
mov rdi, qword [rsp + 0x50]
mov rbp, qword [rsp + 0x48]
mov rbx, qword [rsp + 0x40]
mov rax, qword [r14 + 0x30]
shr rax, 3
add rsp, 0x28
pop r14
pop rsi
ret
Function at 0x14001a400
Capabilities:
Log keystrokes via polling

Disassembly:
mov qword [rsp + 0x10], rbx
push rdi
sub rsp, 0x20
movzx edi, cl
lea rax, [rdi - 0x60]
cmp rax, 9
ja 0x14001a485
sub rdi, 0x30
mov rbx, rdi
test rdi, rdi
je 0x14001a477
cmp rdi, 0x11
je 0x14001a441
mov ecx, 0x11
call qword [sym.imp.USER32.dll_GetKeyState]
test ax, ax
jns 0x14001a441
mov rbx, rdi
bts rbx, 0xd
cmp rbx, 0x10
je 0x14001a45c
mov ecx, 0x10
call qword [sym.imp.USER32.dll_GetKeyState]
test ax, ax
jns 0x14001a45c
bts rbx, 0xf
cmp rbx, 0x12
je 0x14001a477
mov ecx, 0x12
call qword [sym.imp.USER32.dll_GetKeyState]
test ax, ax
jns 0x14001a477
bts rbx, 0xe
mov rax, rbx
mov rbx, qword [rsp + 0x38]
add rsp, 0x20
pop rdi
ret
cmp rdi, 0x6d
jne 0x14001a494
mov edi, 0xbd
mov ebx, edi
jmp 0x14001a429
cmp rdi, 0x6e
jne 0x14001a4a3
mov edi, 0xbe
mov ebx, edi
jmp 0x14001a429
cmp rdi, 0x6f
jne 0x14001a4b5
mov edi, 0xbf
mov ebx, edi
jmp 0x14001a429
lea rax, [0x14004b140]
mov rax, qword [rax + rdi*8]
cmp word [rax], 0
jne 0x14001a41b
mov rbx, qword [rsp + 0x38]
xor eax, eax
add rsp, 0x20
pop rdi
ret

Function at 0x14001d010
Capabilities:
Delete registry key

Disassembly:
mov qword [rsp + 8], rbx
mov qword [rsp + 0x10], rsi
push rdi
sub rsp, 0x30
mov rdi, qword [rcx + 0x10]
mov rsi, rdx
mov rbx, rcx
test rdi, rdi
je 0x14001d0c5
cmp qword [rdi], 0
mov rbx, qword [rcx]
je 0x14001d091
lea rcx, [0x14004e208]
call qword [sym.imp.KERNEL32.dll_GetModuleHandleW]
test rax, rax
je case.default.0x14001d0a9
lea rdx, str.RegDeleteKeyTransactedW
mov rcx, rax
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
test rax, rax
je case.default.0x14001d0a9
mov rdx, qword [rdi]
xor r9d, r9d
mov qword [rsp + 0x28], 0
xor r8d, r8d
mov qword [rsp + 0x20], rdx
mov rcx, rbx
mov rdx, rsi
call rax
mov rbx, qword [rsp + 0x40]
mov rsi, qword [rsp + 0x48]
add rsp, 0x30
pop rdi
ret
cmp dword [rdi + 8], 0
je case.default.0x14001d0a9
mov rcx, rbx
mov rbx, qword [rsp + 0x40]
mov rsi, qword [rsp + 0x48]
add rsp, 0x30
pop rdi
jmp qword [sym.imp.ADVAPI32.dll_RegDeleteKeyW]
mov eax, 1
mov rbx, qword [rsp + 0x40]
mov rsi, qword [rsp + 0x48]
add rsp, 0x30
pop rdi
ret
cmp byte [0x14005f678], 0
jne 0x14001d110
lea rcx, [0x14004e208]
call qword [sym.imp.KERNEL32.dll_GetModuleHandleW]
test rax, rax
je 0x14001d100
lea rdx, str.RegDeleteKeyExW
mov rcx, rax
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov qword [0x14005f670], rax
mov byte [0x14005f678], 1
jmp 0x14001d117
mov rax, qword [0x14005f670]
mov byte [0x14005f678], 1
jmp 0x14001d117
mov rax, qword [0x14005f670]
mov rcx, qword [rbx]
mov rdx, rsi
test rax, rax
je 0x14001d09a
mov r8d, dword [rbx + 8]
xor r9d, r9d
mov rbx, qword [rsp + 0x40]
mov rsi, qword [rsp + 0x48]
add rsp, 0x30
pop rdi
jmp rax
add al, 0x8d
movabs al, byte [0x5589087589515052]
call 0xc9161fb1
push rbp
adc al, 0xe8
imul edi, ebx, 0xc483ffff
or al, 0x8b
invalid
Function at 0x14001d9d0
Capabilities:
Extract resource via kernel32 functions

Disassembly:
push rbx
push rsi
push rdi
push r14
push r15
sub rsp, 0x480
mov rax, qword [0x14005c010]
xor rax, rsp
mov qword [rsp + 0x470], rax
mov r15, r9
mov rsi, r8
mov rbx, rdx
xor r14d, r14d
mov qword [rsp + 0x58], r14
mov qword [rsp + 0x50], rcx
mov qword [rsp + 0x48], r14
mov qword [rsp + 0x60], r14
xor edx, edx
lea r8d, [r14 + 0x60]
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_LoadLibraryExW]
mov rdi, rax
mov qword [rsp + 0x38], rax
test rax, rax
jne 0x14001da55
xor edx, edx
lea r8d, [r14 + 2]
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_LoadLibraryExW]
mov rdi, rax
mov qword [rsp + 0x38], rax
test rax, rax
jne 0x14001da55
call fcn.14001ce30
mov ebx, eax
jmp 0x14001db77
mov r8, r15
mov rdx, rsi
mov rcx, rdi
call qword [sym.imp.KERNEL32.dll_FindResourceW]
mov rbx, rax
test rax, rax
jne 0x14001da76
call fcn.14001ce30
jmp 0x14001db66
mov rdx, rbx
mov rcx, rdi
call qword [sym.imp.KERNEL32.dll_LoadResource]
mov rsi, rax
mov qword [rsp + 0x40], rax
test rax, rax
jne 0x14001da99
call fcn.14001ce30
jmp 0x14001db66
mov rdx, rbx
mov rcx, rdi
call qword [sym.imp.KERNEL32.dll_SizeofResource]
mov ebx, eax
mov dword [rsp + 0x30], eax
inc eax
cmp eax, ebx
jae 0x14001dabb
mov ebx, 0x8007000e
jmp 0x14001db68
mov ecx, eax
test eax, eax
je 0x14001daf0
xor edx, edx
mov rax, 0xffffffffffffffff
div rcx
cmp rax, 2
jb 0x14001dbaf
lea rdx, [rcx + rcx]
cmp rdx, 0x400
jbe 0x14001daf0
lea rcx, [rsp + 0x60]
call fcn.140020d80
jmp 0x14001dafa
lea rax, [rsp + 0x68]
mov qword [rsp + 0x60], rax
jmp 0x14001db0d
mov rax, qword [rsp + 0x60]
test rax, rax
jne 0x14001db1e
mov ebx, 0x8007000e
jmp 0x14001db68
mov dword [rsp + 0x28], ebx
mov qword [rsp + 0x20], rax
mov r9d, ebx
mov r8, rsi
xor edx, edx
lea ecx, [rdx + 3]
call qword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
test eax, eax
jne 0x14001db43
call fcn.14001ce30
jmp 0x14001db66
mov ecx, eax
mov rax, qword [rsp + 0x60]
mov word [rax + rcx*2], r14w
mov r8d, dword [rsp + 0x4d0]
mov rdx, qword [rsp + 0x60]
lea rcx, [rsp + 0x48]
call fcn.14001eac0
mov ebx, eax
test rdi, rdi
je 0x14001db77
mov rcx, rdi
call qword [sym.imp.KERNEL32.dll_FreeLibrary]
nop
lea rax, [rsp + 0x68]
cmp qword [rsp + 0x60], rax
je 0x14001db8e
lea rcx, [rsp + 0x60]
call fcn.140020d70
nop
mov eax, ebx
mov rcx, qword [rsp + 0x470]
xor rcx, rsp
call fcn.140025ab0
add rsp, 0x480
pop r15
pop r14
pop rdi
pop rsi
pop rbx
ret
mov ecx, 0x80070216
call fcn.140001260
int3