LINUX.ORG.RU

Как корректно вмешаться в работу исполняемого файла?


0

1

Исходников нет,но есть исполняемый бинарник. Если просматривать его по F3 в mc то видны названия функций.
Вопрос как продебажить (выполнить пошагово и понять что происходит) этот бинарник на предмет того что выполняет интересующая меня функция и как корректно внести изменения в бинарник, чтобы он потом смог запуститься.

Вкратце - как изменить логику работы исполняемого файла если нет исходников?

★★★★

Дизассемблер. Дальше гугл поможет.

Zhbert ★★★★★
()
Ответ на: комментарий от anonymous

Google Linux© Disassembler™ Google Linux© Debugger™

anonymous
()
Ответ на: комментарий от Vlad-76

Какая команда дизассемблирует?

objdump -d binary.file

Как запустить в отладчике?

gdb --args binary.file

Вкратце - как изменить логику работы исполняемого файла если нет исходников?

вкратце — никак. Это проблематично делать, даже когда у тебя есть исходники. А уж внесение изменений сложнее чем «удалить проверку на равенство двух строк» это высший пилотаж. Если ты задал такой вопрос, ты не осилишь. Без обид, просто констатация факта.

i-rinat ★★★★★
()
Последнее исправление: i-rinat (всего исправлений: 1)

Чует мое сердце, что проще с нуля самому написать что-то, нежели разобраться в дизассемблированном коде…

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от i-rinat

«вкратце — никак. Это проблематично делать, даже когда у тебя есть исходники. А уж внесение изменений сложнее чем „удалить проверку на равенство двух строк“ это высший пилотаж. Если ты задал такой вопрос, ты не осилишь. Без обид, просто констатация факта.»

Я правильно понимаю что из этого следует, что дизассемблеры и дебуггеры созданы скорее для тех кто пишет проги и отлаживает, а не тех кто хочет изменить код ?

А где поискать тех кто сможет осилить эту затею?

Vlad-76 ★★★★
() автор топика
Ответ на: комментарий от Vlad-76

А где поискать тех кто сможет осилить эту затею?

в разделе Job

ymn ★★★★★
()
Ответ на: комментарий от Vlad-76

Я правильно понимаю что из этого следует, что дизассемблеры и дебуггеры созданы скорее для тех кто пишет проги и отлаживает, а не тех кто хочет изменить код ?

Абсолютно верно. В том же gdb можно пытаться изучать ассемблерный код, но это жутко неудобно. С исходниками там гораздо легче и удобнее.

Чтобы изучать, лучше использовать IDA, но купить её проблематично, и, наверное, дорого.

А где поискать тех кто сможет осилить эту затею?

попробуй на wasm.ru

i-rinat ★★★★★
()
Ответ на: комментарий от i-rinat

Это для starter edition, named license цена.

anonymous
()
Ответ на: комментарий от anonymous

Не очень дорого - от $580 за лицензию. Всяко дешевле, чем нанимать готового спеца.

4.2. И всем советующим покупку IDA - советую прочитать вот этот пост: http://sporaw.livejournal.com/88098.html.
Дабы уважить Ъ, процитирую самое вкусное, а именно требования к покупке IDA:


Пример неадекватных требований

Частный пользователь не может приобрести Advanced (Расширенную) версию вообще. (т.е. частный пользователь не имеет возможности анализировать что-либо отличное от x86, никакие другие процессоры, в т.ч. x64)
[есть непроверенная информация, что приобрести Advanced частный пользователь сможет через 3-4 года владения версией Standard; возможно, все же потребуется дополнительно дактилоскопия и еще какие-нибудь анализы]

