Go в продакшене вирмейкера

advertisement
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
Download