pwntools for Windows

2026-08-06

===> GO_PWNER <===

Этот пост про тулзу для пывна под винду на го. Была сделана где-то два месяца назад на пару с клодом. Пост будет дополняться. Зависимости - golang.org/x/sys + golang.org/x/arch.

1. Зачем она нужна

Стандартный pwntools не работает под виндой, плюс питон мне не очень нравится.

Идея простая: pwntools написан под linux, соответственно фокусируется на elf файлах, glibc, знает про ptrace и т.д. Под windows аналогов соответствующих понятий будут PE, ntdll, Windows Debug API.

Есть библиотека, import "winpwn" и CLI тулза winpwn checksec / cyclic / rop / heap ....

2. Структура проекта

Все в целом понятно из названий файлов:

  1. tube.go, process.go, remote.go - IO часть, Spawn/Remote/Send/Recv/Interactive

  2. pipe_windows.go - Named Pipe функционал, ServePipe/DialPipe - возвращают *Tube

  3. pe.go, sections.go - PE парсинг

  4. checksec.go, authenticode_windows.go - ASLR/NX/CFG/SafeSEH/GS/AUthenticode/.net

  5. exports,imports,imported_libs_windows - IAT/EAT/ImportedLibs с живым base адресом

  6. gadgets.go, rop.go - оболочка над rp-win.exe (лучше использовать rp-win напрямую, там есть сложности с выбором гаджетов)

  7. patch.go - патчинг PE - права секций, tls, checksum

  8. procmem_windows,symobls_windows - PE из памяти живого процесса (ReadProcMemory + PEB walk)

  9. debugger_windows.go - Win Debug API - attach bp/registers/memory

  10. heap*.go - NT heap, Segmented Heap парсинг структур

  11. spray.go - SprayAndFind - spray&check примитив

  12. minidump.go - парсинг .dmp файлов

  13. shellcraft, shellcode_exec_windows - PIC шеллкод (winexec через peb walk), недоделано.

  14. cyclic, packing, fiddling - DeBrujin , p64/u64, hexdump, xor

  15. encoders - доп. кодеры

3. Примеры

Находятся в папке workspace/.