Российская компания должна приобрести продукт со сроком подписки минимум на 2.5 года (т.е. в 2.5 раза дороже, например, в случае, если поддержка продукта необходима всего лишь на один год или вообще не нужна),
цитата: «В России Hex-Rays могут приобрести организации и частные лица, с непрерывным сроком поддержки лицензии не менее 2,5 лет».
В числах это выглядит так: 33'019р + 69'559р (или 105'600р), * 2.5 = 256'445р (346'548р) vs 102'578р (138'619р). Но даже это неважно. Купить вы все равно, скорее всего, не сможете. Смотрим дальше.

Чужая цитата на английском языке. Ее краткое содержание: Advanced версии не продаются вообще никому, кроме: государственных организаций; коммерческих компаний, существующих на рынке длительное время, + зарекомендовавших себя в этой области; частных исследователей, имеющих весомое имя (и не противных лично Ильфаку — добавка от меня :)). В основном, продажи частным пользователям Advanced версии не осуществляются. Только по нереальному блату (как и говорилось выше), уже «доверенным» людям. По сути, очень похоже на торговлю наркотиками у знатного барыги (этот комментарий от меня).

Вот еще реальный пример (вообще, их масса): «Сам обломался с покупкой IDA+HR на контору (не профиль), хотя это основной инструмент в моей работе» © NaumLeNet.

А вот еще цитата из официального pdf для заказа (во втором то же): «Purchase orders are accepted from governmental organizations and well known businesses for multiple license orders».

Я не буду сейчас вдаваться в подробности реалий «поддержки» со стороны компании. Про это я, и еще ряд других пользователей, писали на официальном форуме (я, кстати, там забанен после поднятия соответствующих вопросов и тем). Те, кто хоть раз что-то писал той самой поддержке или пытался чего-то добиться - знают все сами, не нужно об этом рассказывать дополнительно.



Правда IDA Starter умеет не только x86, но и ARM, но общей сути это не меняет - человек, покупающий иду, и не зарабатывающий при этом реверсингом на жизнь, поступает как минимум глупо.
В общем, ТС, иди на exelab (бывший cracklab) и спрашивай там. Правда я не в курсе по нынешним расценкам, но уважаемые люди там обманывать не будут. Если яростно хочется попробовать что-то сделать самому - под линуксом есть более-менее вменяемый отладчик EDB, он хоть и не самый удобный, но при должном упорстве может сослужить добрую службу.
Ну или можешь маякнуть мне в жаббер ближе к вечеру - хоть я и не реверсер, но может чем и смогу помочь «из любви к искусству», если задача лёгенькая.

Reinar
()
Ответ на: комментарий от Reinar

Что ж они mips зажали в starter? Вроде распространённая платформа.

i-rinat ★★★★★
()

Вкратце - как изменить логику работы исполняемого файла если нет исходников?

Вкратце - это себя не окупит. Только если знания и навыки прокачать.

x_hash
()

Если просматривать его по F3 в mc то видны названия функций.

там видны импортируемые функции - то есть функции внешних динамических библиотек которые линкуются с программой. Библиотечный вызов можно подменить через LD_PRELOAD, только смысла в этом нет :)

что выполняет интересующая меня функция

man`ы помогают ну и гуголь опять-же :) функции внешние, а основные библиотеки в Linux неплохо документированы. Но про логику работы вашей программы они не скажут практически ничего.

Вопрос как продебажить (выполнить пошагово и понять что происходит) этот бинарник

strace в этом плане помогает значительно лучше gdb. По крайней мере видно зачем программа обращалась к системе и что получила.

MKuznetsov ★★★★★
()
Ответ на: комментарий от anonymous

Заграница(rutracker) нам поможет!

А вообще, из инструментов для отладки которые я видел, как-то конкурентов IDA для Linux я не назову. Если есть что-то близкое по функциональности - с удовольствием посмотрю.

Dark_SavanT ★★★★★
()
Ответ на: комментарий от KivApple

Ну так я IDA и не использую. два-три эпизодических раза расколупать китайский бинарник можно сказать не в счёт. Каждодневно мне она не требуется.

Dark_SavanT ★★★★★
()
Ответ на: комментарий от Reinar

под линуксом есть более-менее вменяемый отладчик EDB

Ни ARM, ни MIPS и вообще, подозреваю что оно прибито к x86.

Хотя как обычно, «пилите Шура, пилите»... хоть что-то.

Dark_SavanT ★★★★★
()
Ответ на: комментарий от Dark_SavanT

Найти не проблема. Уже советовали выше по треду.

anonymous
()
Ответ на: комментарий от Dark_SavanT

Прибито, прибито, только х32 и х64. Такой уж у него дизассемблерный движок.
Но это отладчик в первую очередь, так что для своих задач он вполне пригоден.

А с мультипроцессорными инструментами беда - только вот r2 (radare2) из толкового, а больше я ничего в общем-то и не видел. Но для ТС он будет зело хардкорный, а в иде с hex-rays (если не питать особого сочуствия к Ильфаку) разобрать бинарник сможет даже неспециалист.

Reinar
()
Ответ на: комментарий от Reinar

Хм. Спасибо за наводку, интересная штука. Но хардкор, это точно.

Dark_SavanT ★★★★★
()
Ответ на: комментарий от Vlad-76

А где поискать тех кто сможет осилить эту затею?

Напиши в job, напишем с нуля.

Я правильно понимаю что из этого следует, что дизассемблеры и дебуггеры созданы скорее для тех кто пишет проги и отлаживает, а не тех кто хочет изменить код ?

Вкратце да, но не потому что так специально было задумано, просто изменение без исходников невероятно сложная задача.

mopsene ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.