Мерль
[Из песочницы] Как реверсить Golang не в слепую или зачем вообще писать скрипты в IDA https://habrahabr.ru/post/325498/ Tags: Реверс-инжиниринг, Go, golang, реверс-инжиниринг, reverse engineering, go, ida pro Author mogaika on #habrahabr
Alexander
«Чаще всего, при релизе, из бинарника вырезают все лишнее.»
Alexander
это кто так делает? ембедщики?
Alexander
или продавцы шареваре?
Vladimir
это кто так делает? ембедщики?
Стандартно при сборке пакетов для Deb/rh
Alexander
я про Go
Vladimir
я про Go
Ну... Специально наверное никто.
ainu
я про Go
Ну debug информацию флагом вырезать перед релизом, чтобы бинарник меньше весил нормально
Oleg
кстати, подскажи флаг
ainu
Вот кстати почти в тему море инфы https://habrahabr.ru/company/badoo/blog/301990/
ainu
Ещё статья - человек размер бинаря уменьшает https://habrahabr.ru/company/badoo/blog/322880/
ainu
кстати, подскажи флаг
судя по статье, go build -ldflags "-w -s" https://golang.org/cmd/link/
ainu
-w Omit the DWARF symbol table.
Oleg
спасибо
Alexander
а у кого выигрышь?
Aleksandr
сжатый vs несжатый
Anonymous
Alexander
а зачем стрипать? чтобы потом кто-нибудь огрёб в проде то что в бинаре нет инфы для дебага в самый подходящий момент?
Anonymous
Именно
Anonymous
Но можно тестировать перед продом, говорят помогает
nvkv
Но можно тестировать перед продом, говорят помогает
глупости вы какие говорите, коллега
Anonymous
Сами пусть тестируют, согласен
Alexander
но речь не об этом
Alexander
а о том какой все ж таки не иллюзорный выигрышь от стрипанья и есть ли он
Anonymous
Усложнить немного реверс
Anonymous
Уменьшить размер
Alexander
ну для распространения – я согласен профит есть, даже траф можно поэкономить так
Alexander
если деплоить на своей инфраструктуре – то стрипать не нужно и даже вредно
Alexander
ну на мобиле может быть заметно, выше пишут про 70-75% – это чуть больше 3мб
Alexander
ну и почему бы не срезать, если это безопасно и
Alexander
даёт профит
Anonymous
Так можно и до динамической линковки дойти
Vadim
тогда это уже нельзя будет назвать "безопасно"
Anonymous
Почему?
Vadim
проблем типа таких станет в разы больше: - у нас ничего не работает - у меня работает
Alexander
да, подход "всё своё ношу с собой" не зря повился динамическая линковка существует из-за несовершенства мира как и императивное программированние
nvkv
nvkv
кто-нибудь правда так делает?
Anonymous
"Нет, сынок, это - фантастика".
Dmitriy / დიმიტრი
Холиварная тема, но почему нет? На Go например переписывать библиотеку OpenCV что ли? Проще биндинг сделать.
Dmitriy / დიმიტრი
Как в gogland настроить дебагер?
nvkv
типа написал ты свой чудесный код на го с GC
nvkv
и вызываешь его из си
nvkv
зачем-то
Dmitriy / დიმიტრი
Dmitriy / დიმიტრი
Как в gogland настроить дебагер?
Меня больше сейчас вот это волнует. Не могу жить без дебаггера, но из консоли в gdb работать тоже не хочется
Aleksandr
Как в gogland настроить дебагер?
э, а в чем трабла? вроде работает без настройки
Dmitriy / დიმიტრი
У меня чего-то нет
Gaiaz
Как в gogland настроить дебагер?
его уже зарелизили? О_о
Dmitriy / დიმიტრი
Но у меня вообще странно. Приходится указывать каждый раз goroot
Aleksandr
Но у меня вообще странно. Приходится указывать каждый раз goroot
ну указываешь в настройках проекта СДК и рут (module path по-моему)
Dmitriy / დიმიტრი
ну указываешь в настройках проекта СДК и рут (module path по-моему)
А можешь показать что у тебя прописано в debug конфигурации?
Dmitriy / დიმიტრი
Пишет во время дебага какую-то фигню "Cannot find runner for go run main.go"
Aleksandr
Пишет во время дебага какую-то фигню "Cannot find runner for go run main.go"
СДК не прописан наверное? до дома доберусь, скину
Dmitriy / დიმიტრი
СДК не прописан наверное? до дома доберусь, скину
Что за SDK и где его прописывать? Не в Go/Vendoring & Build tags?
Aleksandr
нет, на верхних страницах настроек. указать путь до сдк, скачанного с офсайта
Dmitriy / დიმიტრი
А. Ну goroot я указал если ты про него.
Aleksandr
А. Ну goroot я указал если ты про него.
да, две настройки - GOROOT и GOPATH - http://i.imgur.com/fAhw5G8.png
Aleksandr
по пути стандартная структура проекта с вложенной src
Aleksandr
настроено
хз тогда. у меня десяток проектов - везде дебаг работает без специальной настройки
Dmitriy / დიმიტრი
Ща с нуля проект создал с настройками из IDE внутри go/src - не работает. =_= Попробую привыкнуть к gdb короче
Aleksandr
не привязанной ни к чему
Dmitriy / დიმიტრი
что за go/src? создай в отдельной директории
gopath для проектов. я так понял у go все проекты должны быть внутри этой директории
Aleksandr
gopath для проектов. я так понял у go все проекты должны быть внутри этой директории
для гогланд это не нужно и видимо конфликтует. создай проект в отдельной дире и проставь те две настройки
Dmitriy / დიმიტრი
Так. Заработало. Оказалось что в gogland/bin у dlv не проставлены права на запуск
Aleksandr
👍🏻
Alexander
а помогите с телепатией пожалуйста
Alexander
дал человеку с линуксом исходники на Go, а у него такое вот imports runtime: C source files not allowed when not using cgo or SWIG: atomic_amd64x.c defs.c float.c heapdump.c
Alexander
похоже на то что у него рантайм перекомпиливается (зачем-то) и почему то жто не может сделать
ros
собрано без поддержки cgo
Alexander
что собрано?