Мерль
[Из песочницы] Как реверсить Golang не в слепую или зачем вообще писать скрипты в IDA
https://habrahabr.ru/post/325498/
Tags: Реверс-инжиниринг, Go, golang, реверс-инжиниринг, reverse engineering, go, ida pro
Author mogaika on #habrahabr
Alexander
«Чаще всего, при релизе, из бинарника вырезают все лишнее.»
Alexander
это кто так делает? ембедщики?
Alexander
или продавцы шареваре?
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
спасибо
Aleksandr
Alexander
а у кого выигрышь?
Aleksandr
сжатый vs несжатый
Anonymous
Alexander
а зачем стрипать? чтобы потом кто-нибудь огрёб в проде то что в бинаре нет инфы для дебага в самый подходящий момент?
Anonymous
Именно
Anonymous
Но можно тестировать перед продом, говорят помогает
nvkv
Anonymous
Сами пусть тестируют, согласен
Alexander
Alexander
но речь не об этом
Alexander
а о том какой все ж таки не иллюзорный выигрышь от стрипанья и есть ли он
Anonymous
Усложнить немного реверс
Anonymous
Уменьшить размер
Alexander
ну для распространения – я согласен профит есть, даже траф можно поэкономить так
Alexander
если деплоить на своей инфраструктуре – то стрипать не нужно и даже вредно
nvkv
Anonymous
Alexander
ну на мобиле может быть заметно, выше пишут про 70-75% – это чуть больше 3мб
Alexander
ну и почему бы не срезать, если это безопасно и
Alexander
даёт профит
Anonymous
Так можно и до динамической линковки дойти
Vadim
тогда это уже нельзя будет назвать "безопасно"
Anonymous
Почему?
Vadim
проблем типа таких станет в разы больше:
- у нас ничего не работает
- у меня работает
Alexander
да, подход "всё своё ношу с собой" не зря повился
динамическая линковка существует из-за несовершенства мира как и императивное программированние
nvkv
nvkv
кто-нибудь правда так делает?
Anonymous
"Нет, сынок, это - фантастика".
Dmitriy / დიმიტრი
Холиварная тема, но почему нет? На Go например переписывать библиотеку OpenCV что ли? Проще биндинг сделать.
Dmitriy / დიმიტრი
Как в gogland настроить дебагер?
Oleg
nvkv
nvkv
типа написал ты свой чудесный код на го с GC
nvkv
и вызываешь его из си
nvkv
зачем-то
Dmitriy / დიმიტრი
Dmitriy / დიმიტრი
У меня чего-то нет
Gaiaz
Dmitriy / დიმიტრი
Но у меня вообще странно. Приходится указывать каждый раз goroot
Dmitriy / დიმიტრი
Dmitriy / დიმიტრი
Пишет во время дебага какую-то фигню "Cannot find runner for go run main.go"
Aleksandr
Aleksandr
нет, на верхних страницах настроек. указать путь до сдк, скачанного с офсайта
Dmitriy / დიმიტრი
А. Ну goroot я указал если ты про него.
Aleksandr
по пути стандартная структура проекта с вложенной src
Dmitriy / დიმიტრი
Aleksandr
настроено
хз тогда. у меня десяток проектов - везде дебаг работает без специальной настройки
Dmitriy / დიმიტრი
Ща с нуля проект создал с настройками из IDE внутри go/src - не работает. =_= Попробую привыкнуть к gdb короче
Aleksandr
Aleksandr
не привязанной ни к чему
Dmitriy / დიმიტრი
Так. Заработало. Оказалось что в gogland/bin у dlv не проставлены права на запуск
Dmitriy / დიმიტრი
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
что собрано?