LINUX.ORG.RU

Вытащить Ресурсы из бинарников


0

0

Здрасте. Допустим, есть бинарный файл одной пропиретарной программы. Внутри его разные ресурсы ака картинки, строки и т.д. Как их от туда извлечь? Резхакером делается это в винде. А в линуксе?

В линуховом бинарнике нет такого понятия как ресурс, навряд ли будет аналогичная универсальная утилита

mikki
()

man strings

anonymous
()

Ищи по бинарнику сигнатуры нужного формата файла.

anon_666
()
Ответ на: wine + reshacker? от anonymous

>wine + reshacker
reshacker не открывает ЕLF-файлы. Но они тоже состоят из секций, таких как .bss и другие. Как я понял, то и линукс, и виндовс используют один формат исполняемых файлов - COFF. Я ошибаюсь?
Objdump - это дизассемблер, однако мне нужно не это. Я хочу с бинарника вытащить картинку, обработать в гимпе и пхнуть обратно.

KERNEL_PANIC ★★★
() автор топика

1)найти сигнатуру, например, ПНГ (или чего там?)
2)вытащить
3)обработать в гимпе и сохранить с _РАВНЫМ_ или меньшим размером
4)по тому же смещению засунуть в бинарник, оставшееся место (если обработанный файл меньше исходного) забиваем нулями
5)??????
6)PROFIT!

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

Как я понял, то и линукс, и виндовс используют один формат исполняемых файлов - COFF. Я ошибаюсь?

Ошибаешься. ELF != PE. AFAIK, COFF — общий их предок.

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

Тогда как найти сигнатуру пнг-файла? Просто под дос есть такая программа scan.exe. Она ищет меджик-хедеры одних файлов в других и вытаскивает наружу. Под линукс такое не нашлось:(

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

Можно написать простенькую утилиту, которая будет скармливать последовательно поток байтов из бинарника функции png_sig_cmp() и в случае успеха писать файл на диск.

andreyu ★★★★★
()

Hex-редактор скорее всего будет самым оптимальным вариантом в этой ситуации. Хотя я не слишком разбираюсь в данном вопросе.

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

Допустим я вытащу картинку, изменю ее. Если результат по размеру будет меньше оригинала, по вставим ее обратно в файл с соблюдением адресов. Пустоту заполняем ноликами. А если выйдет наоборот, картинка станет БОЛЬШЕГО размера, что дальше? При вписывании ее обратно произойдет Нарушение адресации и запорится файл нахрен... И еще одно. Найти начало файла среди бинарных данных я смогу. Но как найти его конец?

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

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

KERNEL_PANIC ★★★
() автор топика

icoutils. Homepage: http://www.nongnu.org/icoutils/

В составе её есть утилитка wrestool которой можно извлекать любые ресурсы из виндовых программ, dll и т.п..

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

>картинка станет БОЛЬШЕГО размера, что дальше?

Исполняемый файл программы будет поврежден и программа не запустится.

Найти начало файла среди бинарных данных я смогу. Но как найти его конец?

Читать спецификации данного формата.

Я в данной теме (как я уже писал выше) не разбираюсь, и в случае отсутствия редакторов ресурсов для unix рекомендую поискать решения более низкого уровня. Скорее всего на opennet.ru или linuxforum.ru должны помочь. Хотя я не уверен.

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

больше никак нельзя. только меньше или равно.
пс. возьми любые два пнг-файла и посмотри, какие байты в начале и в конце совпадают - вот эти байты и ищи в бинаре.

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

Вывод: такой утилиты нет, значит ее нужно написать. Заодно улучшу свои познания в перл:). Может, ничего хорошего из этого не выйдет и я все заброшу, зато заставлю поработать мозг:) Хоть чучуть. Ну и перекочевать на форум для разработчиков, если что)))

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

Найти начало файла среди бинарных данных я смогу. Но как найти его конец?

Многие форматы пишут размер своих данных в файле. Найдёшь начало, сможешь прочитать заголовок и будет тебе конец. Другой вариант искать в бинарнике таблицу «упаковки» данных, там будут все данные касательно нужных ресурсов. Но последний вариант требует определённых навыков и везения.

Подскажите, плиз, как с помощью перла в бинарном файле найти определенные бинарные данные

лучше использовать си. перл и ко плохо подходят для данной задачи.

пс. возьми любые два пнг-файла и посмотри, какие байты в начале и в конце совпадают - вот эти байты и ищи в бинаре.

вечер айтишных юморин?

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

ну, я незнаю :D
когда -то давноо, когда все занимались переделыванием телефонных игр на телефоне, все так и извлекали ресурсы (%

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

> когда -то давноо, когда все занимались переделыванием телефонных игр на телефоне, все так и извлекали ресурсы

На телефоне как правило игры это zip архив с java классами и ресурсами, приложенными отдельными файлами. Тут проблема глобальнее.

kim-roader ★★
()
Ответ на: комментарий от mikki

Понимаю, что си и более подходит, и работать будет быстрее, но жаль, что кроме перл и баш ничем не владею :(. Есть ли какой то ман по файловым заголовкам? mаn file?

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

> Подскажите, плиз, как с помощью перла в бинарном файле найти определенные бинарные данные, а дальше как то сам додумаюсь:)

На перле не знаю как. На С написать не сложно.

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

Тривиальную информацию по заголовкам и magic словам легко можно найти в интернете. В исходниках file скорее всего будет неплохая подборка по мэджикам для различных форматов.

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

Да там огромнейшая подборка меджик чисел, очень большая, я аж прозрел, когда глянул:)

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