IN LINUX: Не уверен, что это возможно. У меня есть 100 исходных файлов и 100 соответствующих исполняемых файлов. Теперь, учитывая исполняемый файл, можно определить соответствующий исходный файл.Как найти имя исходного файла из исполняемого файла?
ответ
Я думаю, вы можете попробовать.
readelf -s a.out | grep FILE
Я думаю, вы можете добавить grep
и sed
магии выше команды и получить имя исходного файла.
Это всего лишь эвристика, хотя (и «строки», как by @mouviciel, являются следующим лучшим после чтения); можно легко разбить или изменить исполняемый файл. –
Нет, поскольку ваше предположение о том, что один двоичный файл происходит только из одного исходного файла, является очень ложным.
Большинство реальных приложений состоят из сотен, если не тысяч, отдельных исходных файлов, которые все скомпилированы отдельно, с результатами, которые объединены вместе, чтобы сформировать двоичный файл.
Если у вас есть Непро- stripped двоичных файлов, или (еще лучше) двоичные файлы скомпилированы с debugging information настоящее, то может (или будет, в случае отладки информации) быть информация остается в файл, чтобы позволить вам выяснить имена исходных файлов, но в целом у вас не будет таких двоичных файлов, если вы сами их не создадите.
Ваш вопрос имеет смысл только в том случае, если мы предположим, что данный факт состоит в том, что каждый из этих 100 исполняемых файлов поступает из одного исходного файла и что у вас есть все эти исходные файлы и они способны их компилировать.
Что вы можете сделать, это объявить в каждом исходном файле строку, которая выглядит как "HERE!HERE!>>>" + __FILE__
, а затем написать служебную программу, которая ищет внутри «исполняемого файла» ЗДЕСЬ! ЗДЕСЬ! >>> »и анализирует строку, которая следует за ней. __FILE__
- это препроцессорная директива, которая расширяется до полного имени файла скомпилированного исходного файла.
Если он сам компилирует исполняемый файл, он может просто включить добавление небольшого количества отладочной информации, которая делает именно это. Вариант GCC -g1 – datenwolf
Если исходные имена файлов присутствуют в исполняемый файл, вы можете найти их с помощью:
strings executable | grep '\.c'
Но имена файлов могут или не могут присутствовать в исполняемом файле, и они могут или не могут представлять исходные имена файлов.
Изменение .c
к тому, что расширение, которое вы предполагается, что программа была написана в.
Такого рода помощь попадает в «закрыть дверь сарая после того, как лошадь убежала» рода вещи, но это могло бы помочь будущее плакаты.
Это старая проблема. UNIX и Linux поддерживают команду what
, которая была изобретена Марком Рочкиндом (если я правильно помню) для его версии SCCS. Обрабатывает именно этот тип проблемы. Он является только 100% надежным для одного исходного файла -> одного объекта exectuable (или объектного файла). Существуют и другие более важные виды использования.
char unique_id[] = "@(#)identification information";
@(#)
The называется «что строка» и не встречается в качестве побочного продукта компиляции исходного в исполняемый образ. Используйте what
из командной строки.Внутри использование кода может быть что-то вроде этого (предполагается, что вы получите только одно имя файла в качестве ответа, поэтому выбрать какие строки тщательно):
char *foo(char *whoami, size_t len_whoami)
{
char tmp[80]={0x0};
FILE *cmd;
sprintf(tmp, "/usr/bin/grep -F -l '%s' /path/to/*.c", unique_id);
cmd=popen(tmp, "r");
fgets(whoami, len_whoami, cmd);
pclose(cmd);
return whoami;
}
возвращает имя файла исходного кода с той же what
строкой, из которой исполняемых был построен. Другими словами, именно то, что вы просили, за исключением того, что я уверен, что вы никогда не слышали о строках what
, поэтому они не существуют в вашей текущей базе кода.
- 1. Создание исполняемого файла из исходного питона файла
- 2. найти rpm имя из исполняемого файла
- 3. Как найти имя исполняемого файла и тип
- 4. Как найти текущее имя исполняемого файла?
- 5. найти имя исполняемого файла с помощью программы
- 6. Как найти имя переменной/полей из исходного файла java?
- 7. Как вернуть имя файла объекта из исполняемого файла
- 8. Поле имени исполняемого файла экспорта исполняемого файла
- 9. Имя исполняемого файла приложения отличается от имени исполняемого файла vshost
- 10. Получить имя пакета из его исполняемого файла
- 11. Получить имя исполняемого командного файла
- 12. ошибка при выполнении исходного кода, извлеченного из исполняемого файла jar
- 13. Как восстановить исходный код из исполняемого файла?
- 14. Как получить имя исполняемого файла JavaScript?
- 15. Как найти имя файла и размер файла из файла fsimage?
- 16. Как узнать имя исполняемого файла, запускающее приложение?
- 17. NSIS - как получить имя исполняемого файла установщика?
- 18. имя исходного файла не работает
- 19. Как найти имя прилагаемого исходного файла в Scala 2.11
- 20. Укажите имя исполняемого файла для записи bootstrapper
- 21. Как найти все зависимости для исполняемого файла?
- 22. Как найти местоположение исполняемого файла в C?
- 23. Как можно найти версию исполняемого файла javadoc?
- 24. вызов исполняемого файла из исполняемого файла jenkins добавляет дополнительные кавычки
- 25. Компиляция исходного файла с использованием system(), 'основная ссылка из неявного ввода/запуска для основного исполняемого файла
- 26. найти имя исполняемого файла с управляемой библиотеки DLL, COM-видимый
- 27. Как найти каталог исполняемого файла с использованием командного файла
- 28. Как обновить имя исходного файла в Talend
- 29. windbg: как получить имя исходного файла символа?
- 30. Как получить основное имя исходного файла из объекта IOTAProject?
Является ли данный факт, что каждый из этих 100 исполняемых файлов исходит из одного файла исходного кода? –
Нет, все из 100 исходных файлов. – Whoami
Ну, тогда вам нужно переформулировать свой вопрос большое время. –