Atlas 需要以下参数才能正常工作:
Usage: atlas_x64.exe [Process name / PID] [Cleanup] [Server] [Port] [AtlasPatcher DLL] [DLL/PE to inject] <Entrypoint>
| 参数 | 描述 |
|---|---|
| 名称 / PID | 目标进程的名称或 PID |
| Cleanup | 指示是否要在完成时从目标进程中移除已注入的 DLL(Cleanup 支持 1 或 0 作为值) |
| Server | 存放 DLL 的远程服务器的 IP 地址 |
| Port | 你的服务器使用的端口 |
| AtlasPatcher DLL | 托管在你的服务器上的 AtlasPatcher DLL 的名称(默认为 atlas_patcher.dll,编译后可在 /AtlasLdr/bin 下找到该 DLL) |
| 要注入的 DLL/PE | 你想注入的 DLL 或 PE 的名称,托管在你的服务器上 |
| Entrypoint | 可选参数;当 DLL 被注入时,你想用作入口点的导出函数名称 |

传统的加载器实现方式通常需要一个注入器,负责将包含加载器的 DLL 注入到目标远程进程中。注入完成后,执行权移交给加载器,由它负责映射恶意 DLL。相比之下,Atlas 采用了略有不同的方式:除导入地址表(IAT)修补被推迟外,整个映射过程都在自身上下文中完成。
一旦恶意 DLL 被映射到 Atlas 上下文中,它就会被复制到之前在远程进程中保留的内存中。此时,恶意 DLL 已映射到远程进程,但 IAT 尚未被修补。为解决这个问题,AtlasLdr 将一个依赖极少的 DLL(atlas_patcher.dll)注入到恶意进程中,该 DLL 负责修补恶意 DLL 的 IAT,然后将执行上下文移交给它。
这种方式有助于减小需要注入到远程进程中的加载器 DLL 的体积和复杂度,并降低注入器被检测到的概率,因为我们可以利用加载器本身来加载 DLL。
Atlas 需要使用 x86_64-w64-mingw32-g++ 进行编译。一旦你的系统上安装了它,只需在项目文件夹中执行 make(或 mingw32-make.exe)即可。
