3443e/mmapin
GitHub: 3443e/mmapin
一个轻量级的 C 语言库,通过在目标进程的内存映射中定位代码洞穴并注入 shellcode,实现跨进程内存分配与代码执行,支持容器和 Flatpak 环境。
Stars: 1 | Forks: 0
# mmapin
一个轻量级的库,用于使用 shellcode 在另一个 Linux 进程中分配内存。
# 工作原理
- 在内存映射中寻找一个可执行的“洞穴”。
- 寻找一个可写的内存区域作为暂存区(用于存放参数和返回结果)
- 将参数写入暂存区。
- 将 shellcode 写入 shellcode/shellcome.bin(查看 shellcode/shellcode.sh 以了解如何获取它)
- 寻找一个返回“跳板”,查找 `mov rax` 或 `48 b8` 指令。
- 不断尝试,直到在可执行区域中找到一个返回地址。
- 将找到的返回地址覆写为我们写入 shellcode 的位置
- 修补 shellcode 的返回,使其返回到原始内容或其他内容
- 使用“暂存”区域获取结果。
- 搞定!
## 构建
```
make
```
这会生成 `test` 二进制文件。
# 示例
```
int memfd = mmapin_getmemfd(pid); // opens mem
uint64_t cave = mmapin_find_cave(pid, memfd, "libc.so"); // Searches for the largest code cave inside libc.so
uint64_t scratch = mmapin_find_rw_scratch(pid); // Gets a region for the arguments and result blablabla
uint64_t addr = mmapin_mmap(pid, memfd, cave, scratch, size, prot, flags); // The actual thing
printf("addr: 0x%lx\n", addr); // yes
```
## 注意事项
- 需要提升的权限(`sudo`)才能访问 `/proc//mem`
- 支持容器/flatpak!
## 许可证
本项目采用 GNU General Public License v3.0 (GPL-3.0) 授权。
标签:Cutter, GPL-3.0, /proc/pid/mem, Shellcode, SSH蜜罐, Web截图, YAML, 二进制利用, 云资产清单, 代码洞, 内存映射, 内存读写, 动态注入, 动态链接库, 协议分析, 子域名枚举, 安全库, 客户端加密, 容器安全, 技术调研, 攻击路径可视化, 权限提升, 系统安全, 进程注入, 进程间通信, 逆向工程, 黑客工具