ReversingID/Shellcode-Loader
GitHub: ReversingID/Shellcode-Loader
一个系统讲解 shellcode 动态加载技术的开源学习仓库,覆盖 Linux 与 Windows 平台下从内存分配到执行隐藏的全流程技术及多语言实现。
Stars: 288 | Forks: 48
# Shellcode 加载器
用于学习动态加载 shellcode 的开源仓库。
**语言:** 印尼语(默认) | [英语](README.EN.md)
## 简介
本仓库汇集了关于 implant 所使用的将 shellcode 加载到内存中的技术的信息。本仓库向公众开放,`Reversing.ID` 社区的内部成员和外部人员均可访问。
### 什么是 Shellcode?
`Shellcode` 是一段具有特定目的的代码/指令,用于执行特定操作。在漏洞利用中,shellcode 被用作 payload(有效载荷),以便在特定限制下注入到目标系统中。
理论上,shellcode 可以执行任何操作。起初,shellcode 只是用于调用 shell 的指令。后来,shellcode 不断发展,具备了创建用户、删除数据等多种用途。
**使用的 shellcode 示例:**
```
# 9090CCC3
0000: 90 nop
0001: 90 nop
0002: CC int3
0003: c3 ret
```
## 基础技术
本仓库讨论了加载 shellcode 的基本过程,即:
| 技术 | 描述 |
|--------|-----------|
| **allocation** | 分配内存的策略,用于将 shellcode 作为可执行代码容纳其中 |
| **storage** | 在执行前存储 shellcode 的策略 |
| **execution** | 从内存中执行 shellcode 的策略 |
| **writing** | 将代码写入/修改到内存的策略,无论是直接写入还是通过转换 |
| **permission** | 管理 memory 的 permission/attribute 以实现执行 |
| **access** | 加载过程中使用的各种 API 访问变体(主要针对 Windows) |
| **concealment** | 隐藏 runtime 的技术,用于降低 implant 的可观察性(专用于 Windows) |
部分技术利用了 OS 提供的 API,无论是直接还是间接调用。
## 仓库结构
```
Shellcode-Loader/
├── linux/ # Teknik untuk Linux
│ ├── allocation/ # Memory allocation
│ ├── storage/ # Shellcode storage
│ ├── execution/ # Code execution
│ ├── writing/ # Code writing
│ └── permission/ # Permission management
│
├── windows/ # Teknik untuk Windows
│ ├── access/ # Windows API reference
│ ├── allocation/ # Memory allocation
│ ├── storage/ # Shellcode storage
│ ├── execution/ # Code execution (dengan sub-teknik)
│ │ ├── asm-jmp/
│ │ ├── callback/
│ │ ├── event/
│ │ ├── fiber/
│ │ ├── invoke/
│ │ └── thread/
│ ├── writing/ # Code writing
│ ├── permission/ # Permission management
│ └── concealment/ # Runtime concealment (Windows)
│ ├── module-stomping/
│ ├── sleep-obfuscation/
│ └── stack-spoofing/
│
├── README.md # Dokumentasi ini
├── README.EN.md # Dokumentasi dalam English
├── CONTRIBUTING.md # Panduan kontribusi
├── RESOURCES.md # Indeks lengkap dan referensi
└── .gitignore # Git ignore rules
```
## 快速开始
### 1. 从这里开始
- **初学者?** 阅读上方的 [Shellcode 简介](#apa-itu-shellcode)
- **想查看所有技术?** 查看 [RESOURCES.md](RESOURCES.md)
- **想要贡献?** 阅读 [CONTRIBUTING.md](CONTRIBUTING.md)
### 2. 选择平台
- **Linux:** 打开 [linux/](linux/) 目录
- **Windows:** 打开 [windows/](windows/) 目录
### 3. 选择技术
每个技术目录包含:
- `README.md` - 技术文档
- 目录(例如 `c++/`)包含特定语言的代码实现
- 示例与说明
## 注意事项
- 本仓库中的技术主要针对 x86(以及 x64)架构,除非另有说明
- 文档和实现使用印尼语,并提供英语版本
- 本仓库是面向网络安全社区的开源教育资源
## 免责声明
本仓库仅用于网络安全教育和研究目的。本仓库中的所有技术和代码均用于合法的安全学习和调查。使用者应对本仓库中信息的使用负责,并必须遵守其所在司法管辖区的所有适用法律和法规。
标签:Raspberry Pi, shellcode加载器, SIP, 内存执行, 端点可见性, 红队技术, 自动回退