win-exec-calc-shellcode
calc.exe を実行する小さな NUL フリーのシェルコードです。
x86 および x64 版の Windows 5.0〜6.3 (2000、XP、2003、2008、7、8、8.1) の全サービスパックで動作します。
サイズ (build 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
互換: データは実行されず、コードは変更されません。
- レジスタと戻り値を保存・復元でき、シェルコードを関数として呼び出す PoC コードで
使用できます (
cdecl/stdcall/fastcall 呼び出し規約を使用。
クレジット
Skylined と Peter Ferrie