MirraLis/x64-calc-popper-shellcode
GitHub: MirraLis/x64-calc-popper-shellcode
演示 x64 Windows shellcode 编写核心技术的教学项目,涵盖 PEB 遍历、自定义哈希 API 解析与 XOR 字符串混淆。
Stars: 0 | Forks: 0
# x64-calc-popper-shellcode — NASM Shellcode 演示
一个与位置无关的 x64 Windows shellcode 实现,演示了
PEB 遍历、基于自定义 hash 的 API 解析以及 XOR 字符串混淆。
使用 NASM 编写,作为一个学习练习,用于理解 C 抽象层之下
发生了什么。
## 功能说明
在运行时从 `kernel32.dll` 解析 `WinExec`,而不使用 Windows 导入地址表 (IAT),然后执行一个 XOR 编码的命令字符串。
## 演示的技术
**PEB 遍历**
遍历进程环境块 (PEB) 的 `InMemoryOrderModuleList`,以在不调用 `LoadLibrary` 或 `GetProcAddress` 的情况下定位已加载的模块。手动处理 `LDR_DATA_TABLE_ENTRY` 的偏移算术运算,以恢复模块基地址。
**基于自定义 Hash 的 API 解析**
不存储明文 API 名称,而是使用自定义加盐哈希函数,通过将计算出的哈希值与存储的常量进行比较来识别目标函数。支持 ASCII 和宽字符串输入,以处理模块名称(宽字符)和导出名称(ASCII)。
Hash 算法:`hash = char + (SALT ^ SALT_2 ^ i) + (hash << 6) + (hash << 16) - hash`
对结果应用最终的 XOR 步骤以增加额外的混淆。
它基本上是一个 sdbm 的变体。
**XOR 字符串混淆**
目标命令字符串以 XOR 编码的形式存储在 `.text` 节中,并在运行时解码到栈上,从而避免在二进制文件中出现明文字符串。
**PE 导出目录解析**
手动遍历 PE 导出目录结构(`AddressOfNames`、`AddressOfFunctions`、`AddressOfNameOrdinals`),以从导出表的 RVA 中解析函数地址。
## 构建
## 作为可执行文件
```
nasm -f win64 calc_peb.nasm -o calc_peb.obj
gcc calc_peb.obj -o calc_peb.exe -nostartfiles
```
## 作为 shellcode
```
nasm -f bin calc_peb.nasm -o calc_peb.bin
```
如果您愿意,也可以使用 Releases 中的已编译 calc_peb.bin。
## 注意事项
- 作为学习练习编写 — 载荷目标为 calc.exe
- 为了教学上的清晰度,哈希常量和 XOR 密钥在源代码中按设计保持可见
## 结语
我在里面留下了我的注释。它们展示了我在编写它时的思考过程。我希望这能在你分析代码时帮助你理解它。
此二进制文件仅用于教育性安全研究。请勿在您不拥有的任何系统上运行它。
标签:API动态解析, Conpot, NASM, PEB遍历, PE文件结构, Shellcode编写, SIP, Windows安全, x64汇编, XML 请求, XOR加密, 免杀技术, 哈希比较, 地址无关代码, 字符串混淆, 安全开发, 安全报告生成, 导出表解析, 暴力破解检测, 系统底层, 红队技术, 逆向工程学习, 黑客工具库