Skip to content

Reflective x64 PE/DLL Loader implemented using Dynamic Indirect Syscalls

Notifications You must be signed in to change notification settings

gabyavra/AtlasLdr

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Atlas is a reflective x64 loader that has the following features:

Features

  • Retrieve of DLL and PE from a remote server
  • Manual Mapping on a remote process
  • Position independent code
  • Use of indirect Syscalls
    • ZwAllocateVirtualMemory
    • ZwProtectVirtualMemory
    • ZwQuerySystemInformation
    • ZwFreeVirtualMemory
    • ZwCreateThreadEx
  • Single stub for all Syscalls
    • Dynamic SSN retrieve
    • Dynamic Syscall address resolution
  • Atlas also uses
    • LdrLoadDll
    • NtWriteVirtualMemory
  • Custom implementations of
    • GetProcAddress
    • GetModuleHandle
  • API hashing
  • Cleanup on error
  • Variable EntryPoint

Usage

atlasldr

Compilation

Atlas needs to be compiled using x86_64-w64-mingw32-g++, once you have it on your system, just execute make (or mingw32-make.exe) on the project folder

atlascompilation

Future work

  • Improve the way the syscalls are made
  • x86 support
  • Give more flexibility to the HTTP client
  • Implement some form of encryption on the remote connection

Disclaimer

There are improvements that could be made such as modifying the way syscalls are executed with a consistent and error-proof assembly code. In the future this could be implemented.

About

Reflective x64 PE/DLL Loader implemented using Dynamic Indirect Syscalls

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C++ 86.6%
  • C 12.3%
  • Makefile 1.1%