Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
icpu
429 / 342 / 81
Регистрация: 10.03.2011
Сообщений: 1,464
Записей в блоге: 2
#1

Декомпиляция объектных файлов и жестокая реальность - C++

03.02.2016, 08:02. Просмотров 598. Ответов 10
Метки нет (Все метки)

Появилось страшно неприодолимое желание подумать над этой темой. Появилось не одно, а вместе с гибелью небольшой папки с небольшим текстом.

Есть папка с релизной сборкой, которая включает набор объектных файлов .obj и exe'шник. Есть точный список всех компиляторов, библиотек и наборов опций компилятора. И... всё.

Вопрос: Что, как и сколько я могу выжать из этих объектных файлов? Я не дурак, исходников не жду, но насколько финальный фарш будет напоминать изначальную хрюшку? И чем можно сий процесс произвести?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.02.2016, 08:02
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Декомпиляция объектных файлов и жестокая реальность (C++):

Литература о компиляции, линковке, что содержится в объектных файлах, стеке переменных? - C++
Здравствуйте. Подскажите, какую литературу почитать, чтобы более глубоко понимать сам процесс создания программ? Я имею в виду не...

Декомпиляция С++ - C++
Товарисчи с++ разработчики, тут возникла такая проблема, связанная с декомпиляцией с++ приложений. Увы, познания конкретно в этом языке у...

Декомпиляция dll - C++
Возможна ли декомпиляция dll'ки, защищенной Themida, если есть ThemidaSDK.h и Obfuscator.cpp, с помощью которых была скомпилирована эта dll...

декомпиляция exe - C++
вот погуглил немного... вижу, что декомпиляция относительно небольшой программы вполне возможна. Если в самой программе в переменных...

Декомпиляция из dll в C++ - C++
У меня есть библиотека dll, как её можно декомпилировать в C++? Точно знаю, что она написана на C++ Пытался декомпилировать вот тут...

Декомпиляция программы - C++
Как декомпилировать программу? И как узнать на каком языке она написана?

10
Ilot
Эксперт С++
1826 / 1184 / 232
Регистрация: 16.05.2013
Сообщений: 3,119
Записей в блоге: 5
Завершенные тесты: 1
03.02.2016, 10:38 #2
icpu, объектный файл это то же бинарный код, но без разрешения зависимостей. Т.е. выжать из него можно ровно столько сколько и из бинарника.
0
icpu
429 / 342 / 81
Регистрация: 10.03.2011
Сообщений: 1,464
Записей в блоге: 2
03.02.2016, 11:08  [ТС] #3
Так, да не так. Всё-таки для каждого файла объектник строится отдельный.

В любом случае, я правильно понимаю, что кроме IDA и Boomerang мне особо никто и не поможет?
0
Croessmah
Ушел
13783 / 8033 / 928
Регистрация: 27.09.2012
Сообщений: 19,803
Записей в блоге: 3
Завершенные тесты: 1
03.02.2016, 11:11 #4
Цитата Сообщение от icpu Посмотреть сообщение
насколько финальный фарш будет напоминать изначальную хрюшку?
Примерно как котлета напоминает хрюшку, т.е. - никак не будет напоминать.
Оно уже скомпилировано, оптимизировано и ждет своего часа.
Хотя может будет и понятнее,
чем готовый к запуску бинарник разбирать,
т.к. объектник еще через линкер не прошел.
Придется разбираться на асме.
0
Ilot
Эксперт С++
1826 / 1184 / 232
Регистрация: 16.05.2013
Сообщений: 3,119
Записей в блоге: 5
Завершенные тесты: 1
03.02.2016, 11:15 #5
Цитата Сообщение от icpu Посмотреть сообщение
Так, да не так. Всё-таки для каждого файла объектник строится отдельный.
Все правильно. Для каждого файла строиться бинарный код без разрешения зависимостей. Затем линковщик настраивает смещения и собирает все модули в один. Но тем не менее объектные файлы это уже скомпилированные в бинарный исходные коды.
0
gru74ik
Модератор
Эксперт CЭксперт С++
4364 / 1940 / 210
Регистрация: 20.02.2013
Сообщений: 5,145
Записей в блоге: 22
03.02.2016, 11:35 #6
Цитата Сообщение от icpu Посмотреть сообщение
Появилось не одно, а вместе с гибелью небольшой папки с небольшим текстом.
И тут я почему-то сразу подумал про Git...
0
icpu
429 / 342 / 81
Регистрация: 10.03.2011
Сообщений: 1,464
Записей в блоге: 2
03.02.2016, 12:00  [ТС] #7
Ясно. Ветчина. Иными словами, разбор obj файла - разбор dll, у которого просто больше вызовов между модулями.

Не по теме:

Цитата Сообщение от gru74ik Посмотреть сообщение
И тут я почему-то сразу подумал про Git...
Вы хоть про Mercurial думайте, хоть про SVN. "Мопед не мой, я просто разместил объяву."©



Добавлено через 3 минуты
Тогда, если подумать... Если линковать статически библиотеку под LGPL, можно просто отработать препроцессором, потом сбилдить один большой уродливый объектный файл из этого кадавра.i, а потом его раздавать по требованию. То же самое, что и с dll-ками раздавать.
0
castaway
Эксперт С++
4926 / 3033 / 372
Регистрация: 10.11.2010
Сообщений: 11,084
Записей в блоге: 10
Завершенные тесты: 1
03.02.2016, 12:05 #8
Цитата Сообщение от icpu Посмотреть сообщение
разбор obj файла - разбор dll
Не совсем. Например в объектном файле сохранены имена функций, в то время как в DLL/EXE их может уже и не быть.
0
icpu
429 / 342 / 81
Регистрация: 10.03.2011
Сообщений: 1,464
Записей в блоге: 2
03.02.2016, 12:25  [ТС] #9
Имена внешних функций? Если так, не особо страшно. Таблица экспорта/импорта и поиск по getProcAddress - это ж практически классика взлома PE-файлов.

Добавлено через 2 минуты
Да и обфускация внутри единого файла - дело не особо сложное.
0
castaway
Эксперт С++
4926 / 3033 / 372
Регистрация: 10.11.2010
Сообщений: 11,084
Записей в блоге: 10
Завершенные тесты: 1
03.02.2016, 12:29 #10
Цитата Сообщение от icpu Посмотреть сообщение
Имена внешних функций?
Внутренних. Откройте один объектный файл через IDA да посмотрите что там есть. В чём проблема то?
0
Kastaneda
Jesus loves me
Эксперт С++
4756 / 2960 / 243
Регистрация: 12.12.2009
Сообщений: 7,517
Записей в блоге: 2
Завершенные тесты: 1
03.02.2016, 12:43 #11
Есть инструменты, которые по ассемблерному коду генерят сишный. Понятно, что результат нужно будет еще долго допиливать руками, оно даже не всегда компилируется. Советую погуглить в эту сторону.
0
03.02.2016, 12:43
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.02.2016, 12:43
Привет! Вот еще темы с ответами:

Декомпиляция программы - C++
Люди, никто не знает можно ли декомпелировать программу написаную на языке Си в исходный код?

Возможна ли декомпиляция исходника? - C++
Возможно ли получить исходник программы на c++? Если да, то как от этого защититься?

Декомпиляция dll файла - C++
Читал, все говорят что можно, а чем не пишут. Сам файл размером 101 Кб. Написан он по любому на C и/или C++. Как его можно...

Кроссплатфомернная многопоточность, миф или реальность? - C++
Доброго всем времени суток. Вопрос заключается в том, является ли thread из C++ 11 кроссплатформенным??? Если нет, то как в таком...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru