LINUX.ORG.RU

Нужен консольный (с stdin & stdout) дизассемблер.

 , ,


2

1

Сразу скажу, objdump не подходит. Задача такая. Есть сотня бинарников, которые нужно пропатчить одним и тем же способом. Конкретно - найти printf известной строки, лежащей в .rodata, подняться выше по коду, найти jnz и заменить на nop :).

Выяснилось, что objdump не умеет показывать строковые референсы, поэтому грепать дизассеммблированный код с наскоку не получается. Сейчас мне приходится делать следующие действия. С помощью 'strings -t x' я нахожу абсолютное смещение строки в файле. Далее, через objdump -H я нахожу адрес и смещение секции .rodata. Потом складываю одно с другим и нахожу адрес строки. Вот его уже можно грепать скриптом.

Есть ли способ сократить телодвижения? Ida Pro умеет показывать референсы, но умеет ли оно в потоковое дизассемблиование и последующий патчинг?

Спасибо


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

Что-то я в него потыкал палочкой, испугался и убежал. Видно мощу, но непонятно, как к ней подобраться. Если оно такой batch disassembling умеет, то буду читать подробнее про него.

Vshmuk
() автор топика
Ответ на: комментарий от mix_mix

Ну так я и пишу на баше, видишь :). В тырнете видел ещё реализации на перлах и прочем.

Просто вдруг велосипед.

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

Надо кастануть XVilka. Еще советую зайти в IRC канал radare и спросить там.

SZT ★★★★★
()

вырезаем чужие copyright и прочие упоминания авторства ? правильное дело - бабло вещь неделимая :-)

PS. не вижу иной причины лезть в «сотню бинарников» для подавления одного printf.

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

Может проверка лицензии лежит по известному смещению от копирайта :)

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

Эта прога проверяет, стоят ли права на неё «750», причём бинарей там несколько десятков, и каждый из них проверяет. Если я ставлю права «755», она ругается, что её все могут запускать, а не только члены группы. Программа научная, для математических расчётов. Какого хрена ей решать, кому её запускать, я не знаю.

PS. не вижу иной причины лезть в «сотню бинарников» для подавления одного printf.

А как узнать, тот ли printf подавляется? И exit(1) после него как убрать?

Vshmuk
() автор топика
Ответ на: комментарий от dimon555

Не просто можно, а я обязан это сделать! И это указано в документации к программе, «заведите группу и добавляйте в неё юзеров».

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

Не просто можно, а я обязан это сделать! И это указано в документации к программе, «заведите группу и добавляйте в неё юзеров».

И вместо того, чтобы сделать usermod ты решил патчить бинарники? А смысл?

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

Была идея. А только вдруг оно не там отвалится?

Смотря чем заменишь, очевидно.

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

Давай, братюнь, покажи ей кто здесь главный! Доминируй, властвуй, унижай

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

Большая часть научных прог с точки зрения программиста являются махровыми говнопрогами. Физики-математики плохо пишут программы.

Пока мы тут беседуем, я в итоге и скрипт, использующий objdump, написал :)

Vshmuk
() автор топика

В радаре это все в 2 действия можно сделать, причём массово по файлам пройтись можно с помощью r2pipe скрипта.

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

У нас сотня юзеров. Теперь ради говнопроги каждого в группу добавлять?

Не вижу проблемы, если честно.

DELIRIUM ☆☆☆☆☆
()
Ответ на: комментарий от Vshmuk

Теперь ради говнопроги каждого в группу добавлять?

Ты так говоришь, как будто тебе для этого каждый раз вручную надо править /etc/group.

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

Каждый раз надо добавлять юзера в группу при создании. Даже если делать это автоматически, получится, что каждый юзер, кто даже никогда не будет работать с прогой, будет болтаться в группе. Это маразм и увеличение энтропии.

А так - я поднабрался опыта и провёл время с интересом.

Vshmuk
() автор топика

Спасибо за тему — наглядный пример того, что бывает, когда программисты пытаются заниматься системным администрированием.

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