Pull to refresh

Comments 6

имена и параметры функций получили — а содержимое функции? Тоже так же легко достается или все же ларчик не так легко открывается? Ведь по-моему самое интересное ради чего затеяли реверсинг это изучить функцию, её алгоритм и что она вообще делает. Или нет?

Код легок для чтения, видимо из-за того что в go внедрили свой ассемблер, который должен работать на всех платформах, а оптимизировать его еще толком не успели.
Лекго отслеживать путешествие значений — аргументы, как на вход, так и на выход передаются через стек.
lea rdx, _type_p_png_decoder_71b020
mov [rsp], rdx ; передаем аргумент (push и pop не используются)
call runtime_newobject
mov rax, [rsp+8] ; получаем результат

Из минусов только разве что hex-ray декомпилятор не справляется. Неверно определяет передачу аргументов в функции и возвращаемые значения, а научить его мне не удалось.
Ну и строки хранятся без нуль терминатора, а размер этих строк передается только при вызове функций. Но и это дело можно распарсить для удобства.
Изучать алгоритм гораздо проще, если ты знаешь названия функций и типов :)
А не смотрели в сторону bokken+Radare2?
К своему сожалению постоянно откладываю на потом. Из-за того что последнее время работать с бинарями получается только во время ctf, то приходится использовать известный набор инструментов. К следующей статье обещаю разобраться с r2 :)
Bokken не рекомендуется к использованию. Проект забросили и подходит только для небольших бинарных файлов. Недавно вышла «альфа» dev-версия GUI на Qt для radare2 — iaito. Она более приятна и удобна в использовании, но лучше хотя бы с месяц подождать, пока исправят основные баги, или пока не появится инсталлятор.

В radare2 для анализа Go исполняемых файлов можно использовать Zignatures. Об этом есть отдельная статья в блоге radare2. И несколько презентаций с примерами использования: моя небольшая с основами с ZeroNights 2014, а другая — более подробная c R2con 2016 от Sergi Martinez.

В свою очередь для IDA есть несколько готовых и интересных решений. У Tim Strazzere — подобная статья и плагин. А Георгий Зайцев рассказывал об этом на ZeroNights 2016 и опубликовал плагины. mogaika вы их смотрели перед написанием своего?
bokken мертв уже давно. Сейчас там на шарпе пишут новый гуй, но это пока не точно.
Sign up to leave a comment.

Articles