У меня есть местоположение/смещение определенной функции, присутствующей внутри исполняемого файла. Можно ли назвать такую функцию (хотя, с надеждой, подавляя выполнение CRT для точки входа исполняемого файла)?Вызов кода функции исполняемого файла
ответ
Фактически вы можете имитировать загрузчик Windows, если вы работаете под Windows, но основы должны быть одинаковыми на любой платформе. См. http://msdn.microsoft.com/en-us/magazine/cc301805.aspx.
- Загрузить файл в память,
- Заменить все относительные адреса функций, которые вызываются с помощью загруженного исполняемого файла с фактическими адресами функций.
- Измените страницу памяти на «исполняемый файл» (это сложная и зависящая от платформы часть)
- Инициализировать ЭЛТ, чтобы, например, инициализировать статические переменные.
- Звонок.
Однако, как отмечают комментаторы, это может быть практичным только как упражнение с использованием очень простых функций. Есть много, много вещей, которые могут пойти не так, если вам не удается эмулировать полный загрузчик ОС.
PS: Вы можете также попросить Google: http://www.cultdeadcow.com/tools/pewrap.html
PPS: Вы можете также найти полезные советы в «безопасности» сообщества: https://www.blackhat.com/presentations/bh-usa-07/Harbour/Whitepaper/bh-usa-07-harbour-WP.pdf
Да, вы можете назвать это, если вы будете инициализировать все глобальные переменные, используемые этой функцией. Вероятно, включая глобальные переменные CRT. Как альтернативный способ, вы можете подключать и заменять все функции CRT, которые используются пользователем. См. Разборку этой функции, чтобы получить правильное решение.
1) Взгляните на API LoadLibraryEx()
. В нем есть несколько флагов, которые могли бы выполнять всю грязную работу, описанную Себастьяном.
2) Отредактируйте исполняемый файл. Некоторые измененные байты будут выполнять эту работу. Вот некоторая документация по файловому формату: http://docsrv.sco.com:507/en/topics/COFF.html
- 1. Вызов исполняемого файла из java-кода
- 2. Вызов исполняемого файла с execlp()
- 3. Вызов исполняемого файла другим именем
- 4. вызов исполняемого файла из исполняемого файла jenkins добавляет дополнительные кавычки
- 5. Извлечение кода из исполняемого файла
- 6. Получить функции исполняемого файла Windows
- 7. вызов исполняемого файла с системной командой
- 8. Список параметров функции из исполняемого бинального кода
- 9. Запуск исполняемого файла из кода python
- 10. вызова функции из Linux исполняемого файла
- 11. системный вызов open() создание исполняемого файла
- 12. Python: Вызов исполняемого файла не удается
- 13. Вызов отдельного исполняемого файла на C++?
- 14. Создание исполняемого файла кода Python 3.3.2
- 15. Создание исполняемого файла из кода Cython
- 16. Поле имени исполняемого файла экспорта исполняемого файла
- 17. Выполнение функции из скомпилированного исполняемого файла
- 18. Функции вызова из исполняемого файла `coffee`
- 19. Перегруженные функции и размер исполняемого файла/библиотеки
- 20. Изменение содержимого ресурса исполняемого исполняемого файла
- 21. Вызов функции вне файла
- 22. Запуск исполняемого файла через PowerShell и его правильное возвращение кода ошибки исполняемого файла
- 23. Вызов функции из облачного кода
- 24. Процесс уменьшения размера исполняемого файла
- 25. Ошибка исполняемого файла файла Python
- 26. Создание JAR-файла из кода и вызов функции
- 27. Переменные внутри исполняемого кода исполнителя
- 28. Создание статического исполняемого файла?
- 29. Вызов исполняемого файла с помощью процесса сбоев с перерывами
- 30. Вызов исполняемого Java в Баше
Хорошее описание, единственная потенциальная проблема, которую я вижу, заключается в том, что если CRT не инициализируется, вызов может завершиться неудачно. –
@Abyx Я расширил свой ответ в этом отношении. – Sebastian