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, 二进制利用, 云资产清单, 代码洞, 内存映射, 内存读写, 动态注入, 动态链接库, 协议分析, 子域名枚举, 安全库, 客户端加密, 容器安全, 技术调研, 攻击路径可视化, 权限提升, 系统安全, 进程注入, 进程间通信, 逆向工程, 黑客工具