Go в продакшене вирмейкера Борис Рютин @dukebarman «Цифровое оружие и защита» © 2014 Что такое Go? Создатели Go • Роберт Гризмер • Роб Пайк • Кен Томпсон Основные мотивации • Безопасность • Масштабируемость • Время сборки Особенности #1 • • • • • Компилируется в машинный код Автоматическое управление памятью, сборщик мусора Строгая статическая типизация Конкурентное программирование Есть принципы ОО, но нет классов и наследования Синтаксис Особенности #2 • Нет исключений • Есть указатели, но нет арифметических операций Исключения Указатели Плюсы • • • • • • Лёгкость освоения Скорость Кроссплатформеность Параллелизм Opensource Обаятельный талисман Минусы • • • • РАЗМЕР файла Отсутствие generics и переопределения операторов Отсутствие GUI Это не С/C++ и многие ждут Rust Где используется • • • • • • Google Yandex Soundcloud Docker CoreOS Twitch Тёмная стороны силы Инструментарий • GDB (+ runtime-gdb.py) • IDA, radare2 Zygnatures. strip=false Zygnatures. strip=true Zygnatures Zygnatures Windows. Type Windows. Infostealer Windows. Infostealer Вызов DLL Вызов DLL Вызов DLL GoArm • strings | grep 'func(‘ • r2>izz~func GoArm Светлая стороны силы Инструментарий • IDE: Intelij IDEA + плагин, gosublime, LiteIDE, vimgo • Установщик (golang.org, репозиторий) • Настройка окружения (GOPATH, GOROOT) «Программы-шутки»? • godoor • Schoolware AV сканеры • asgard-cli • gonotifyav • ipinformer SkyNet GoDrone Bots GoBot Распределенные вычисления • btcd • mumax Стрессовое тестирование • Go-meter Массовое тестирование • Heartbleed • Shellshock • SSH/sitescanner/AuthenticationScanner/… Wopbot? Оптимизация Спасибо! zorsecurity.ru b.ryutin@zorsecurity.ru