Function at 0x4015fb
Capabilities:
Create thread
Inject dll
Inject thread

Disassembly:
push rbp
push rbx
sub rsp, 0x78
lea rbp, [rsp + 0x80]
mov dword [rbp + 0x10], ecx
lea rcx, [0x00409040]
call sym.std::__cxx11::basic_string_wchar_t__std::char_traits_wchar_t___std::allocator_wchar_t___::empty___const
test al, al
je 0x401643
lea rdx, str.Please_select_a_DLL_first.
mov rcx, qword [sym.imp.libstdc_6.dll_std::wcerr]
call sym.std::basic_ostream_wchar_t__std::char_traits_wchar_t____std::operator____wchar_t__std::char_traits_wchar_t____std::basic_ostream_wchar_t__std::char_traits_wchar_t_____wchar_t_const_
mov rdx, qword [0x00406b90]
mov rcx, rax
call sym.std::basic_ostream_wchar_t__std::char_traits_wchar_t___::operator___std::basic_ostream_wchar_t__std::char_traits_wchar_t_______std::basic_ostream_wchar_t__std::char_traits_wchar_t_____
jmp 0x4019b0
mov r8d, dword [rbp + 0x10]
mov edx, 0
mov ecx, 0x1f0fff
mov rax, qword [sym.imp.KERNEL32.dll_OpenProcess]
call rax
mov qword [rbp - 0x18], rax
cmp qword [rbp - 0x18], 0
jne 0x4016a2
lea rdx, str.Failed_to_open_process._Error_code:
mov rcx, qword [sym.imp.libstdc_6.dll_std::wcerr]
call sym.std::basic_ostream_wchar_t__std::char_traits_wchar_t____std::operator____wchar_t__std::char_traits_wchar_t____std::basic_ostream_wchar_t__std::char_traits_wchar_t_____wchar_t_const_
mov rbx, rax
mov rax, qword [sym.imp.KERNEL32.dll_GetLastError]
call rax
mov edx, eax
mov rcx, rbx
call sym.std::basic_ostream_wchar_t__std::char_traits_wchar_t___::operator___unsigned_long_
mov rdx, qword [0x00406b90]
mov rcx, rax
call sym.std::basic_ostream_wchar_t__std::char_traits_wchar_t___::operator___std::basic_ostream_wchar_t__std::char_traits_wchar_t_______std::basic_ostream_wchar_t__std::char_traits_wchar_t_____
jmp 0x4019b0
lea rcx, [0x00409040]
call sym.std::__cxx11::basic_string_wchar_t__std::char_traits_wchar_t___std::allocator_wchar_t___::size___const
add rax, 1
add rax, rax
mov qword [rbp - 0x20], rax
mov rdx, qword [rbp - 0x20]
mov rax, qword [rbp - 0x18]
mov dword [rsp + 0x20], 4
mov r9d, 0x3000
mov r8, rdx
mov edx, 0
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_VirtualAllocEx]
call rax
mov qword [rbp - 0x28], rax
cmp qword [rbp - 0x28], 0
jne 0x40173b
mov rax, qword [rbp - 0x18]
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_CloseHandle]
call rax
lea rdx, str.Failed_to_allocate_memory_in_target_process._Error_code:
mov rcx, qword [sym.imp.libstdc_6.dll_std::wcerr]
call sym.std::basic_ostream_wchar_t__std::char_traits_wchar_t____std::operator____wchar_t__std::char_traits_wchar_t____std::basic_ostream_wchar_t__std::char_traits_wchar_t_____wchar_t_const_
mov rbx, rax
mov rax, qword [sym.imp.KERNEL32.dll_GetLastError]
call rax
mov edx, eax
mov rcx, rbx
call sym.std::basic_ostream_wchar_t__std::char_traits_wchar_t___::operator___unsigned_long_
mov rdx, qword [0x00406b90]
mov rcx, rax
call sym.std::basic_ostream_wchar_t__std::char_traits_wchar_t___::operator___std::basic_ostream_wchar_t__std::char_traits_wchar_t_______std::basic_ostream_wchar_t__std::char_traits_wchar_t_____
jmp 0x4019b0
lea rcx, [0x00409040]
call fcn.00402498
mov r8, rax
mov rcx, qword [rbp - 0x20]
mov rdx, qword [rbp - 0x28]
mov rax, qword [rbp - 0x18]
mov qword [rsp + 0x20], 0
mov r9, rcx
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_WriteProcessMemory]
call rax
test eax, eax
sete al
test al, al
je 0x4017e4
mov rdx, qword [rbp - 0x28]
mov rax, qword [rbp - 0x18]
mov r9d, 0x8000
mov r8d, 0
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_VirtualFreeEx]
call rax
mov rax, qword [rbp - 0x18]
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_CloseHandle]
call rax
lea rdx, str.Failed_to_write_DLL_path_to_target_process._Error_code:
mov rcx, qword [sym.imp.libstdc_6.dll_std::wcerr]
call sym.std::basic_ostream_wchar_t__std::char_traits_wchar_t____std::operator____wchar_t__std::char_traits_wchar_t____std::basic_ostream_wchar_t__std::char_traits_wchar_t_____wchar_t_const_
mov rbx, rax
mov rax, qword [sym.imp.KERNEL32.dll_GetLastError]
call rax
mov edx, eax
mov rcx, rbx
call sym.std::basic_ostream_wchar_t__std::char_traits_wchar_t___::operator___unsigned_long_
mov rdx, qword [0x00406b90]
mov rcx, rax
call sym.std::basic_ostream_wchar_t__std::char_traits_wchar_t___::operator___std::basic_ostream_wchar_t__std::char_traits_wchar_t_______std::basic_ostream_wchar_t__std::char_traits_wchar_t_____
jmp 0x4019b0
lea rcx, str.kernel32.dll
mov rax, qword [sym.imp.KERNEL32.dll_GetModuleHandleW]
call rax
mov qword [rbp - 0x30], rax
mov rax, qword [rbp - 0x30]
lea rdx, str.LoadLibraryW
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_GetProcAddress]
call rax
mov qword [rbp - 0x38], rax
cmp qword [rbp - 0x38], 0
jne 0x401887
mov rdx, qword [rbp - 0x28]
mov rax, qword [rbp - 0x18]
mov r9d, 0x8000
mov r8d, 0
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_VirtualFreeEx]
call rax
mov rax, qword [rbp - 0x18]
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_CloseHandle]
call rax
lea rdx, str.Failed_to_get_address_of_LoadLibraryW._Error_code:
mov rcx, qword [sym.imp.libstdc_6.dll_std::wcerr]
call sym.std::basic_ostream_wchar_t__std::char_traits_wchar_t____std::operator____wchar_t__std::char_traits_wchar_t____std::basic_ostream_wchar_t__std::char_traits_wchar_t_____wchar_t_const_
mov rbx, rax
mov rax, qword [sym.imp.KERNEL32.dll_GetLastError]
call rax
mov edx, eax
mov rcx, rbx
call sym.std::basic_ostream_wchar_t__std::char_traits_wchar_t___::operator___unsigned_long_
mov rdx, qword [0x00406b90]
mov rcx, rax
call sym.std::basic_ostream_wchar_t__std::char_traits_wchar_t___::operator___std::basic_ostream_wchar_t__std::char_traits_wchar_t_______std::basic_ostream_wchar_t__std::char_traits_wchar_t_____
jmp 0x4019b0
mov rcx, qword [rbp - 0x38]
mov rax, qword [rbp - 0x18]
mov qword [rsp + 0x30], 0
mov dword [rsp + 0x28], 0
mov rdx, qword [rbp - 0x28]
mov qword [rsp + 0x20], rdx
mov r9, rcx
mov r8d, 0
mov edx, 0
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_CreateRemoteThread]
call rax
mov qword [rbp - 0x40], rax
cmp qword [rbp - 0x40], 0
jne 0x401938
mov rdx, qword [rbp - 0x28]
mov rax, qword [rbp - 0x18]
mov r9d, 0x8000
mov r8d, 0
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_VirtualFreeEx]
call rax
mov rax, qword [rbp - 0x18]
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_CloseHandle]
call rax
lea rdx, str.Failed_to_create_remote_thread_in_target_process._Error_code:
mov rcx, qword [sym.imp.libstdc_6.dll_std::wcerr]
call sym.std::basic_ostream_wchar_t__std::char_traits_wchar_t____std::operator____wchar_t__std::char_traits_wchar_t____std::basic_ostream_wchar_t__std::char_traits_wchar_t_____wchar_t_const_
mov rbx, rax
mov rax, qword [sym.imp.KERNEL32.dll_GetLastError]
call rax
mov edx, eax
mov rcx, rbx
call sym.std::basic_ostream_wchar_t__std::char_traits_wchar_t___::operator___unsigned_long_
mov rdx, qword [0x00406b90]
mov rcx, rax
call sym.std::basic_ostream_wchar_t__std::char_traits_wchar_t___::operator___std::basic_ostream_wchar_t__std::char_traits_wchar_t_______std::basic_ostream_wchar_t__std::char_traits_wchar_t_____
jmp 0x4019b0
mov rax, qword [rbp - 0x40]
mov edx, 0xffffffff
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_WaitForSingleObject]
call rax
mov rdx, qword [rbp - 0x28]
mov rax, qword [rbp - 0x18]
mov r9d, 0x8000
mov r8d, 0
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_VirtualFreeEx]
call rax
mov rax, qword [rbp - 0x40]
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_CloseHandle]
call rax
mov rax, qword [rbp - 0x18]
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_CloseHandle]
call rax
lea rdx, str.DLL_Injected_Successfully_
mov rcx, qword [sym.imp.libstdc_6.dll_std::wcout]
call sym.std::basic_ostream_wchar_t__std::char_traits_wchar_t____std::operator____wchar_t__std::char_traits_wchar_t____std::basic_ostream_wchar_t__std::char_traits_wchar_t_____wchar_t_const_
mov rdx, qword [0x00406b90]
mov rcx, rax
call sym.std::basic_ostream_wchar_t__std::char_traits_wchar_t___::operator___std::basic_ostream_wchar_t__std::char_traits_wchar_t_______std::basic_ostream_wchar_t__std::char_traits_wchar_t_____
nop
add rsp, 0x78
pop rbx
pop rbp
ret