win-exec-calc-shellcode
可执行 calc.exe 的小型无 NUL 字节 shellcode。
可在 x86 和 x64 版本的 Windows 5.0-6.3(2000、XP、2003、2008、7、8、8.1)上运行,支持所有服务包。
大小(构建 306)
| 平台 | 大小 | 栈对齐 | 函数包装器 | 函数+保存寄存器 | 函数+栈 | 函数+栈+寄存器 |
| x86 | 72 | 75 | 77 | 77 | 84 | 84 |
| x64 | 85 | 90 | 98 | 105 | 106 | 112 |
| x86+x64 | 113 | 118 | 179 | 188 | 188 | 196 |
功能特性
- 无 NUL 字节
- 与 Windows 版本和服务包无关。
- 与 ISA 无关:
可在 x86(w32-exec-calc-shellcode)或 x64(w64-exec-calc-shellcode)
架构上运行,也可同时支持两者(win-exec-calc-shellcode)。
- 必要时可对齐栈指针(如果在 WinExec 中看到崩溃,请尝试使用栈对齐版本)。
- 不对寄存器或栈中的值做任何假设。
- x86:/3GB 和
WoW64" 兼容(不假设指针小于
0x80000000)。
- DEP /
ASLR
兼容:数据不会被执行,代码不会被修改。
- 能够保存和恢复寄存器及返回地址,适用于将 shellcode 作为函数调用的 PoC 代码
(使用
cdecl/stdcall/fastcall 调用约定。
致谢
Skylined 和 Peter Ferrie